Добрый день. Есть балансировщик keepalived с одним VIP'ом и 2 бекендами (real_server). Сейчас использую в качестве метода проверки доступности бекендов TCP_CHECK и проблем нет. Хочется перейти на более продвинутую логику проверки доступности, а именно HTTP_CHECK.
Ожидание: keepalived знает контрольную сумму каждой страницы, которую использует для тестирования и при её изменении (что может вызвано, как падением сервиса, так и изменением содержимого веб-страницы) выключает этот real_server из балансировки.
Реальность: keepalived корректно обрабатывает падение (видимо основываясь на возвращаемом HTTP Status code), но полностью игнорирует изменение контрольной суммы, если меняется содержимое веб-страницы.
Конфиг keepalived - https://pastebin.com/raw/k7PJpJMH
Подозреваю, что скорее всего какой-то ошибкой в синтаксисе конфига, но не могу её отловить. На эту мысль меня наталкивает ошибка в логах keepalived при его старте (но ошибка не фатальная, т.к. сервис keepalived запускается и работает, за исключением проверки контрольной суммы)
Mar 20 09:41:15 test-lb01 Keepalived_healthcheckers[1752]: Initializing ipvs
Mar 20 09:41:15 test-lb01 Keepalived_healthcheckers[1752]: Opening file '/etc/keepalived/keepalived.conf'.
Mar 20 09:41:15 test-lb01 Keepalived_healthcheckers[1752]: Unknown keyword 'digitest'
Mar 20 09:41:15 test-lb01 Keepalived_healthcheckers[1752]: Unknown keyword 'digitest'
Контрольная сумма проверяемых страницы получалась таким образом:
genhash --server 192.168.19.47 --port 80 --url /index.html
genhash --server 192.168.19.41 --port 80 --url /index.html