2015-02-12 8 views
0

Не могли бы вы рассказать мне, вызвали ли это какие-либо проблемы при отказе? Например, что произойдет, если хост mongo2.local не работает? (при условии, что исходный хост и арбитр опустились, и осталось только 2 члена). Остальные члены смогут выбрать новый основной?Конфигурация MongoDB replicaset

Я знаю, что здесь не должно быть арбитров, так как это ухудшает ситуацию, но я хотел знать, произойдет ли переход на другой ресурс в случае этой установки, а mongo2.local - вниз.

mongo:ARBITER> rs.status() 
{ 
     "set" : "mongo", 
     "date" : ISODate("2015-02-12T09:00:08Z"), 
     "myState" : 7, 
     "members" : [ 
       { 
         "_id" : 0, 
         "name" : "mongo1.local:27017", 
         "health" : 1, 
         "state" : 2, 
         "stateStr" : "SECONDARY", 
         "uptime" : 2572473, 
         "optime" : Timestamp(1423731603, 4), 
         "optimeDate" : ISODate("2015-02-12T09:00:03Z"), 
         "lastHeartbeat" : ISODate("2015-02-12T09:00:07Z"), 
         "lastHeartbeatRecv" : ISODate("2015-02-12T09:00:07Z"), 
         "pingMs" : 0, 
         "syncingTo" : "mongo2.local:27017" 
       }, 
       { 
         "_id" : 1, 
         "name" : "mongo2.local:27017", 
         "health" : 1, 
         "state" : 1, 
         "stateStr" : "PRIMARY", 
         "uptime" : 12148099, 
         "optime" : Timestamp(1423731603, 4), 
         "optimeDate" : ISODate("2015-02-12T09:00:03Z"), 
         "lastHeartbeat" : ISODate("2015-02-12T09:00:08Z"), 
         "lastHeartbeatRecv" : ISODate("2015-02-12T09:00:08Z"), 
         "pingMs" : 0, 
         "electionTime" : Timestamp(1423711411, 1), 
         "electionDate" : ISODate("2015-02-12T03:23:31Z") 
       }, 
       { 
         "_id" : 2, 
         "name" : "mongo3.local:27017", 
         "health" : 1, 
         "state" : 2, 
         "stateStr" : "SECONDARY", 
         "uptime" : 5474488, 
         "optime" : Timestamp(1423731603, 4), 
         "optimeDate" : ISODate("2015-02-12T09:00:03Z"), 
         "lastHeartbeat" : ISODate("2015-02-12T09:00:07Z"), 
         "lastHeartbeatRecv" : ISODate("2015-02-12T09:00:08Z"), 
         "pingMs" : 139, 
         "syncingTo" : "mongo2.local:27017" 
       }, 
       { 
         "_id" : 3, 
         "name" : "mongo2.local:27020", 
         "health" : 1, 
         "state" : 7, 
         "stateStr" : "ARBITER", 
         "uptime" : 12148101, 
         "self" : true 
       } 
     ], 
     "ok" : 1 
} 

и:

mongo:ARBITER> rs.config() 
{ 
     "_id" : "mongo", 
     "version" : 5, 
     "members" : [ 
       { 
         "_id" : 0, 
         "host" : "mongo1.local:27017", 
         "priority" : 0.5 
       }, 
       { 
         "_id" : 1, 
         "host" : "mongo2.local:27017" 
       }, 
       { 
         "_id" : 2, 
         "host" : "mongo3.local:27017", 
         "priority" : 0.5 
       }, 
       { 
         "_id" : 3, 
         "host" : "mongo2.local:27020", 
         "arbiterOnly" : true 
       } 
     ] 
} 

ответ

0

Если у вас меньше, чем большинство голосов в набор репликации доступны множество реплик не будет иметь возможность выбирать или поддерживать первичный и множество реплик воли быть нездоровым и будет доступен только для чтения. Эрго, если у вас будет только 2 из ваших 4 жаров, у вас не будет первичного. Автоматический переход на другой ресурс не будет происходить, поскольку на выборах не хватает голосов.

У вас нет четного количества узлов в наборе реплик. Это увеличивает вероятность того, что будут проблемы, просто потому, что есть больше серверов, не увеличивая допустимость отказа набора. С 3 или 4 членами набора реплик, 2 down-сервера сделают набор нездоровым.

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