2016-07-26 9 views
0

Привет стек сообщества,Redis Сентинел с 2 мастера после нескольких аз нетсплит

У меня есть вопрос о Redis дозорных для конкретного случая проблемы. Я использую AWS с Multi AZ для создания кластера sensu.

На eu-central-1a у меня есть sensu + redis (M), RBMQ + Sentinel и еще 2 Sentinels. То же самое на eu-central-1b, но redis является моим подчиненным на этом AZ.

Что произойдет, если есть проблема, и eu-central-1a не может связаться с eu-central-1b? Я думаю, что Sentinel на eu-central-1b должен продвигать моего redis slave, чтобы справиться с ним, потому что он не может связаться с моим мастером redis. Таким образом, у меня должно быть 2 мастера redis, работающих вместе на двух разных AZ.

Но когда ссылка получена между AZ, у меня все еще будет 2 мастера с двумя различными данными. Что будет в этом случае? Один мастер станет подчиненным, и данные будут воспроизведены без потерь? Нужно ли нам перезапустить мастера, и он будет рабом?

ответ

0

Страж обнаруживает изменения в мастер, например

Если хозяин идет вниз и недостижим новый раб избираются. Это основано на quorum, где несколько стражей согласны с тем, что мастер спустился. Затем происходит failover.

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

Если вы потеряете соединение, то датчик не будет работать правильно, поскольку он полагается на несколько часовых, чтобы согласиться с мастер-редизом. Вы не должны использовать дозорный сигнал в 2-х дозорных системах.

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