2016-11-18 2 views
0

У меня есть два компьютера с IP-адресами 10.1.1.52 и 10.1.1.11. Я хочу настроить репликацию mongo (без осколков) одним основным и одним вторичным узлом, запущенным на 10.1.1.52, и одним вторичным узлом, запущенным на 10.1.1.11.Удаленные узлы, недоступные в наборе с тремя узлами

Я следовал следующим действиям:

Ran три конфигурации серверов на 10.1.1.11 ПК с помощью следующих команд ::

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 

после чего я создал набор реплик («а») и добавлял три узла к нему с помощью следующих команд (первой на 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") 

Узлы, работающие на удаленном ПК, т.е. 10.1.1.52, недоступны и нездоровы. Однако узел, запущенный на моем ПК, то есть 10.1.1.11, автоматически объявляется SECONDARY.

+0

Возможно ли, что правило брандмауэра блокирует обмен данными по портам 27001 и 27002? –

ответ

0

OK .. Здесь несколько ошибок. ЕСЛИ вам не нужны осколки, вам не нужны серверы mongoS или config ... Чистый набор реплик (в данном случае) - это только эти две машины, работающие только с одним процессом mongod ...

Итак, начните (в двух разных машинах)

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

Затем подключить к одному из узлов с Монго:

MONGO 10.1.1.11

Затем вы делаете реплики установить первоначальные, с помощью одной команды:

rs.initiate ( { _id: "а", версии: 1, членов: [ {_id: 0, хозяин: «10.1. 1,11: 27017" , приоритет: 2}, { _id: 1, хозяин: "10.1.1.52:27017", приоритет: 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 
} 
+0

Я сделал то, что вы сказали. Когда я подключаюсь к одному из узлов, используя * mongo 10.1.1.11 *, он говорит ** Этот узел не был запущен с опцией replSet ** Пожалуйста, дайте мне знать, что мне делать дальше. – Sidd

+0

ОК. Я сделал ** mongo --port 27000 **, а затем использовал ** rs.initiate ({_id: "a", version: 1, members: [{id: 0, host: "10.1.1.11:27000", priority: 2}, {_id: 1, host: "10.1.1.52:27001", priority: 1}, {_id: 2, host: "10.1.1.52:27002", priority: 2}]}) ** Выход был после того, как rs.status() показал, что id: 1 и id: 2 все еще недоступны. Любая идея? – Sidd

Смежные вопросы