как заставить сельдерей понять, что редис мастер упал - PullRequest
0 голосов
/ 19 января 2020

У меня есть настройка 4 linux серверов. Я запускаю приложение на них с gunicorn во внешнем интерфейсе и сельдереем в бэкэнде для решения задач. Эти 4 хоста находятся в отношениях ведущий-ведомый для Redis. т.е. 1 хозяин и 3 рабов. На мастере моя информация о репликации redis выглядит следующим образом. Пока все работает как положено. Сейчас.

При настройке конфигурации Redis Master / Slave вы можете записывать только на мастер и читать с любого хоста. Работники сельдерея в подчиненном общаются с мастером, чтобы написать задачи для redis. Если я отключу главный узел. Я вижу эту ошибку в журналах сельдерея ведомого.

[2020-01-16 01:50:52,970: ERROR/MainProcess] consumer: Cannot connect to redis://abc-master_node:16379/0: Error 111 connecting to abc-master_node:16379. Connection refused..
Trying again in 32.00 seconds...

redis-cli -p 16379
127.0.0.1:16379> info replication
# Replication
role:master
connected_slaves:3
slave0:ip=1.x.x.x,port=16379,state=online,offset=1156143479,lag=0
slave1:ip=2.x.x.x,port=16379,state=online,offset=1156143479,lag=0
slave2:ip=3.x.x.x,port=16379,state=online,offset=1156143479,lag=0
master_replid:61219a1xyz6ac0492181839ac3d4
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1156143479
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1155094904
repl_backlog_histlen:1048576
127.0.0.1:16379>

Как заставить сельдерей понять, что мастер-узел вышел из строя, и попытаться подключиться к новому мастеру в описанной выше настройке? Как я могу сообщить об изменениях в Redis Master работникам бэкэнда из сельдерея?

...