Настройка балансировщика нагрузки в VMware vCloud Director
Всем привет!
Сегодня будем учиться настраивать балансировщик нагрузки (Load Balancer) в панели управления vCloud Director, которая используется в IaaS-сервисе CloudLITE.ru.
Как следует из названия, данный инструмент балансирует трафик веб-ресурса между несколькими серверами по заданному алгоритму и протоколу. Поскольку нагрузка распределяется между серверами, выполняющими одинаковую функцию (например, web-сервер), при выходе из строя одного из серверов нагрузка перераспределится между оставшимися в строю. Таким образом, балансировщик увеличивает отказоустойчивость сайта. В общем, штука полезная для сайтов, которые размещаются в облаке, особенно для интернет-магазинов.
Как работает?
Функцию балансировщика нагрузки в панели vCloud Director выполняет vShield Edge. Этот сервис работает как транслятор адресов (NAT), на нем настраивается Firewall, VPN, DHCP и статическая маршрутизация.Чтобы все заработало, при настройке прописываем следующее:
Pool Servers — IP адреса серверов (виртуальных машин), между которыми и балансируется нагрузка. На этом же шаге мы укажем протокол (HTTP, HTTPS, TCP), по которому балансировщик обращается к серверам, и параметры для отслеживания доступности виртуальных машин. На основании этого мониторинга будет приниматься решение о перенаправлении трафика на работающий сервер в случае сбоя.
Virtual Servers (Virtual IP) — внешний IP-адрес, через который пользователи получают доступ к ресурсам, размещенным на виртуальных машинах (Pool Servers).Ниже примерная схема, как это может выглядеть для условного сайта.
Инструкция
Приступим к настройке. На старте нам понадобятся:
— vShield Edge, к которому подключена внешняя сеть.
— сеть уровня организации, в которой находятся как минимум две виртуальные машины (простите за капитанство :)).
В сервисе CloudLITE.ru все это создается автоматически, но если вы пользуетесь vCloud Director где-то в другом месте, то вот подробная инструкции для настройки сети.
— внешний IP-адрес или их диапазон. Посмотреть это можно в свойствах vShield Edge. В нашем случае это 92.242.44.150. Записали его куда-нибудь.
— внутренний IP виртуальных машин, которые будут участвовать в балансировке. Для этого заходим во вкладку My Cloud, открываем vApp c нужными ВМ. Ищем нужную инфомрацию в соовтетствующем столбце.
Итак, поехали настраивать:
1. Заходим в раздел Administration и кликаем на виртуальный дата-центр.
2. Переходим на вкладку Edge Gateways. Кликаем правой кнопкой на Edge и выбираем Edge Gateway Services.
3. В новом окне переходим на вкладку Load Balancer. Сначала необходимо добавить пул виртуальных машин (серверов), между которыми будем балансировать нагрузку. Для этого кликаем на Pool Servers и нажимаем Add.
4. Прописываем название пула и его описание, если нужно.
5. Далее выбираем, по какому протоколу будут доступны сервера (HTTP, HTTPS, TCP), порты и метод балансировки, т.е. алгоритм, согласно которому трафик будет распределяться между виртуальными машинами. Доступны следующие методы:
— IP Hash: все запросы с одного и того же IP-адреса будут попадать на один и тот же сервер из пула— Round Robin: запросы распределяются по очереди между серверами в зависимости от заданного веса.— URI: все запросы к одному и тому же адресу будут попадать на 1 виртуальную машину. Применимо только для серверов, доступных по протоколу http.— Least Connected: новый запрос будет направляться на наименее загруженный сервер.Например, выберем протокол http, Port 80, метод Round Robin.
6. На следующем этапе устанавливаем параметры, по которым будет производиться мониторинг доступности серверов данного пула: — порт— протокол— интервал между обращениями (interval)— интервал, в течение которого должен быть получен ответ от сервера (timeout)— необходимое количество успешных обращений (health threshold)— допустимое количество неудачных обращений до сообщения о сбое сервера (unhealth threshold).
Тут можно подкрутить дефолтные значения, главное — не переусердствовать и не выставлять, например, для поля timeout 1 сек. :)
В поле URI for HTTP service указываем адрес, по которому балансировщик будет проверять состояние сервера. Можно оставить как есть (/).Если не ищем легких путей, то можно создать статическую веб-страничку для каждого сервера. В этом случае ответ 200 OK означает, что все работает.
7. Далее в созданный пул добавляем IP-адреса виртуальных машин (Members). Для этого нажимаем Add и вносим в соответствующее поле IP адреса машин, между которыми будет осуществляться балансировка. Например, 192.168.1.2 и 192.168.1.3.
В Ratio Weight указываем вес сервера в балансировке. Если для первого сервера укажем вес 1, а для второго 2, то на второй сервер будет приходить в 2 раза больше обращений.Если поставить 0 — сервер не будет участвовать в балансировке.
Добавляем вторую виртуальную машину и жмем Next.
8. На вкладке Ready to Complete проверяем все еще раз и жмем Finish.
9. Возвращаемся на исходную страницу и переходим во вкладку Virtual Servers. Нажимаем Add.
10. Прописываем имя виртуального сервера.— в поле Applied On выбираем сеть (внешнюю!). В нашем случае это cloudlite-internet-2.— IP адрес назначаем из Sub-Allocated IP Pool (тот, что мы смотрели тут)— Выбираем пул серверов, созданный на предыдущем шаге.Если есть необходимость, чтобы каждый клиент попадал на тот сервер, на который он обращался в первый раз, выбираем Persistence Method Cookie. Когда все добавили, жмем ОК.
11. Не забываем нажать ОК на главной странице.
С самим балансировщиком все. Если до этого не настраивали Firewall, то стоит сделать это — пропишите правила для него таким образом, чтобы он пропускал нужный трафик (подробная инструкция тут).
Надеюсь, этот инструмент облегчить жизнь вам и посетителям вашего веб-ресурса. Если остались вопросы, задавайте в комментариях. И заходите в CloudLITE.ru, чтобы пощупать все своими руками ;)