三节点副本集

时间:2016-11-18 12:28:47

标签: mongodb replication mongodb-replica-set

我有两台IP地址为10.1.1.52和10.1.1.11的PC。我想配置mongo复制(没有分片),其中一个主节点和一个辅助节点在10.1.1.52上运行,一个辅助节点在10.1.1.11上运行。

我已按照以下步骤操作:

使用以下命令::

在10.1.1.11 PC上运行三个配置服务器
mongod --configsvr --port 26050 --logpath /data/db/log.cfg0 --logappend --dbpath /data/db/cfg0 –fork
mongod --configsvr --port 26051 --logpath /data/db/log.cfg1 --logappend --dbpath /data/db/cfg1 –fork
mongod --configsvr --port 26052 --logpath /data/db/log.cfg2 --logappend --dbpath /data/db/cfg2 –fork

之后我创建了一个副本集('a'),并使用以下命令添加了三个节点(第一个在10.1.1.11&另外两个在10.1.1.52上):

mongod  --replSet a --dbpath /data/a/a0 --logpath /data/a/log.a0 --port 27000 --fork --logappend --smallfiles --oplogSize 50
mongod  --replSet a --dbpath /data/a/a1 --logpath /data/a/log.a1 --port 27001 --fork --logappend --smallfiles --oplogSize 50
mongod  --replSet a --dbpath /data/a/a2 --logpath /data/a/log.a2 --port 27002 --fork --logappend --smallfiles --oplogSize 50

我使用以下命令在10.1.1.11上设置查询路由器:

mongos --configdb gaugedata-elastic:26050,gaugedata-elastic:26051,gaugedata-elastic:26052 --fork --logappend --logpath /data/db/log.mongos --port 26060

之后我输入以下命令从mongos连接并启动副本集:

mongo --port 27000
rs.initiate()

正在面临的问题是在添加节点之后:

rs.add("10.1.1.52:27001")
rs.add("10.1.1.52:27002")

远程PC上运行的节点即10.1.1.52无法访问且不健康。但是,我的PC上运行的节点即10.1.1.11会自动声明为SECONDARY。

2 个答案:

答案 0 :(得分:1)

需要检查规则接受端口是否已激活。否则,请在 ubuntu OS 上使用命令 sudo ufw allow <start port number>:<end port number>,以启用起始端口号结束端口号之间的所有端口。

答案 1 :(得分:0)

好的..这里几乎没有错误。如果您不需要分片,则不需要mongoS或配置服务器...... 纯副本集(在这种情况下)只是那两台机器,都只运行mongod进程...

所以,启动mongod进程(在两台不同的机器上)

mongod --replSet = a --dbpath = / data / --logpath = / data / mongod.log --port = 27017 --fork --logappend --smallfiles --oplogSize = 50

然后使用mongo连接到其中一个节点:

mongo 10.1.1.11

然后使用一个命令创建副本集初始值:

rs.initiate(    {       _id:&#34; a&#34;,       版本:1,       成员:[          {_id:0,主持人:&#34; 10.1.1.11:27017&#34;,优先级:2},          {_id:1,主持人:&#34; 10.1.1.52:27017&#34;,优先级:1}       ]    } )

如果你真的想在一台物理机器上有两个不同的RS节点,你当然可以用不同的端口添加一个...

这是一台机器的工作示例:

#> mkdir /data 
#> mkdir /data2

#> mongod --replSet=a --dbpath=/data --logpath=/data/mongod.log --port=27001 --fork --logappend --smallfiles --oplogSize=50

#> mongod --replSet=a --dbpath=/data2 --logpath=/data2/mongod.log --port=27001 --fork --logappend --smallfiles --oplogSize=50

#> mongo --port=27000

MongoDB Enterprise > rs.initiate({_id:"a", version:1, members:[{_id:0,host:"127.0.0.1:27000",priority:2},{_id:1,host:"127.0.0.1:27001",priority:1}]})
{ "ok" : 1 }
MongoDB Enterprise a:OTHER>
MongoDB Enterprise a:PRIMARY> rs.status()
{
        "set" : "a",
        "date" : ISODate("2016-12-04T08:47:33.254Z"),
        "myState" : 1,
        "term" : NumberLong(1),
        "heartbeatIntervalMillis" : NumberLong(2000),
        "members" : [
                {
                        "_id" : 0,
                        "name" : "127.0.0.1:27000",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 451,
                        "optime" : {
                                "ts" : Timestamp(1480841055, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2016-12-04T08:44:15Z"),
                        "electionTime" : Timestamp(1480841054, 1),
                        "electionDate" : ISODate("2016-12-04T08:44:14Z"),
                        "configVersion" : 1,
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "127.0.0.1:27001",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 209,
                        "optime" : {
                                "ts" : Timestamp(1480841055, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2016-12-04T08:44:15Z"),
                        "lastHeartbeat" : ISODate("2016-12-04T08:47:32.831Z"),
                        "lastHeartbeatRecv" : ISODate("2016-12-04T08:47:33.128Z"),
                        "pingMs" : NumberLong(0),
                        "syncingTo" : "127.0.0.1:27000",
                        "configVersion" : 1
                }
        ],
        "ok" : 1
}