Тест балансировщиков и настройка Apache-нод
Кратко: Проверьте, что активный и резервный балансировщики корректно обмениваются виртуальным IP, что процессы ldirectord и синхронизация IPVS работают, и затем настройте виртуальный IP и ARP-параметры на двух Apache‑нодах.
5 Тестирование балансировщиков
Далее проверим, что оба балансировщика работают как ожидается.
loadb1/loadb2:
ip addr sh eth0 Активный балансировщик должен показывать виртуальный IP-адрес 192.168.0.105:
| 2: eth0: |
Горячий резерв (hot-standby) должен показывать только свой основной адрес:
| 2: 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.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента