Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Минимальный набор серверов для включения в кластер состоит из основного, резервного экземпляра сервиса, и арбитра. Арбитр не хранит данные, а является лишь посредником при проведении голосования по выбору мастера. Возможно запустить службу арбирта на одном из двух серверов с базами, на нестандартных портах. Допустим, мы хотим создать кластер из трёх серверов (виртуальных машин):

ИмяАдресРольПриоритет
1wnam-srv1.domain.net1.2.3.89PRIMARY2
2wnam-srv2.domain.net1.2.3.90SECONDARY1
3wnam-arbiter.domain.net1.2.3.92ARBITER0

Вы должны на каждом из серверов в файлах /etc/hostshosts сделать записи вида "127.0.0.1 localhost wnam-srv1.domain.net", иначе кластер не соберется. В конфигурационных файлах /etc/mongod.conf на каждом из серверов добавьте:

replication:
  replSetName: rs0

Перезапустите сервис mongodb, и на сервере, который вы предполагаете сделать основным, выполните:

  mongo
  rs.initiate()
  rs.add("wnam-srv2.domain.net")
  rs.addArb("wnam-arbiter.domain.net")

настройте приоритеты:

  cfg = rs.conf()
  cfg.members[0].priority = 
  2
cfg.members[1].priority = 1
  cfg.members[2].priority = 0
 
  rs.reconfig(cfg) 
проверьте конфигурацию:
 rs.conf()
проверьте статус репликации:
 rs.status()

У

...

вас

...

должно

...

получиться

...

что-то

...

похожее

...

на

...

это:

rs0:PRIMARY> rs.status();
{
"set" : "rs0",
"date" : ISODate("2015-12-13T15:56:18.191Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "wnam-srv1.domain.net:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 16387,
"optime" : Timestamp(1450020906, 3),
"optimeDate" : ISODate("2015-12-13T15:35:06Z"),
"electionTime" : Timestamp(1450020295, 1),
"electionDate" : ISODate("2015-12-13T15:24:55Z"),
"configVersion" : 6,
"self" : true
},
{
"_id" : 1,
"name" : "wnam-srv2.domain.net:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 1886,
"optime" : Timestamp(1450020906, 3),
"optimeDate" : ISODate("2015-12-13T15:35:06Z"),
"lastHeartbeat" : ISODate("2015-12-13T15:56:16.803Z"),
"lastHeartbeatRecv" : ISODate("2015-12-13T15:56:17.362Z"),
"pingMs" : 0,
"syncingTo" : "wnam-srv1.domain.net:27017",
"configVersion" : 6
},
{
"_id" : 2,
"name" : "wnam-arbiter.domain.net:27017",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 1886,
"lastHeartbeat" : ISODate("2015-12-13T15:56:17.004Z"),
"lastHeartbeatRecv" : ISODate("2015-12-13T15:56:17.361Z"),
"pingMs" : 0,
"configVersion" : 6
}
],
"ok" : 1
}

 На этом настройка mongodb завершена. Если вы переводите в реплицированный режим имеющуюся базу, вы должны увидеть появления соответствующих файлов с базой на втором (secondary) сервере (/var/lib/mongodb/).