首页 > 数据库 > NewSQL > MongoDB集群搭建(包括隐藏节点,仲裁节点)
准备参数文件
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/ ,如需转载,请注明出处,否则将追究法律责任。