задержка поддержки активности до поднятие IP

Можно ли настроить задержку перед включением виртуального IP-адреса в keepalived?

Общие сведения: У меня есть несколько настроек Master / Master MySQL. Одновременно используется только один Мастер. Keepalived используется для VIP, который используется для трафика mysql. Когда VIP переключается на другого мастера, должна быть задержка в 5 секунд, прежде чем VIP снова появится. Чтобы быть уверенным, что у другой стороны будет достаточно времени для завершения последнего трафика репликации.

0
задан 8 April 2021 в 19:00
1 ответ

Я получил ответ от Квентина Армитиджа:

Не существует опции конфигурации, которая бы явно вызывала задержку в VIP-клиентов на новом мастере, но есть пара способов. которые могут достичь желаемого (разумеется. наличие задержки полностью противоречит цели VRRP, которая заключается в том, чтобы попытка минимизировать время простоя из-за недоступности VIP).

Вариант 1.

Это даст больше времени простоя при отключении, чем при обслуживании. (когда я предполагаю, что keepalived будет выключен на существующем мастере).

Настройте ваши экземпляры VRRP на использование VRRP версии 3, advert_int на 5 секунд, а два экземпляра VRRP используют приоритет 1 и приоритет 2 соответственно.

В случае, если keepalived будет остановлен на оригинальном мастере (я предполагаю, что это делается для обслуживания), он пошлет объявление с приоритетом 0, и поскольку другой экземпляр имеет приоритет 1, он будет ждать (256 - 1) / 256 * 5 секунд (т.е. 4.98 секунды), прежде чем принять на себя роль ведущего (установка advert_int на 5.02 даст вам практически точную точную 5-секундную задержку). Недостатком этого способа является то, что если произойдет перебои в работе, резервной копии потребуется от 15 до 19,98 секунд, чтобы чтобы резервная копия стала главной.

Вариант 2

Используйте брандмауэр, чтобы заблокировать доступ к VIP до тех пор, пока не будет готов новый мастер. готов.

Для этого можно использовать сценарии notify_backup и notify_master, но порядок выполнения скриптов notify не является надежным, поэтому следует следует использовать notify_fifo и сценарий для чтения FIFO (см. vrrp_notify_fifo и vrrp_notify_fifo_script) в keepalived.conf(5) man page. Существует сценарий sample_notify_fifo.sh в каталоге doc/samples в директории doc/samples в дереве исходников keepalived, и он может быть установлен где-нибудь в /usr/share/doc/keepalived вашего дистрибутива.

Когда на FIFO поступает резервное сообщение, добавьте правило брандмауэра, чтобы отбрасывать пакеты на VIP. Когда основное сообщение поступает в FIFO, асинхронно запустите скрипт, который будет спать 5 секунд, а затем удаляет правило брандмауэра.

https://groups.io/g/keepalived-users/topic/is_it_possible_to_configure/81962597

0
ответ дан 24 April 2021 в 02:06

Теги

Похожие вопросы