MongoDB叢集搭建(包括隱藏節點,仲裁節點)

水逸冰發表於2021-04-13

準備引數檔案

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部落格 ” ,連結:http://blog.itpub.net/31480688/viewspace-2767847/,如需轉載,請註明出處,否則將追究法律責任。

相關文章