美文网首页我爱编程
mongodb集群Replica Set搭建

mongodb集群Replica Set搭建

作者: tenlee | 来源:发表于2018-06-27 12:58 被阅读103次

    MongoDB集群有三种搭建方案,分别为Replica Set / Sharding / Master-Slaver
    本文介绍简单的Replica Set模式。

    • 安装mongodb
      参考https://blog.csdn.net/zhiyual/article/details/79764165

    • 主节点
      Mongodb的Replica Set即副本集方式主要有两个目的,一个是数据冗余做故障恢复使用,当发生硬件故障或者其它原因造成的宕机时,可以使用副本进行恢复。另一个是做读写分离,读的请求分流到副本上,减轻主(Primary)的读压力。

    • 副本节点(Secondary)
      与主节点保持同样的数据集。当主节点挂掉的时候,参与选主。
      默认设置下,主节点提供所有增删查改服务,备用节点只提供查询服务,这样就可以减少主节点的压力,当客户端进行数据查询时,请求自动转到备节点上。

    • 仲裁者(Arbiter)
      不保有数据,不参与选主,只进行选主投票。使用Arbiter可以减轻数据存储的硬件需求,Arbiter跑起来几乎没什么大的硬件资源需求,但重要的一点是,在生产环境下它和其他数据节点不要部署在同一台机器上。
      注意,集群副本集数量建议是奇数可不设置仲裁者,如果是偶数,需要设置一个仲裁者。

    • 选主过程
      其中Secondary宕机,不受影响,若Primary宕机,会进行重新选主,选举过程参考https://blog.csdn.net/rudygao/article/details/49868437

    • 配置文件

    dbpath=/data/app/mongo/data
    logpath=/data/app/mongo/mongodb.log
    pidfilepath=/data/app/mongo/mongodb.pid
    #keyFile=/data/app/mongo/mongodb.key # 用户集群间的验证
    directoryperdb=true
    logappend=true
    replSet=testrs
    bind_ip=0.0.0.0
    port=27017
    oplogSize=1000
    fork=true
    #noprealloc=true
    #maxConns=4000
    
    • 创建集群
      不用仲裁者,启动三个mongodb服务,命令如下
    mongod -f config.conf
    

    连接任意节点并执行如下命令:

    cfg = {_id : "rs0",members : [ { _id:0, host:"127.0.0.1:27018", priority:2 },{ _id:1, host:"127.0.0.1:27019", priority:1 },{ _id:2, host:"127.0.0.1:27020", priority:1 } ]}
     rs.initiate(cfg)
    

    指定了127.0.0.1:27018为主节点,因为priority最大。

    • 节点增删
    rs.add({"host":"127.0.0.1:27018", "priority": 1});# 增加节点
    rs.remove("127.0.0.1:27018");  # 删除节点
    

    配置集群访问密码

    • 第一步
      创建用户
    use admin;
    db.createUser({user: "root",pwd: "123456",roles: ["root"]});
    
    • 第二步
      创建key文件
    openssl rand -base64 741 > mongodb.key
    chmod 600 mongodb.key
    

    并将mongodb.key复制到其他副本

    • 第三步
      先停到所有副本的服务,最后停掉主节点服务.
      在主节点以及副本节点的配置文件中添加如下,指定key file
    keyFile=/data/app/mongo/mongodb.key
    

    依次重启主节点和副本节点。

    遇到的问题

    • 当主节点和一个副本节点down之后,只剩一个副本节点会出现没有主节点的问题。
      这是因为mongodb选主的大多数原则决定的(即当前复制集中,存活节点的数量必须大于节点总数的1/2,这样才能触发选举,否则当从节点挂掉时主节点会降级为从节点;当主节点挂掉时从节点也不会升为主节点)

    参考文章
    https://www.zhihu.com/question/27648448
    MongoDB的选举过程
    http://www.ywnds.com/?p=3366

    相关文章

      网友评论

        本文标题:mongodb集群Replica Set搭建

        本文链接:https://www.haomeiwen.com/subject/ehlbyftx.html