четверг, 7 июля 2016 г.

Балансировка нагрузки Microsoft Exchange с помощью Linux Virtual Server. Часть 2.



В первой части публикации мы рассмотрели принципы работы и первоначальную  настройку балансировки нагрузки с помощью LVS (ipvs) для Exchange Server. Но остался незакрытым вопрос по обеспечении отказоустойчивости самого балансировщика. 

Итак, приступим.



Сразу уточню, что мы будем использовать самый простой вариант настройки, который предполагает проверку доступности сервиса по внешнему IP адресу (порт 539, протокол UDP). На мой взгляд, этого вполне достаточно. Я протестировал данное решение в нескольких "боевых" средах (песочницы тру-админы не используют) и не выявил недостатков. 

Обновленная схема выглядит так:



Изначально все пользователи подключаются к Exchange используя сервер "NLB LVS Primary". В случае сбоя демон pulse обнаруживает, что сервер перестал быть доступен и переносит VIP на резервный балансировщик ("NLB LVS Backup"). С данного момента он и становится основным. 

Первое, что нам надо выполнить - развернуть резервный сервер с аналогичными внешним интерфейсом (eth1). Настройки для VIP (eth1:1) добавлять не надо! Далее необходимо выполнить все шаги из первой части публикации. Очено важно, чтобы настройки на обоих балансировщиках нагрузки были идентичны!

Далее назначаем для eth1 ip адрес из той же внешней подсети, что и VIP. В нашем случае это будет 86.57.246.115.  

Теперь необходимо немного поправить конфиг LVS на основном сервере:

#vim /etc/sysconfig/ha/lvs.cf

serial_no = 1
primary = 86.57.246.110  ### RIP балансировщика
service = lvs
backup_active = 1  ### Установить значение 1
backup = 86.57.246.115  ### RIP резервного балансировщика
heartbeat = 1
heartbeat_port = 539
keepalive = 6
deadtime = 18
network = direct 
debug_level = NONE
...

Теперь переносим этот конфик на резервный сервер. В нем ничего менять нельзя. Содержимое файла lvs.cf на обоих серверах должно быть идентично!

Теперь самый опасный момент:

1. Выполнить на сервере backup:
#service pulse restart
2. Выполнить на сервере primary:
#service pulse restart
3. Проверить, что сервис стал доступен на сервере backup, выполнив там команду:
#ipvsadm -L -n

Теперь можно поиграться с произвольной остановкой серверов или устроить им другие крэш тесты, чтобы убедиться, что все работает корректно.

На этом все, если появятся вопросы, задавайте их в комментариях.








2 комментария: