Гид по технологиям

Включение переадресации пакетов и настройка heartbeat и ldirectord

• 5 min read • Инфраструктура • Обновлено 21 Nov 2025
Настройка heartbeat и ldirectord на балансировщиках
Настройка heartbeat и ldirectord на балансировщиках

Краткие определения

  • heartbeat — демон для организации отказоустойчивых кластеров на уровне узлов.
  • ldirectord — менеджер реальных серверов (L7 health checking) для LVS/iptables балансировки.
  • VIP — виртуальный IP-адрес, который «плавающий» и назначается активному балансировщику.

Требования и обозначения

  • В статье предполагаются два балансировщика: loadb1 и loadb2.
  • В примерах используются IP: балансировщики — 192.168.0.100/101 (пример), апачи — 192.168.0.101 и 192.168.0.102, VIP — 192.168.0.105.
  • Все команды выполняются под root или с sudo.

1. Включение переадресации пакетов на балансировщиках

Балансировщики должны маршрутизировать пакеты на узлы Apache. Для этого включите форвардинг IPv4.

На loadb1 и loadb2 отредактируйте /etc/sysctl.conf:

vi /etc/sysctl.conf

В файл добавьте или отредактируйте строку:

# Enables packet forwarding
net.ipv4.ip_forward = 1

Примените изменения:

sysctl -p

Проверка (альтернативно):

cat /proc/sys/net/ipv4/ip_forward
# должно вернуть 1

Примечание: если у вас есть правила firewall (iptables/nftables), убедитесь, что политика FORWARD и правила NAT позволяют проход трафика от VIP к реальным серверам.

Важно: если балансировщик использует kernel LVS, убедитесь, что необходимые модули загружены и политика iptables не мешает пересылке.

2. Настройка heartbeat

Файлы конфигурации heartbeat должны быть идентичны на loadb1 и loadb2. Создайте следующие файлы.

Отредактируйте /etc/ha.d/ha.cf:

vi /etc/ha.d/ha.cf

Вставьте:

logfacility        local0
bcast        eth0                # Linux
mcast eth0 225.0.0.1 694 1 0
auto_failback off
node        loadb1
node        loadb2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster

Пояснения:

  • logfacility — куда писать логи (local0 соответствует конфигурации syslog).
  • bcast/mcast — способ объявления присутствия (broadcast или multicast). Используйте тот, который поддерживается в вашей сети.
  • node — имена узлов кластера; они должны совпадать с выводом uname -n на соответствующих машинах.
  • respawn/apiauth — параметры для механизма обнаружения и авторизации.

ВАЖНО: в качестве имени узла используйте точный результат команды:

uname -n

Это имя должно совпадать с полем node в ha.cf на каждой машине.

Создайте /etc/ha.d/haresources:

vi /etc/ha.d/haresources

Пример содержимого (замените loadb1 и IP на ваши значения):

loadb1        \
        ldirectord::ldirectord.cf \
        LVSSyncDaemonSwap::master \
        IPaddr2::192.168.0.105/24/eth0/192.168.0.255

Пояснение: первое слово — имя узла, который будет владельцем ресурсов по умолчанию (здесь loadb1). После IPaddr2 указан виртуальный IP (VIP).

Создайте файл авторизации /etc/ha.d/authkeys:

vi /etc/ha.d/authkeys

Пример:

auth 3
3 md5 somerandomstring

somerandomstring — общий секрет между демонами heartbeat. Используйте собственную случайную строку. Варианты аутентификации: md5 (рекомендуется), text, none.

Ограничьте права файла:

chmod 600 /etc/ha.d/authkeys

3. Настройка ldirectord

ldirectord отвечает за health-check и распределение в режиме LVS. Файл /etc/ha.d/ldirectord.cf должен быть идентичен на обоих балансировщиках.

vi /etc/ha.d/ldirectord.cf

Пример содержимого (точно как указано):

checktimeout=10
checkinterval=2
autoreload=no
logfile="local0"
quiescent=yes

virtual=192.168.0.105:80
        real=192.168.0.101:80 gate
        real=192.168.0.102:80 gate
        fallback=127.0.0.1:80 gate
        service=http
        request="ldirector.html"
        receive="Test Page"
        scheduler=rr
        protocol=tcp
        checktype=negotiate

Пояснения ключевых полей:

  • virtual — VIP и порт.
  • real — IP-адреса реальных веб-серверов и режим (gate означает, что используется iptables/route).
  • fallback — локальный fallback (на случай, если все реалы недоступны).
  • request/receive — файл и строка, которые ldirectord запрашивает у бекендов для проверки их работоспособности. Создайте /var/www/ldirector.html на веб-серверах с содержимым “Test Page”.
  • scheduler — алгоритм (rr = round-robin).

Совет: если ваши бэкенды используют HTTPS или специфичные URI, настройте request/receive в соответствии с реальным endpoint.

4. Автозагрузка и запуск

Создайте ссылки автозапуска для heartbeat и удалите автозапуск ldirectord (ldirectord будет запускаться из heartbeat):

update-rc.d heartbeat start 75 2 3 4 5 . stop 05 0 1 6 .
update-rc.d -f ldirectord remove

Остановите ldirectord, если он запущен, и запустите heartbeat (это запустит ldirectord через haresources):

/etc/init.d/ldirectord stop
/etc/init.d/heartbeat start

Проверьте статус:

ps -ef | grep -E "heartbeat|ldirectord"
ip addr show
# или
ip a

Критерии приёмки

  • VIP (192.168.0.105) присутствует на активном узле: ip addr show | grep 192.168.0.105
  • Запрос к VIP возвращает контент страницы: curl http://192.168.0.105/ldirector.html → содержит “Test Page”.
  • При остановке heartbeat на активном узле VIP появляется на пассивном в течение проверяемого интервала.
  • Файлы /etc/ha.d/ha.cf, /etc/ha.d/haresources и /etc/ha.d/ldirectord.cf идентичны на обеих нодах (за исключением имени узла в haresources, если специально требуется).

Плейбук быстрого восстановления (SOP)

  1. Проверить, что heartbeat запущен на обоих нодах: ps -ef | grep heartbeat
  2. Если VIP пропал, проверить /var/log/syslog и логи heartbeat/local0.
  3. На пассивном узле временно включить debug в /etc/ha.d/ha.cf и перезапустить демон (только для отладки).
  4. Вернуть нормальные права на /etc/ha.d/authkeys (chmod 600).

Отладка и частые ошибки

  • Неправильный node name: имя в ha.cf не совпадает с uname -n → heartbeat не формирует кластер.
  • Неправильные права authkeys → heartbeat отказывается использовать ключ.
  • ip_forward выключен → пакеты не доходят до реальных серверов.
  • firewall блокирует трафик от VIP к реальным серверам.
  • ldirectord запущен отдельно и одновременно с heartbeat → конфликт, поэтому удаляйте автоматический запуск для ldirectord.

Альтернативные подходы и ограничения

  • Вместо ldirectord можно использовать HAProxy + keepalived (современный стек L7/L4 с широкими возможностями). Это предпочтительнее, если нужны расширенные балансировочные политики и SSL termination.
  • Для облачных окружений часто используют встроенные балансировщики провайдера (elb, lb), где ручная настройка LVS/heartbeat не требуется.

Рекомендации по безопасности

  • Используйте сильную случайную строку в authkeys и chmod 600.
  • Ограничьте доступ к интерфейсам управления кластера на уровне сети (офисный VLAN, VPN).
  • Логи и аудит: отправляйте логи heartbeat/ldirectord в центральный syslog.

Роль‑ориентированные чеклисты

Администратор сети:

  • Убедиться, что multicast/broadcast работает между нодами.
  • Проверить правило FORWARD и маршрутизацию.

Системный инженер:

  • Настроить и синхронизировать /etc/ha.d/* на обеих нодах.
  • Проверить, что VIP корректно переключается при отказе.

Мини‑глоссарий

  • VIP — виртуальный IP, который перемещается между нодами.
  • real server — реальный бэкенд, принимающий трафик от балансировщика.
  • active/passive — топология, где один узел активен, второй — горячий резерв.

Короткое объявление (для рассылки, ~120 слов)

Мы настроили отказоустойчивый кластер балансировщиков с помощью heartbeat и ldirectord. Включена переадресация пакетов (ip_forward) и настроен мониторинг бэкендов через ldirectord, который проверяет доступность страницы ldirector.html. Конфигурации идентичны на обоих балансировщиках; один узел работает как активный, другой — в режиме hot‑standby. При сбое активного узла виртуальный IP автоматически переместится на резервный узел, обеспечивая непрерывность обслуживания.


Итог: выполните шаги в разделе 1–4, проверьте критерии приёмки и добавьте мониторинг и оповещения для контроля состояния кластера.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро