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