redis-ha в kubernetes не может вернуться к мастеру - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь создать простую установку высокой доступности Redis с 1 ведущим, 1 подчиненным и 2 часовыми.

Настройка работает отлично при переключении с redis-master на redis-slave.Когда redis-master восстанавливается, он корректно регистрирует себя в качестве ведомого для нового redis-slave мастера.

Однако, когда redis-slave в качестве мастера отключается, redis-master не может вернуться в качестве мастера.Журнал redis-master входит в цикл, показывая:

1:S 12 Dec 11:12:35.073 * MASTER <-> SLAVE sync started
1:S 12 Dec 11:12:35.073 * Non blocking connect for SYNC fired the event.
1:S 12 Dec 11:12:35.074 * Master replied to PING, replication can continue...
1:S 12 Dec 11:12:35.075 * Trying a partial resynchronization (request 684581a36d134a6d50f1cea32820004a5ccf3b2d:285273).
1:S 12 Dec 11:12:35.076 * Master is currently unable to PSYNC but should be in the future: -NOMASTERLINK Can't SYNC while not connected with my master
1:S 12 Dec 11:12:36.081 * Connecting to MASTER 10.102.1.92:6379
1:S 12 Dec 11:12:36.081 * MASTER <-> SLAVE sync started
1:S 12 Dec 11:12:36.082 * Non blocking connect for SYNC fired the event.
1:S 12 Dec 11:12:36.082 * Master replied to PING, replication can continue...
1:S 12 Dec 11:12:36.083 * Trying a partial resynchronization (request 684581a36d134a6d50f1cea32820004a5ccf3b2d:285273).
1:S 12 Dec 11:12:36.084 * Master is currently unable to PSYNC but should be in the future: -NOMASTERLINK Can't SYNC while not connected with my master
1:S 12 Dec 11:12:37.087 * Connecting to MASTER 10.102.1.92:6379
1:S 12 Dec 11:12:37.088 * MASTER <-> SLAVE sync started
...

За Документация репликации , он гласит:

Начиная с Redis 4.0, когдаПосле перехода на другой ресурс экземпляр повышается до главного, он все еще может выполнять частичную повторную синхронизацию с ведомыми устройствами старого мастера.

Но журнал, похоже, показывает иное.Более детальная версия журнала, показывающая как первый redis-master на redis-slave отказоустойчивый, так и последующий redis-slave на redis-master журнал, доступна здесь .

Есть идеи, что происходит?Что мне нужно сделать, чтобы redis-master вернулся к главной роли?Подробности конфигурации приведены ниже:

УСЛУГИ

NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)     AGE
redis-master     ClusterIP   10.102.1.92     <none>        6379/TCP    11m
redis-slave      ClusterIP   10.107.0.73     <none>        6379/TCP    11m
redis-sentinel   ClusterIP   10.110.128.95   <none>        26379/TCP   11m

redis-master config

requirepass test1234
masterauth test1234
dir /data

tcp-keepalive 60
maxmemory-policy noeviction
appendonly no
bind 0.0.0.0
save 900 1
save 300 10
save 60 10000

slave-announce-ip redis-master.fp8-cache
slave-announce-port 6379

redis-slave config

requirepass test1234
slaveof redis-master.fp8-cache 6379
masterauth test1234
dir /data

tcp-keepalive 60
maxmemory-policy noeviction
appendonly no
bind 0.0.0.0
save 900 1
save 300 10
save 60 10000

slave-announce-ip redis-slave.fp8-cache
slave-announce-port 6379

1 Ответ

0 голосов
/ 22 декабря 2018

Оказывается, что проблема связана с использованием имени хоста вместо IP:

slaveof redis-master.fp8-cache 6379
...
slave-announce-ip redis-slave.fp8-cache

Итак, когда мастер вернулся в качестве подчиненного, страж показывает, что теперь есть 2 подчиненных: одинс IP-адресом и другой с именем хоста.Не уверен, как именно эти 2 подчиненные записи (которые указывают на тот же сервер Redis) вызывают проблему выше.Теперь, когда я изменил конфигурацию, чтобы использовать IP-адрес вместо имени хоста, Redis HA работает безупречно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...