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

Тест балансировщиков и настройка Apache-нод

• 3 min read • DevOps • Обновлено 21 Nov 2025
Тест балансировщиков и настройка Apache
Тест балансировщиков и настройка Apache

Кратко: Проверьте, что активный и резервный балансировщики корректно обмениваются виртуальным IP, что процессы ldirectord и синхронизация IPVS работают, и затем настройте виртуальный IP и ARP-параметры на двух Apache‑нодах.

5 Тестирование балансировщиков

Далее проверим, что оба балансировщика работают как ожидается.

loadb1/loadb2:

ip addr sh eth0 

Активный балансировщик должен показывать виртуальный IP-адрес 192.168.0.105:

| 2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:16:3e:40:18:e5 brd ff:ff:ff:ff:ff:ff inet 192.168.0.103/24 brd 192.168.0.255 scope global eth0 inet 192.168.0.105/24 brd 192.168.0.255 scope global secondary eth0 |

Горячий резерв (hot-standby) должен показывать только свой основной адрес:

| 2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:16:3e:50:e3:3a brd ff:ff:ff:ff:ff:ff inet 192.168.0.104/24 brd 192.168.0.255 scope global eth0 |

loadb1/loadb2:

ldirectord ldirectord.cf status

Вывод на активном балансировщике:

| ldirectord for /etc/ha.d/ldirectord.cf is running with pid: 1455 |

Вывод на резерве:

| ldirectord is stopped for /etc/ha.d/ldirectord.cf |

loadb1/loadb2:

ipvsadm -L -n

Вывод на активном балансировщике (должны быть реальные бэкенды):

| IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.105:80 rr -> 192.168.0.101:80 Route 0 0 0 -> 192.168.0.102:80 Route 0 0 0 -> 127.0.0.1:80 Local 1 0 0 |

Вывод на резервном балансировщике (ожидаемо пуст):

| IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn |

loadb1/loadb2:

/etc/ha.d/resource.d/LVSSyncDaemonSwap master status

Вывод на активном балансировщике:

| master running (ipvs_syncmaster pid: 1591) |

Вывод на резерве:

| master stopped |

Если результаты тестов соответствуют ожидаемым (виртуальный IP присутствует на активном узле, ipvsadm показывает виртуальный сервис, ldirectord и master работают на активном узле и остановлены на резервном), можно переходить к настройке двух Apache-нод.

Важно: выполняйте проверки из сети, где доступен виртуальный IP, и документируйте наблюдаемые PID и адреса — это пригодится при отладке.

6 Настройка двух Apache-нод

Нужно настроить webserver1.example.com и webserver2.example.com так, чтобы они принимали запросы на виртуальный IP 192.168.0.105.

webserver1/webserver2:

apt-get install iproute

Добавьте следующие параметры в /etc/sysctl.conf (файл сохраняется без изменения путей):

webserver1/webserver2:

vi /etc/sysctl.conf

| # Enable configuration of arp_ignore option net.ipv4.conf.all.arp_ignore = 1 # When an arp request is received on eth0, only respond if that address is # configured on eth0. In particular, do not respond if the address is # configured on lo net.ipv4.conf.eth0.arp_ignore = 1 # Ditto for eth1, add for all ARPing interfaces #net.ipv4.conf.eth1.arp_ignore = 1 # Enable configuration of arp_announce option net.ipv4.conf.all.arp_announce = 2 # When making an ARP request sent through eth0 Always use an address that # is configured on eth0 as the source address of the ARP request. If this # is not set, and packets are being sent out eth0 for an address that is on # lo, and an arp request is required, then the address on lo will be used. # As the source IP address of arp requests is entered into the ARP cache on # the destination, it has the effect of announcing this address. This is # not desirable in this case as adresses on lo on the real-servers should # be announced only by the linux-director. net.ipv4.conf.eth0.arp_announce = 2 # Ditto for eth1, add for all ARPing interfaces #net.ipv4.conf.eth1.arp_announce = 2 |

Затем примените параметры:

webserver1/webserver2:

sysctl -p

Добавьте раздел для виртуального IP в /etc/network/interfaces:

webserver1/webserver2:

vi /etc/network/interfaces

| auto lo:0 iface lo:0 inet static address 192.168.0.105 netmask 255.255.255.255 pre-up sysctl -p > /dev/null |

И затем поднимите интерфейс:

webserver1/webserver2:

ifup lo:0

Наконец, создайте файл ldirector.html — его проверяют балансировщики, чтобы убедиться, что Apache на нодах отвечает. Предполагая, что корень сайта — /var/www:

webserver1/webserver2:

vi /var/www/ldirector.html 

| Test Page |

Мини-методика тестирования

  • Проверить, что активный балансировщик отвечает на виртуальный IP: curl http://192.168.0.105/ldirector.html
  • Отключить сетевой интерфейс или остановить ldirectord на активном узле и убедиться, что виртуальный IP переехал на резервный узел.
  • Проверить, что на бэкендах настроена страница /var/www/ldirector.html и она возвращает ожидаемый контент.

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

  • Виртуальный IP 192.168.0.105 присутствует только на активном балансировщике.
  • ipvsadm на активном узле показывает виртуальный сервис и бэкенды.
  • ldirectord и ipvs_syncmaster запущены на активном узле и остановлены на резервном.
  • Две Apache‑ноды подняли lo:0 с адресом 192.168.0.105 и отвечают на /ldirector.html.

Чек-лист ролей

  • Сисадмин:
    • Установить iproute на веб-серверах.
    • Изменить /etc/sysctl.conf и применить sysctl -p.
    • Добавить lo:0 в /etc/network/interfaces и ifup lo:0.
  • Админ балансировщиков:
    • Проверить ip addr, ipvsadm, статус ldirectord и master.
    • Протестировать переключение активного узла (failover).
  • QA/инженер по доступности:
    • Запустить curl-запросы к 192.168.0.105/ldirector.html и проверить ответы и время отклика.

Глоссарий (в одну строку)

  • ldirectord: демон для управления виртуальными сервисами IPVS и проверки состояния бэкендов.
  • ipvsadm: утилита управления Linux Virtual Server (IPVS).
  • lo:0: виртуальный локальный интерфейс с отдельным IP, используемый для приёма трафика на бэкенде.

Примечания

  • Если балансировщики используют другой механизм HA, адаптируйте команды проверки соответственно.
  • Не изменяйте реальные IP-адреса в конфигурациях без согласования с сетевой командой.

Резюме: выполните проверки на балансировщиках, примените ARP-параметры и добавьте виртуальный интерфейс на веб-серверах, после чего убедитесь, что страница /ldirector.html доступна через виртуальный IP.

Поделиться: 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 быстро