MongoDB高可用集群配置

  (2)副本节点(Secondary)

  与主节点保持同样的数据集。当主节点挂掉的时候,参与选主。

  (3)仲裁者(Arbiter)

  不保有数据,不参与选主,只进行选主投票。使用Arbiter可以减轻数据存储的硬件需求,Arbiter跑起来几乎没什么大的硬件资源需求,但重要的一点是,在生产环境下它和其他数据节点不要部署在同一台机器上。

  注意,一个自动failover的Replica Set节点数必须为奇数,目的是选主投票的时候要有一个大多数才能进行选主决策。

  (4)选主过程

  其中Secondary宕机,不受影响,若Primary宕机,会进行重新选主:

物联网

  2.使用Arbiter搭建Replica Set

  偶数个数据节点,加一个Arbiter构成的Replica Set方式:

物联网

  >>Sharding分片技术

  当数据量比较大的时候,我们需要把数据分片运行在不同的机器中,以降低CPU、内存和IO的压力,Sharding就是数据库分片技术。

  MongoDB分片技术类似MySQL的水平切分和垂直切分,数据库主要由两种方式做Sharding:垂直扩展和横向切分。

  垂直扩展的方式就是进行集群扩展,添加更多的CPU,内存,磁盘空间等。

  横向切分则是通过数据分片的方式,通过集群统一提供服务:

物联网

  (1)MongoDB的Sharding架构

物联网

  (2)MongoDB分片架构中的角色

  A.数据分片(Shards)

  用来保存数据,保证数据的高可用性和一致性。可以是一个单独的mongod实例,也可以是一个副本集。

  在生产环境下Shard一般是一个Replica Set,以防止该数据片的单点故障。所有Shard中有一个PrimaryShard,里面包含未进行划分的数据集合:

物联网

  B.查询路由(Query Routers)

  路由就是mongos的实例,客户端直接连接mongos,由mongos把读写请求路由到指定的Shard上去。

  一个Sharding集群,可以有一个mongos,也可以有多mongos以减轻客户端请求的压力。

  C.配置服务器(Config servers)

 

  保存集群的元数据(metadata),包含各个Shard的路由规则。