美文网首页
mongoDB 带有keyfile 认证的复制集添加仲裁

mongoDB 带有keyfile 认证的复制集添加仲裁

作者: tglmm | 来源:发表于2019-09-27 17:33 被阅读0次

    环境:

    server port role
    10.0.3.107 27017 m0 (PRIMARY)
    10.0.3.107 28017 ma (SECONDARY)
    10.0.3.109 27017 m1 (ARBITER)

    已经配置的主从关系m0,m1并且带有密钥认证需要添加一个仲裁器,问题在于新建的仲裁器不会同步主节点数据,也就是不会同步已经创建的数据库认证信息
    实现高可用性,如果条件允许,最好的方案是将仲裁器放到另外的网络环境,或者服务器中

    docker run -d --restart=always -p 28017:27017 \
    -v /home/tglmm/mongo-key-file:/mongo-key-file \
    -v /data/db/ma:/data/db \
     --name ma  mongo:4.1.4 \
    /bin/bash -c 'mongod --port 27017 --keyFile /mongo-key-file/keyfile --replSet rs0 --bind_ip 0.0.0.0'
    
    进入当前主节点所在的mongo shell
    docker exec -i 640ed49c16cd mongo \
    --host 10.0.3.107 \
    --username xxx --password 'xxx' \
    --authenticationDatabase 'xxx' \
    --port 27017
    rs.add('10.0.3.107:28017')    //先将其添加为一个辅助节点,等待一段时间会进行数据的全量复制
    rs.status()
        "members" : [
            {
                "_id" : 0,
                "name" : "10.0.3.107:28017",
                "health" : 1,
                "state" : 2,
                "stateStr" : "SECONDARY",
                "uptime" : 4988,
                "optime" : {
                    "ts" : Timestamp(1569575425, 1),
                    "t" : NumberLong(2)
                },
                "optimeDurable" : {
                    "ts" : Timestamp(1569575425, 1),
                    "t" : NumberLong(2)
                },
                "optimeDate" : ISODate("2019-09-27T09:10:25Z"),
                "optimeDurableDate" : ISODate("2019-09-27T09:10:25Z"),
                "lastHeartbeat" : ISODate("2019-09-27T09:10:30.930Z"),
                "lastHeartbeatRecv" : ISODate("2019-09-27T09:10:31.248Z"),
                "pingMs" : NumberLong(0),
                "lastHeartbeatMessage" : "",
                "syncingTo" : "10.0.3.107:27017",
                "syncSourceHost" : "10.0.3.107:27017",
                "syncSourceId" : 1,
                "infoMessage" : "",
                "configVersion" : 2
    查看到起状态为 :SECONDARY,并从主节点同步数据库
    等待一段时间基本同步完成
    rs.remove('10.0.3.107:28017')
    rs.status()   10.0.3.107:28017//查看已经被踢出
    rs.addArb('10.0.3.107:28017')   //将其添加为复制集的仲裁节点
    rs.conf()  //查看状态
    

    待上面操作结束模拟主节点故障,查看辅助节点stateStr值

    相关文章

      网友评论

          本文标题:mongoDB 带有keyfile 认证的复制集添加仲裁

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