我有两台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。
答案 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
}