2016-12-22 2 views
7

У меня есть два узла, которые я хочу запускать как серверы в активном режиме, а также иметь возможность HA, то есть если один из них выключен, другой должен начать получать все запросы, но пока оба они оба, оба должны принимать все запросы. Теперь, поскольку Redis не разрешает активный активный режим для одного и того же набора хэшей, и у меня нет возможности запуска Sentinel, поскольку у меня нет третьего узла, моя идея - запустить два узла в репликации, и я сам решаю, мастер-узел отключен и продвигает ведомый сервер. Есть ли проблемы с этим? Когда исходный мастер возвращается, есть ли способ настроить его как подчиненный?2 Узел Redis HA

Звучит это как хорошая идея? Я открыт для предложений, кроме Редиса.

+0

Я заинтересован в этом. Похоже, что нет возможности сконфигурировать два узла для отказоустойчивости даже на redis 4, однако на redis4 это можно сделать вручную. – kworr

ответ

2

Хорошо, частичное решение с SLAVEOF:

Вы можете вручную продвигать ведомого к ведущему, запустив:

SLAVEOF NO ONE 

Вы можете вручную переход мастера к подчиненному, запустив:

SLAVEOF <HOST> <port> 

Кластеризация должен быть отключен.

1

В целом, работающий на двух узлах никогда не бывает хорошей идеей, потому что у него есть проблема с раздвоением мозга: когда сеть между двумя узлами не работает ни на секунду, ни на два узла, они неизбежно думают друг о друге в автономном режиме и будут продвигать/держать себя хозяином и начинать принимать запросы от других служб. Затем происходит раздвоенный мозг.

И если у вас все в порядке с этой возможной ситуацией, вы можете изучить настройку master-slave с помощью файла сценария и службы HA, например, кардиостимулятора или keepalived.

Обычно вы должны сообщить менеджеру кластера через предопределенное правило, что когда два компьютера присоединяются к раздельному состоянию мозга, какой из них является вашим предпочтительным мастером.

Когда мастер выбран, выполните сценарий и в основном выполните его slaveof no one и выполните slaveof <new-master-ip> <port> на другом узле.

Вы можете сделать еще один шаг в своем файле сценария и попытаться объединить два набора данных вместе, но то, достижимо или нет, полностью зависит от того, как вы упорядочили свои данные в Redis и как долго вы готовы ждать для синхронизации всех данных.

Я сделал это сам, прежде чем через кардиостимулятор + corosync.

0

Я бы рекомендовал иметь как минимум 3 узла с установкой Sentinel для включения сплетен/кворума для автоматической рассылки ведомого устройства, когда ведущий узел перестает работать.

Смежные вопросы