ITPub博客

首页 > 数据库 > NewSQL > MongoDB集群搭建(包括隐藏节点,仲裁节点)

MongoDB集群搭建(包括隐藏节点,仲裁节点)

原创 NewSQL 作者:水逸冰 时间:2021-04-13 17:17:09 1 删除 编辑

准备参数文件

dbpath = /u01/mongodb/db/27021/data

logpath = /u01/mongodb/db/27021/logs/mongodb.log

port = 27021

fork = true

bind_ip=0.0.0.0

#auth=true

replSet=firstset

#keyFile=/u01/mongodb/db/27021


拉起服务

mongod -f /u01/mongodb/db/27021/mongodb.conf 

mongod -f /u01/mongodb/db/27022/mongodb.conf

mongod -f /u01/mongodb/db/27023/mongodb.conf

about to fork child process, waiting until server is ready for connections.

forked process: 6267

child process started successfully, parent exiting

初始化

> rs.initiate()

{

        "info2" : "no configuration specified. Using a default configuration for the set",

        "me" : "mdb01:27021",

        "ok" : 1

}


添加节点

firstset:PRIMARY> rs.add("192.168.61.16:27022")

{

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1618297787, 1),

                "signature" : {

                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),

                        "keyId" : NumberLong(0)

                }

        },

        "operationTime" : Timestamp(1618297787, 1)

}

firstset:PRIMARY> rs.add("192.168.61.16:27023")

{

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1618297916, 1),

                "signature" : {

                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),

                        "keyId" : NumberLong(0)

                }

        },

        "operationTime" : Timestamp(1618297916, 1)

}

firstset:PRIMARY> rs.conf()

{

        "_id" : "firstset",

        "version" : 3,

        "term" : 1,

        "protocolVersion" : NumberLong(1),

        "writeConcernMajorityJournalDefault" : true,

        "members" : [

                {

                        "_id" : 0,

                        "host" : "mdb01:27021",

                        "arbiterOnly" : false,

                        "buildIndexes" : true,

                        "hidden" : false,

                        "priority" : 1,

                        "tags" : {


                        },

                        "slaveDelay" : NumberLong(0),

                        "votes" : 1

                },

                {

                        "_id" : 1,

                        "host" : "192.168.61.16:27022",

                        "arbiterOnly" : false,

                        "buildIndexes" : true,

                        "hidden" : false,

                        "priority" : 1,

                        "tags" : {


                        },

                        "slaveDelay" : NumberLong(0),

                        "votes" : 1

                },

                {

                        "_id" : 2,

                        "host" : "192.168.61.16:27023",

                        "arbiterOnly" : false,

                        "buildIndexes" : true,

                        "hidden" : false,

                        "priority" : 1,

                        "tags" : {


                        },

                        "slaveDelay" : NumberLong(0),

                        "votes" : 1

                }

        ],

        "settings" : {

                "chainingAllowed" : true,

                "heartbeatIntervalMillis" : 2000,

                "heartbeatTimeoutSecs" : 10,

                "electionTimeoutMillis" : 10000,

                "catchUpTimeoutMillis" : -1,

                "catchUpTakeoverDelayMillis" : 30000,

                "getLastErrorModes" : {


                },

                "getLastErrorDefaults" : {

                        "w" : 1,

                        "wtimeout" : 0

                },

                "replicaSetId" : ObjectId("607542f0619fcd69e2edeac0")

        }

}


将27023节点设置为隐蔽,并且优先级为0,那么该节点就不会被选举为主库

firstset:PRIMARY> conf.members[2]

{

        "_id" : 2,

        "host" : "192.168.61.16:27023",

        "arbiterOnly" : false,

        "buildIndexes" : true,

        "hidden" : false,

        "priority" : 1,

        "tags" : {


        },

        "slaveDelay" : NumberLong(0),

        "votes" : 1

}

firstset:PRIMARY> conf.members[2].hidden

false

firstset:PRIMARY> conf.members[2].hidden=true

true

firstset:PRIMARY> conf.members[2].priority

1

firstset:PRIMARY> conf.members[2].priority=0

0

查看修改后的结果

firstset:PRIMARY> conf.members[2]

{

        "_id" : 2,

        "host" : "192.168.61.16:27023",

        "arbiterOnly" : false,

        "buildIndexes" : true,

        "hidden" : true,

        "priority" : 0,

        "tags" : {


        },

        "slaveDelay" : NumberLong(0),

        "votes" : 1

}

更新复制集的参数

firstset:PRIMARY> rs.reconfig(conf)

{

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1618298298, 1),

                "signature" : {

                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),

                        "keyId" : NumberLong(0)

                }

        },

        "operationTime" : Timestamp(1618298298, 1)

}


添加仲裁服务器

mongod -f /u01/mongodb/db/27024/mongodb.conf

firstset:PRIMARY> rs.addArb("192.168.61.16:27024")

{

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1618299479, 1),

                "signature" : {

                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),

                        "keyId" : NumberLong(0)

                }

        },

        "operationTime" : Timestamp(1618299479, 1)

}

rs.conf()将会增加如下内容:arbiterOnly的value是true

firstset:PRIMARY> rs.conf().members[3]

{

        "_id" : 3,

        "host" : "192.168.61.16:27024",

        "arbiterOnly" : true,

        "buildIndexes" : true,

        "hidden" : false,

        "priority" : 0,

        "tags" : {


        },

        "slaveDelay" : NumberLong(0),

        "votes" : 1

}


现在复制集中有4个节点,偶数个节点是非常危险的事。所以将隐藏节点的投票权设置为0,

当然还可以再添加一个仲裁节点或投票节点。

conf=rs.conf()

firstset:PRIMARY> conf.members[2].votes=0

0

firstset:PRIMARY> rs.reconfig(conf)

{

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1618302254, 1),

                "signature" : {

                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),

                        "keyId" : NumberLong(0)

                }

        },

        "operationTime" : Timestamp(1618302254, 1)

}


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31480688/viewspace-2767847/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: tidb hints
请登录后发表评论 登录
全部评论
精通oracle,mysql和linux,热衷于研究数据库,擅长shell和Python自动化运维。VX:18302174682

注册时间:2017-08-05

  • 博文量
    117
  • 访问量
    188634