Я пытаюсь настроить автоматическую систему аварийного переключения в кластере Redis с 3 узлами. Я установил redis-sentinel на каждом из этих узлов (точно как этот парень: http://www.symantec.com/connect/blogs/configuring-redis-high-availability). Все нормально, пока у меня два-три узла. Проблема в том, что всякий раз, когда остается только onte-узел, который является подчиненным, он не выбирается в качестве главного автоматически. Кворум установлен на 1, поэтому последний узел обнаруживает отключение ведущего устройства, но не может проголосовать за аварийное переключение, поскольку нет большинства.
Чтобы преодолеть эту (неожиданную) проблему, я написал небольшой сценарий, который запрашивает у других узлов их мастера, и, если они не отвечают, я устанавливаю текущий узел как ведущий. Этот сценарий вызывается в файле redis-sentinel.conf как сценарий уведомления. Однако ... Как только служба redis-sentinel запускается, эта конфигурация "стирается"! Если я посмотрю на файл конфигурации в / etc, строка "sentinel notification-script" исчезла (redis-sentinel перезаписывает свой файл конфигурации, так почему бы и нет), НО конфигурация, которую я написал, больше не доступна:
1) 1) "name"
2) "mymaster"
3) "ip"
4) "x.x.x.x"
5) "port"
6) "6379"
7) "runid"
8) "somerunid"
9) "flags"
10) "master"
11) "pending-commands"
12) "0"
13) "last-ping-sent"
14) "0"
15) "last-ok-ping-reply"
16) "395"
17) "last-ping-reply"
18) "395"
19) "down-after-milliseconds"
20) "30000"
21) "info-refresh"
22) "674"
23) "role-reported"
24) "master"
25) "role-reported-time"
26) "171302"
27) "config-epoch"
28) "0"
29) "num-slaves"
30) "1"
31) "num-other-sentinels"
32) "1"
33) "quorum"
34) "1"
35) "failover-timeout"
36) "180000"
37) "parallel-syncs"
38) "1"
Это результат команды часовых-мастеров. Единственное, что я ранее установил для «down-after-milliseconds» значение 5000, а «failover-timeout» - на 10000 ...
Не знаю, встречал ли кто-нибудь что-нибудь подобное? Что ж, если у кого-то есть хоть какое-то представление о том, что происходит, я был бы рад этому;)