Вопрос или проблема
keepalived конфигурация на node01:
vrrp_track_process track_haproxy {
process haproxy
weight 10
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 255
advert_int 1
authentication {
auth_type PASS
auth_pass mypassword
}
virtual_ipaddress {
10.0.0.20/24
}
track_process {
track_haproxy
}
}
keepalived конфигурация на node02:
vrrp_track_process track_haproxy {
process haproxy
weight 10
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 254
advert_int 1
authentication {
auth_type PASS
auth_pass mypassword
}
virtual_ipaddress {
10.0.0.20/24
}
track_process {
track_haproxy
}
}
Проблема в том, что когда сервис haproxy на node01 останавливается, VIP 10.0.0.20/24 не удаляется с node01, а затем не назначается node02, как я ожидал.
Пожалуйста, помогите. Спасибо.
Ответ или решение
Проблема, которую вы описали, связана с тем, что Keepalived не корректно отслеживает состояние процесса HAProxy и, соответственно, не производит необходимое состояние для перемещения VIP (виртуального IP-адреса) с одного узла на другой. Давайте разберем возможные причины данной проблемы и способы её устранения.
1. Проверка состояния процесса и конфигурации
Во-первых, убедитесь, что процесс HAProxy действительно запускается на обоих узлах. Вы можете использовать команду ps aux | grep haproxy
, чтобы проверить, запущен ли он. Если процесс не запущен, то Keepalived не сможет его отследить.
2. Логирование Keepalived
Обратите внимание на логи Keepalived. Логи можно найти в /var/log/syslog
или /var/log/messages
(в зависимости от вашей системы). Они могут содержать полезные сообщения, указывающие на причину проблемы. Обратите внимание на сообщения об ошибках, связанных с отслеживанием процесса.
3. Правильное использование vrrp_track_process
Убедитесь, что вы правильно настроили vrrp_track_process
. Если вы используете одну и ту же конфигурацию на обоих узлах, проверьте, чтобы конфигурация vrrp_track_process
была идентичной, как вы и сделали. Однако важно также, чтобы название процесса совпадало.
Также посмотрите на роль weight
— он указывает, насколько приоритетом будет переопределённый узел при его недоступности. Это может повлиять на поведение Keepalived при переключении.
4. Параметры системы
Если у вас активно используется SELinux, он может блокировать действия Keepalived. Вы можете временно отключить SELinux для тестирования, выполнив команду setenforce 0
, или настроить его соответственно.
5. Проверка сетевого интерфейса
Убедитесь, что интерфейс, указанный в конфигурации (ens33
), активен и может отправлять/принимать пакеты. Используйте команды ip addr
или ifconfig
для проверки статуса интерфейса.
6. Тестирование
После внесения изменений в конфигурацию перезапустите Keepalived на обоих узлах с помощью следующих команд:
sudo systemctl restart keepalived
После перезапуска попробуйте остановить процесс HAProxy и смотрите логи Keepalived на предмет изменения состояния VIP.
7. Синхронизация состояний между узлами
Убедитесь, что между двумя узлами нет проблем с сетью, которые могут препятствовать правильной работе Keepalived. Используйте такие инструменты, как ping
и telnet
, чтобы проверить доступность сетевых служб.
Заключение
Если после всех перечисленных шагов проблема не устранена, попробуйте протестировать на более простом уровне (например, на локальном тестовом окружении) или обновите вашу версию Keepalived до последней. Возможно, версия, которую вы используете, имеет известные проблемы, которые решены в более поздних релизах.
Надеюсь, эти шаги помогут вам разобраться в проблеме с отслеживанием процесса и поведения VIP в вашей конфигурации Keepalived. Если потребуется дополнительная помощь, не стесняйтесь обращаться.