...
Минимальный набор серверов для включения в кластер состоит из основного, резервного экземпляра сервиса, и арбитра. Арбитр не хранит данные, а является лишь посредником при проведении голосования по выбору мастера. Возможно запустить службу арбирта на одном из двух серверов с базами, на нестандартных портах. Допустим, мы хотим создать кластер из трёх серверов (виртуальных машин):
№ | Имя | Адрес | Роль | Приоритет |
---|---|---|---|---|
1 | wnam-srv1.domain.net | 1.2.3.89 | PRIMARY | 2 |
2 | wnam-srv2.domain.net | 1.2.3.90 | SECONDARY | 1 |
3 | wnam-arbiter.domain.net | 1.2.3.92 | ARBITER | 0 |
Вы должны на каждом из серверов в файлах /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
2 cfg.members[1].priority = 1 1
cfg.members[2].priority = 00
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/).