后台nosql数据库mongodb高可用

副本集架构(Replica Set)

  为了防止单点故障就需要引副本(replication),当发生硬件故障或者其他原因造成的宕机时,可以使用副本进行恢复,最好能够自动的故障转移(failover),有时引入副本是为了读写分离,将读请求分流到副本上,减轻主(primary)的读压力。mongodb的Replica Set能满足这些需求。

  Replicat set的一堆mongodb的实例集合,他们有着同样的数据内容,包含三类角色

  主节点(Primary):

  接受所有的写请求,然后把修改同步到所有Secondary。一个Replica Set 只能有一个Primary节点,当Primar挂掉后,其他Secondary或者Arbiter节点会重新选举出来一个主节点。默认读请求也是发送到Primary节点处理的,需要转发到Secondary需要客户端修改一下连接配置。

  副本节点(Secondary):

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

  仲裁者

  不保有数据,不参与选主,只进行选主投票,使用Arbiter可以减轻数据存储的硬件需求,Arbiter跑起来几乎没有么硬件资源需求,生产上不能跟主节点部署在同一台机器上。

  
  一个自动的故障转移的副本及架构的节点数必须为奇数,目的是选主投票要有一个大多数才能进行选主决策。

 

  客户端连接到整个副本集,不关心具体哪一台机器是否挂掉,主服务器负责整个副本集的读写,副本集定期同步数据备份,一旦主节点挂掉,副本节点就会选举一个新的主服务器,这一切对于应用服务器不需要关心。副本集中的副节点在主节点挂掉后,通过心跳检测,就会在集群中发起选主节点的选举机制,自动选取一个新的主服务器。

 

posted @ 2019-06-30 12:30  稳不住  阅读(206)  评论(0)    收藏  举报