У меня есть кластер Redis с 2 ведущими и 4 ведомыми (по 2 ведомых на каждого ведущего). После того, как я вручную сбой главного устройства (т.е. redis-cli -p 6379 debug segfault
), подчиненные устройства ничего не делают. Они обнаруживают, что с мастером что-то не так, но ничего не делают (я ждал 20 минут).
Вот вывод узлов кластера (то есть redis-cli узлов кластера
):
08dfd1bdd470a8831b33b7b0409a40bf45ee22d0 192.168.0.15:6379 myself,slave 55787eb63780365a0c7d4a0ed72cac4b97a55ed0 0 0 1 connected
7fedf234aba8d906dca5a4725a54d1cc5c979c18 192.168.0.18:6379 slave a739cfbcd9b804345808bb3a78b6a00b2d6050f9 0 1477865886164 2 connected
a739cfbcd9b804345808bb3a78b6a00b2d6050f9 192.168.0.14:6379 master,fail? - 1477865551940 1477865548392 0 disconnected 8192-16383
5dcc0a0a3f13ea9343171a13fbf0ec7054dfc2ab 192.168.0.19:6379 slave a739cfbcd9b804345808bb3a78b6a00b2d6050f9 0 1477865884135 5 connected
55787eb63780365a0c7d4a0ed72cac4b97a55ed0 192.168.0.16:6379 master - 0 1477865885150 2 connected 0-8191
601a5e0dd9d40d8c01119714e89be63eaee87900 192.168.0.17:6379 slave 55787eb63780365a0c7d4a0ed72cac4b97a55ed0 0 1477865882100 3 connected
Как мы видим вот отказавший главный узел 192.168.0.14:6379
, который помечен как главный, сбой
? . Я не знаю, почему там стоит вопросительный знак. Но жду 20 минут и ничего не изменилось. Почему рабы не Не взять на себя управление хозяином?
У вас должно быть как минимум 3 мастера, чтобы сформировать кластер Redis. Если большинство мастеров умирают одновременно, кластер становится непригодным для использования. Отказоустойчивость не происходит, если большинство мастеров недоступны.
Потому что чистый Redis не может выполнить аварийное переключение самостоятельно. Ведущее устройство и ведомые устройства с точки зрения redis предназначены только для балансировки нагрузки. Вы должны использовать Sentinel (модуль для redis поставляется с redis по умолчанию) для достижения автоматического переключения при сбое.