Версия 6.2 |
||||||||||||||||||||||||||||||||
|
|
DSR (Direct Server Response, Прямой Ответ Сервера) является наиболее предпочтительным методом Балансировки Нагрузки при крупных установках. При использовании этого метода каждый Сервер настроен для использования VIP (Виртуального адреса IP) в качестве локального. Это позволяет каждому серверу принимать пакеты, адресованные на адреса VIP, и отвечать клиентам, используя VIP в качестве адреса отправителя.
Серверы не должны отвечать на запросы arp на эти адреса VIP. Вместо них на эти запросы отвечает балансировщик, и, таким образом, все входящие пакеты присылаются на балансировщик, который перенаправляет их на Серверы. Перепосылаемые пакеты адресуются прямо на MAC адрес Сервера, без изменения адреса назначения, которым остаётся VIP.
Обратите внимание: Из-за того, что для перенаправления входящих пакетов используются MAC адреса, Балансировщик Нагрузки и все балансируемые серверы (обычно - Фронтенд-Серверы Кластера CommuniGate Pro) должны входить в один сегмент сети; между Балансировщиком Нагрузки и этими серверами не должно быть никакого Маршрутизатора.
Для использования DSR метода создайте "псевдоним" для сетевого интерфейса "внутренней петли" (loopback network interface) каждого Фронтенд-Сервера. Стандартным адресом для внутренней петли является 127.0.0.1; создайте для неё псевдоним с VIP адресом и маской сети 255.255.255.255:Убедитесь, что ядро настроено так, что оно не рассылает пакеты ARP для этого lo интерфейса (так что VIP адреса не связаны ни с каким Фронтенд-Сервером в таблицах ARP). В зависимости от версии ядра Linux, в файл /etc/sysctl.conf должны быть добавлены следующие команды:
Если вы планируете использовать несколько балансируемых адресов VIP, либо если вы планируете использовать программный балансировщик IPVS под управлением CommuniGate Pro, не надо создавать файлы /etc/sysconfig/network-scripts/ifcfg-lo:n.
Создайте файл /etc/sysconfig/vipaddrs и запишите все адреса VIP в него - как адреса или подсети, по одному адресу на строку. Например:
Обратите внимание: строки, начинающиеся с символа # игнорируются. Их можно использовать в качестве комментариев.
Обратите внимание: маски подсетей должны быть 24 бита или более.
Создайте следующие конфигурационные сценарии:
Обратите внимание: при создании сетевого "псевдонима", откройте через Веб Интерфейс Администратора в разделе Установки страницу Общее -> Информация и нажмите на кнопку Обновить, что бы сервер мог обнаружить добавленный IP адрес.
DSR метод прозрачен для всех протоколов, работающих через TCP (включая SIP через TCP/TLS) и для него не требуются никакие дополнительные настройки Сервера CommuniGate Pro: когда на локальный VIP адрес принимается TCP соединение, исходящие пакеты для такого соединения будут всегда иметь в качестве адреса источника тот же самый VIP адрес.
Для того, что бы использовать DSR метод для SIP UDP, конфигурация Фроненд-Серверов CommuniGate Pro должна быть изменена:Балансировщик нагрузки обычно отправляет некоторые запросы на сервера в своих "балансировочных пулах". При неполучении ответа Балансировщик Нагрузки удаляет сервер из пула и распределяет входящие запросы на оставшиеся в пуле сервера.
Если SIP-Ферма включена, собственные запросы Балансировщика Нагрузки могут передаваться на другие сервера, входящие в SIP-Ферму, и, таким образом, ответы будут поступать от других серверов. Это может привести к тому, что Балансировщик Нагрузки решит, что сервер, которому был послан запрос, не функционирует и исключит этот сервер из обслуживаемого набора серверов.Конфигурация "без NAT", с "нормальной" балансировкой нагрузки для POP, IMAP и "DSR" балансировкой нагрузки для SIP (UDP/TCP), SMTP, HTTPU (8100).
Конфигурация Балансировщика Нагрузки:Startup configuration: ! server predictor round-robin ! server real fe5 64.173.55.180 port pop3 port pop3 keepalive port imap4 port imap4 keepalive port 5060 port 5060 keepalive port smtp port smtp keepalive port 8100 port 8100 keepalive ! server real fe6 64.173.55.181 port pop3 port pop3 keepalive port imap4 port imap4 keepalive port 5060 port 5060 keepalive port smtp port smtp keepalive port 8100 port 8100 keepalive ! server real fe7 64.173.55.182 port pop3 port pop3 keepalive port imap4 port imap4 keepalive port 5060 port 5060 keepalive port smtp port smtp keepalive port 8100 port 8100 keepalive ! server real fe8 64.173.55.183 port pop3 port pop3 keepalive port imap4 port imap4 keepalive port 5060 port 5060 keepalive port smtp port smtp keepalive port 8100 port 8100 keepalive ! ! server virtual vip1 64.173.55.164 predictor round-robin port pop3 port imap4 port 5060 port 5060 dsr port smtp port smtp dsr port 8100 port 8100 dsr bind pop3 fe5 pop3 fe6 pop3 fe7 pop3 fe8 pop3 bind imap4 fe5 imap4 fe6 imap4 fe7 imap4 fe8 imap4 bind 5060 fe8 5060 fe7 5060 fe6 5060 fe5 5060 bind smtp fe8 smtp fe7 smtp fe6 smtp fe5 smtp bind 8100 fe5 8100 fe6 8100 fe7 8100 fe8 8100 ! ip address 64.173.55.176 255.255.255.224 ip default-gateway 64.173.55.161 ip dns server-address 64.173.55.167 ip mu act endОбратите внимание: вы НЕ должны использовать port 5060 sip-switch, port sip sip-proxy-server или другие "умные" (уровня приложений) возможности Балансировщика Нагрузки.
script start "Alteon AD3" 4 /**** DO NOT EDIT THIS LINE! /* Configuration dump taken 21:06:57 Mon Apr 9, 2007 /* Version 10.0.33.4, Base MAC address 00:60:cf:41:f5:20 /c/sys tnet ena smtp "mail.communigate.com" mnet 64.173.55.160 mmask 255.255.255.224 /c/sys/user admpw "ffe90d3859680828b6a4e6f39ad8abdace262413d5fe6d181d2d199b1aac22a6" /c/ip/if 1 ena addr 64.173.55.176 mask 255.255.255.224 broad 64.173.55.191 /c/ip/gw 1 ena addr 64.173.55.161 /c/ip/dns prima 64.173.55.167 /c/sys/ntp on dlight ena server 64.173.55.167 /c/slb on /c/slb/real 5 ena rip 64.173.55.180 addport 110 addport 143 addport 5060 addport 25 addport 8100 submac ena /c/slb/real 6 ena rip 64.173.55.181 addport 110 addport 143 addport 5060 addport 25 addport 8100 submac ena /c/slb/real 7 ena rip 64.173.55.182 addport 110 addport 143 addport 5060 addport 25 addport 8100 submac ena /c/slb/real 8 ena rip 64.173.55.183 addport 110 addport 143 addport 5060 addport 25 addport 8100 submac ena /c/slb/group 1 add 5 add 6 add 7 add 8 name "all-services" /c/slb/port 1 client ena /c/slb/port 5 server ena /c/slb/port 6 server ena /c/slb/port 7 server ena /c/slb/port 8 server ena /c/slb/virt 1 ena vip 64.173.55.164 /c/slb/virt 1/service pop3 group 1 /c/slb/virt 1/service imap4 group 1 /c/slb/virt 1/service 5060 group 1 udp enabled udp stateless nonat ena /c/slb/virt 1/service smtp group 1 nonat ena /c/slb/virt 1/service 8100 group 1 nonat ena / script end /**** DO NOT EDIT THIS LINE!
vlan external { tag 4093 interfaces 1.1 1.2 } stp instance 0 { vlans external interfaces 1.1 external path cost 20K internal path cost 20K 1.2 external path cost 20K internal path cost 20K } self allow { default udp snmp proto ospf tcp https udp domain tcp domain tcp ssh } self 64.173.55.176 { netmask 255.255.255.224 vlan external allow all }
partition Common { description "Repository for system objects and shared objects." } route default inet { gateway 64.173.55.161 } monitor MySMTP { defaults from smtp dest *:smtp debug "no" } profile fastL4 CGS_fastL4 { defaults from fastL4 idle timeout 60 tcp handshake timeout 15 tcp close timeout 60 loose initiation disable loose close enable software syncookie disable } pool Frontends { monitor all MySMTP and gateway_icmp members 64.173.55.180:any 64.173.55.181:any 64.173.55.182:any 64.173.55.183:any } node * monitor MySMTP
virtual address 64.173.55.164 { floating disable unit 0 } virtual External { translate address disable pool Frontends destination 64.173.55.164:any profiles CGS_fastL4 }
Для каждого члена кластера, который способен создавать исходящие соединения TCP (обычно это - Фронтенд-Серверы), надо выбрать диапазон портов для использования в исходящих соединениях. Эти диапазоны не должны пересекаться. Например, для первого Члена кластера выберите диапазон 33000-33999, для второго - 34000-34999, и так далее.
Убедитесь, что ОС сервера настроена так, что выбранные диапазоны портов исключены из диапазона динамических портов. Например, следующие команды могут быть использованы в ОС Linux Для получения диапазона динамических портов:На каждом Члене Кластера откройте настройки Сети в разделе Установок Интерфейса Администратора и укажите выбранный диапазон портов TCP. Отключите настройку "Использовать только для Медиа Прокси", чтобы Сервер CommuniGate Pro использовал порты из этого диапазона для создания исходящих соединений TCP с определённым адреом источника.
Настройте Балансировщик Нагрузки: все пакеты, адресованные на адрес VIP на порт с номером из выбранного диапазона, должны быть отправлены на соотвествующий Член Кластера.
Выберите члены кластера, на которые будет распределяться входящий трафик. В конфигурации фронтенд-бэкенд для этого обычно используются все фронтенды.
Убедитесь, что на всех выбранных членах кластера в качестве алиаса на локальном интерфейсе (loopback) настроен адрес VIP (смотрите выше).
Через Веб Интерфейс Администратора откройте в разделе Установки страницу Кластер и выберите группу балансировки A для выбранных серверов:Как только первая программа-помощник Балансировки Нагрузки запущена на Члене Кластера, Контроллер Кластера активизирует Балансировщик и направляет весь входящий трафик на этот член Кластера, который распределяет этот трафик на сервер Группы Балансировки этого члена Кластера.
Если член Кластера с активным Балансировщиком Нагрузки останавливается или переключается в состояние "не готов", Контроллер Кластера запускает другой балансировщик нагрузки в этой же группе (если такой есть).
Пакет CommuniGate Pro для Linux включает в себя сценарий оболочки Services/IPVSHelper.sh, который может быть использован для управления балансировщиком нагрузки IPVS.
Этот сценарий ожидает наличия файла с адресами VIP в /etc/sysconfig/vipaddrs и настройки локального интерфейса (loopback) с этими адресами (смотрите выше).
Укажите $Services/IPVSHelper.sh parameters в качестве пути к приложению-помощику Внешнего Балансировщика Нагрузки, и запустите его, включив маркер Помощника.Обратите внимание: рекомендуется использовать ядро Linux версии 3.5.3-1 или новее. При использовании более ранних версий ядра, соединения TCP к активному балансировщику нагрузки прерываются, когда другой сервер становится активным балансировщиком.
Обратите внимание: если на члене Кластера включить программу-помощник внешнего балансировщика нагрузки, а потом выключить. некторые активные соединения могут быть разорваны. Если вы не планируете снова запускать программу-помощник, перезапустите службу ipvsadm в ОС, или полностью отключите её.