Не дать мастеру VRRP стать мастером после неудачи
У меня есть две машины (A и B, A - Master), на которых запущен VRPP (из keepalived) для виртуального IP.
Как я могу помешать А снова стать Мастером, если он потерпел неудачу и вернулся (по какой-либо причине)?
Я делаю это так, чтобы у нас было одно переключение на вторую коробку, и возвращение в нормальное состояние потребовало бы ручного вмешательства.
3 ответа
Согласно этому относительно старому потоку в списке разработчиков, поддерживающему поддержку, это можно сделать. Вы устанавливаете оба сервера равным приоритетом (или ни одного вообще), и не объявляете состояние ни MASTER, ни BACKUP, а вместо этого устанавливаете состояние EQUAL для обоих.
РЕДАКТИРОВАТЬ (07-Dec-2017):
Похоже, что EQUAL на самом деле не является действительным состоянием, несмотря на то, что оно, по-видимому, обеспечивает желаемый эффект во время публикации этого ответа. Пожалуйста, обратите внимание на комментарии ниже, в частности, ссылку на текущий список вопросов для keepalived, предоставленный @cristi.
То, как мы решили это, добавив nopreempt
флаг нашего сохраненного конфигурационного файла. Больше ничего менять не пришлось (все равно оставил один как MASTER
и один как BACKUP
и так далее). В основном это говорит о том, что не следует переключать мастеров только потому, что новый сервер подключен к сети, переключаться только при сбое текущего мастера.
Насколько я понимаю, когда появляется новый сервер VRRP, он вызывает выборы, а текущий сервер не получает никакой выгоды, поэтому старый мастер подойдет и победит на выборах. Я сомневаюсь, что вы могли бы многое сделать, чтобы остановить это, за исключением довольно жестокого "Стреляй в другой узел в голове". Keepalive может иметь некоторую конфигурацию для управления процессом выборов. К сожалению, у меня нет времени, чтобы проверить сейчас, но я постараюсь посмотреть позже.