Узел Redis не перейдет в режим MASTER - PullRequest
0 голосов
/ 31 октября 2019

У меня есть простое развертывание Redis MASTER, SLAVE и 2 SENTINEL, работающие на Docker Swarm. Я запускаю стек, и все службы подходят. redis-master начинается с MASTER, и я убиваю его, чтобы проверить восстановление SENTINEL и SLAVE. Redis-мастер затем восстанавливается и становится новым рабом. Если я захожу в него и запускаю SLAVEOF NO ONE, происходит следующее:

1:M 31 Oct 2019 06:28:32.741 * MASTER MODE enabled (user request from 'id=3907 addr=127.0.0.1:39302 fd=36 name= age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=34 qbuf-free=32734 obl=0 oll=0 omem=0 events=r cmd=slaveof')
1:S 31 Oct 2019 06:28:43.060 * Before turning into a replica, using my master parameters to synthesize a cached master: I may be able to synchronize with the new master with just a partial transfer.
1:S 31 Oct 2019 06:28:43.060 * REPLICAOF 10.0.21.49:6379 enabled (user request from 'id=1085 addr=10.0.21.54:34360 fd=16 name=sentinel-592f3b97-cmd age=945 idle=0 flags=x db=0 sub=0 psub=0 multi=3 qbuf=150 qbuf-free=32618 obl=36 oll=0 omem=0 events=r cmd=exec')
1:S 31 Oct 2019 06:28:43.701 * Connecting to MASTER 10.0.21.49:6379
1:S 31 Oct 2019 06:28:43.702 * MASTER <-> REPLICA sync started
1:S 31 Oct 2019 06:28:43.702 * Non blocking connect for SYNC fired the event.
1:S 31 Oct 2019 06:28:43.702 * Master replied to PING, replication can continue...
1:S 31 Oct 2019 06:28:43.703 * Trying a partial resynchronization (request a056665afb95a1e3a4227ae7fcb1c9b2e2f3b222:244418).
1:S 31 Oct 2019 06:28:43.703 * Full resync from master: adde2c9daee4fa1e62d3494d74d08dfb7110c798:241829
1:S 31 Oct 2019 06:28:43.703 * Discarding previously cached master state.
1:S 31 Oct 2019 06:28:43.715 * MASTER <-> REPLICA sync: receiving 2229 bytes from master
1:S 31 Oct 2019 06:28:43.715 * MASTER <-> REPLICA sync: Flushing old data
1:S 31 Oct 2019 06:28:43.715 * MASTER <-> REPLICA sync: Loading DB in memory
1:S 31 Oct 2019 06:28:43.715 * MASTER <-> REPLICA sync: Finished with success

MASTER MODE включается, но затем переходит в REPLICAOF! Как я могу заставить redis-master всегда быть MASTER?

1 Ответ

0 голосов
/ 31 октября 2019

Да, я думаю, что это имеет смысл.

Sentinel всегда будет помнить, кто присоединился к группе master-slave.

Когда вы вручную создаете master-slave master, часовой не зналесли вы делаете это нарочно, или произошла сетевая часть. Так что стражники сделают convert-to-slave, чтобы избежать двух мастеров, существующих в группе. (он же, split-brain )

Чтобы удалить узел из группы

Проверьте документы , Короче, нужно отправитьSENTINEL RESET mastername до всех стражей, чтобы позволить им забыть потерянный узел. Затем запустите потерянный узел как мастер, он не присоединится к группе часового.

Чтобы предыдущий (отказавший) мастер-узел остался мастером.

После возвращения потерянного мастера какв качестве раба, вы можете сделать SENTINEL failover <master name>, часовые сделают аварийное переключение и переключат master и slave. Но я не думаю, что вы можете назначить мастера, когда имеется более 3 узлов.

...