`

mongodb 集群搭建

 
阅读更多

数据库集群应该能算的上是数据库服务器的终极解决方案,在降低一定的读取效率的同时,满足了负载和冗余和扩展等多方面的需求,也是当今服务器端的必修课。mongodb在这方面提供了很好的解决方案,简化了使用者的工作量。

 

首先确定各个组件的数量,mongos 3个, config server 3个,数据分3片 shard server 3个,每个shard 有一个副本一个仲裁也就是 3 * 2 = 6 个,总共需要部署15个实例。这些实例可以部署在独立机器也可以部署在一台机器,我们这里测试资源有限,只准备了 3台机器,在同一台机器只要端口不同就可以,看一下物理部署图:

mongos:数据库集群请求的入口,暴露给用户的接口,它负责把对应的数据请求请求转发到对应的shard服务器上。首先它具备的功能是路由,对用户请求的路由,它自己不存储shard的分布信息,它只是从第三方获取这些信息然后通过这些信息制定路由规则。它的数量由用户请求的压力决定,但是至少要运行两个实例,防止一个挂了全部挂了。不过它的宕机只是影响访问,数据库的数据不会有丢失。

config server:这个服务器记录了所有的shard的分布信息,这些信息可不仅仅是在内存中,还存储在硬盘上。它只负责记录信息,而不负责处理信息。这个服务器很重要,如果宕机了所有的shard就找不到了,也就相当于所有的数据丢失了。一般会配置3台左右来保障服务器的安全,这3台服务器都记录了shard的全部分布信息,相当于彼此的备份。

shard server:所谓的分片,一组shard由一个主一个副本一个仲裁组成,主和副本的数据是完全相同的,仲裁没有数据。对于整个数据库服务来说,可能会有很多组shard服务器来存储数据。主和副本和仲裁应该在物理上隔离,不然起不到备份的效果。其实就是shard服务器要根据生产情况对CPU,内存,带宽,硬盘进行合理配置达到性能最佳。shard宕机副本会顶替,如果整组都宕机有肯能导致这组服务器的数据丢失。

 

 http://www.lanceyan.com/tech/arch/mongodb_shard1.html

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics