Всем привет!
Сегодня будем учиться настраивать балансировщик нагрузки (Load Balancer) в панели управления vCloud Director, которая используется в IaaS-сервисе CloudLITE.ru.
Как следует из названия, данный инструмент балансирует трафик веб-ресурса между несколькими серверами по заданному алгоритму и протоколу. Поскольку нагрузка распределяется между серверами, выполняющими одинаковую функцию (например, web-сервер), при выходе из строя одного из серверов нагрузка перераспределится между оставшимися в строю. Таким образом, балансировщик увеличивает отказоустойчивость сайта. В общем, штука полезная для сайтов, которые размещаются в облаке, особенно для интернет-магазинов.
![image](https://habrastorage.org/files/4df/1f2/cf3/4df1f2cf33604c98bd5d21da8424da87.jpg)
Функцию балансировщика нагрузки в панели vCloud Director выполняет vShield Edge. Этот сервис работает как транслятор адресов (NAT), на нем настраивается Firewall, VPN, DHCP и статическая маршрутизация.
Чтобы все заработало, при настройке прописываем следующее:
Pool Servers — IP адреса серверов (виртуальных машин), между которыми и балансируется нагрузка. На этом же шаге мы укажем протокол(HTTP, HTTPS, TCP), по которому балансировщик обращается к серверам, и параметры для отслеживания доступности виртуальных машин. На основании этого мониторинга будет приниматься решение о перенаправлении трафика на работающий сервер в случае сбоя.
Virtual Servers (Virtual IP) – внешний IP-адрес, через который пользователи получают доступ к ресурсам, размещенным на виртуальных машинах (Pool Servers).
Ниже примерная схема, как это может выглядеть для условного сайта.
![image](https://habrastorage.org/files/373/439/62b/37343962b7db4ba494a63ba96df0867e.png)
Приступим к настройке. На старте нам понадобятся:
— vShield Edge, к которому подключена внешняя сеть.
— сеть уровня организации, в которой находятся как минимум две виртуальные машины (простите за капитанство :)).
В сервисе CloudLITE.ru все это создается автоматически, но если вы пользуетесь vCloud Director где-то в другом месте, то вот подробная инструкции для настройки сети.
— внешний IP-адрес или их диапазон. Посмотреть это можно в свойствах vShield Edge. В нашем случае это 92.242.44.150. Записали его куда-нибудь.
— внутренний IP виртуальных машин, которые будут участвовать в балансировке. Для этого заходим во вкладку My Cloud, открываем vApp c нужными ВМ. Ищем нужную информацию в соответствующем столбце.
![image](https://habrastorage.org/files/6d3/ccd/0ba/6d3ccd0ba2514d98b68c345208a30a4f.png)
Итак, поехали настраивать:
1. Заходим в раздел Administration и кликаем на виртуальный дата-центр.
![image](https://habrastorage.org/files/10e/e68/016/10ee680165b24e31a6ebc1dfd90c0f68.png)
2. Переходим на вкладку Edge Gateways. Кликаем правой кнопкой на Edge и выбираем Edge Gateway Services.
![image](https://habrastorage.org/files/e98/adb/772/e98adb7725ed493f8387f2ae40917ec3.png)
3. В новом окне переходим на вкладку Load Balancer. Сначала необходимо добавить пул виртуальных машин (серверов), между которыми будем балансировать нагрузку. Для этого кликаем на Pool Servers и нажимаем Add.
![image](https://habrastorage.org/files/bc9/1bd/9ac/bc91bd9ac4ca4605a2d397cbb3997d5d.png)
4. Прописываем название пула и его описание, если нужно.
![image](https://habrastorage.org/files/d92/6f7/280/d926f72802264d50a6841d6dbdf11889.png)
5. Далее выбираем, по какому протоколу будут доступны сервера (HTTP, HTTPS, TCP), порты и метод балансировки, т.е. алгоритм, согласно которому трафик будет распределяться между виртуальными машинами. Доступны следующие методы:
— IP Hash: все запросы с одного и того же IP-адреса будут попадать на один и тот же сервер из пула
— Round Robin: запросы распределяются по очереди между серверами в зависимости от заданного веса.
— URI: все запросы к одному и тому же адресу будут попадать на 1 виртуальную машину. Применимо только для серверов, доступных по протоколу http.
— Least Connected: новый запрос будет направляться на наименее загруженный сервер.
Например, выберем протокол http, Port 80, метод Round Robin.
![image](https://habrastorage.org/files/132/226/626/13222662650a42cfad1e16ef5901dd56.png)
6. На следующем этапе устанавливаем параметры, по которым будет производиться мониторинг доступности серверов данного пула:
— порт
— протокол
— интервал между обращениями (interval)
— интервал, в течение которого должен быть получен ответ от сервера (timeout)
— необходимое количество успешных обращений (health threshold)
— допустимое количество неудачных обращений до сообщения о сбое сервера (unhealth threshold).
Тут можно подкрутить дефолтные значения, главное — не переусердствовать и не выставлять, например, для поля timeout 1 сек. :)
В поле URI for HTTP service указываем адрес, по которому балансировщик будет проверять состояние сервера. Можно оставить как есть (/).Если не ищем легких путей, то можно создать статическую веб-страничку для каждого сервера. В этом случае ответ 200 OK означает, что все работает.
![image](https://habrastorage.org/files/8c6/457/8fc/8c64578fcfc64f43b8c43d32b11c29bc.png)
7. Далее в созданный пул добавляем IP-адреса виртуальных машин (Members). Для этого нажимаем Add и вносим в соответствующее поле IP адреса машин, между которыми будет осуществляться балансировка. Например, 192.168.1.2 и 192.168.1.3.
В Ratio Weight указываем вес сервера в балансировке. Если для первого сервера укажем вес 1, а для второго 2, то на второй сервер будет приходить в 2 раза больше обращений.
Если поставить 0 – сервер не будет участвовать в балансировке.
![image](https://habrastorage.org/files/dba/85f/5c4/dba85f5c4d86469fbcac1156eee709db.png)
Добавляем вторую виртуальную машину и жмем Next.
![image](https://habrastorage.org/files/d1f/2a0/f98/d1f2a0f986ed45dcb215659189d4d258.png)
8. На вкладке Ready to Complete проверяем все еще раз и жмем Finish.
![image](https://habrastorage.org/files/747/139/b48/747139b482a845b98a7b9bd350614c37.png)
9. Возвращаемся на исходную страницу и переходим во вкладку Virtual Servers. Нажимаем Add.
![image](https://habrastorage.org/files/b51/475/b07/b51475b079bb485584b21bacc9653558.png)
10. Прописываем имя виртуального сервера.
— в поле Applied On выбираем сеть (внешнюю!). В нашем случае это cloudlite-internet-2.
— IP адрес назначаем из Sub-Allocated IP Pool (тот, что мы смотрели тут)
— Выбираем пул серверов, созданный на предыдущем шаге.
Если есть необходимость, чтобы каждый клиент попадал на тот сервер, на который он обращался в первый раз, выбираем Persistence Method Cookie. Когда все добавили, жмем ОК.
![image](https://habrastorage.org/files/d54/50e/d6a/d5450ed6a6ec4607b473458053f4b631.png)
11. Не забываем нажать ОК на главной странице.
С самим балансировщиком все. Если до этого не настраивали Firewall, то стоит сделать это – пропишите правила для него таким образом, чтобы он пропускал нужный трафик (подробная инструкция тут ).
Надеюсь, этот инструмент облегчить жизнь вам и посетителям вашего веб-ресурса. Если остались вопросы, задавайте в комментариях. И заходите в CloudLITE.ru, чтобы пощупать все своими руками ;)
Сегодня будем учиться настраивать балансировщик нагрузки (Load Balancer) в панели управления vCloud Director, которая используется в IaaS-сервисе CloudLITE.ru.
Как следует из названия, данный инструмент балансирует трафик веб-ресурса между несколькими серверами по заданному алгоритму и протоколу. Поскольку нагрузка распределяется между серверами, выполняющими одинаковую функцию (например, web-сервер), при выходе из строя одного из серверов нагрузка перераспределится между оставшимися в строю. Таким образом, балансировщик увеличивает отказоустойчивость сайта. В общем, штука полезная для сайтов, которые размещаются в облаке, особенно для интернет-магазинов.
![image](https://habrastorage.org/files/4df/1f2/cf3/4df1f2cf33604c98bd5d21da8424da87.jpg)
Как работает?
Функцию балансировщика нагрузки в панели vCloud Director выполняет vShield Edge. Этот сервис работает как транслятор адресов (NAT), на нем настраивается Firewall, VPN, DHCP и статическая маршрутизация.
Чтобы все заработало, при настройке прописываем следующее:
Pool Servers — IP адреса серверов (виртуальных машин), между которыми и балансируется нагрузка. На этом же шаге мы укажем протокол(HTTP, HTTPS, TCP), по которому балансировщик обращается к серверам, и параметры для отслеживания доступности виртуальных машин. На основании этого мониторинга будет приниматься решение о перенаправлении трафика на работающий сервер в случае сбоя.
Virtual Servers (Virtual IP) – внешний IP-адрес, через который пользователи получают доступ к ресурсам, размещенным на виртуальных машинах (Pool Servers).
Ниже примерная схема, как это может выглядеть для условного сайта.
![image](https://habrastorage.org/files/373/439/62b/37343962b7db4ba494a63ba96df0867e.png)
Инструкция
Приступим к настройке. На старте нам понадобятся:
— vShield Edge, к которому подключена внешняя сеть.
— сеть уровня организации, в которой находятся как минимум две виртуальные машины (простите за капитанство :)).
В сервисе CloudLITE.ru все это создается автоматически, но если вы пользуетесь vCloud Director где-то в другом месте, то вот подробная инструкции для настройки сети.
— внешний IP-адрес или их диапазон. Посмотреть это можно в свойствах vShield Edge. В нашем случае это 92.242.44.150. Записали его куда-нибудь.
— внутренний IP виртуальных машин, которые будут участвовать в балансировке. Для этого заходим во вкладку My Cloud, открываем vApp c нужными ВМ. Ищем нужную информацию в соответствующем столбце.
![image](https://habrastorage.org/files/6d3/ccd/0ba/6d3ccd0ba2514d98b68c345208a30a4f.png)
Итак, поехали настраивать:
1. Заходим в раздел Administration и кликаем на виртуальный дата-центр.
![image](https://habrastorage.org/files/10e/e68/016/10ee680165b24e31a6ebc1dfd90c0f68.png)
2. Переходим на вкладку Edge Gateways. Кликаем правой кнопкой на Edge и выбираем Edge Gateway Services.
![image](https://habrastorage.org/files/e98/adb/772/e98adb7725ed493f8387f2ae40917ec3.png)
3. В новом окне переходим на вкладку Load Balancer. Сначала необходимо добавить пул виртуальных машин (серверов), между которыми будем балансировать нагрузку. Для этого кликаем на Pool Servers и нажимаем Add.
![image](https://habrastorage.org/files/bc9/1bd/9ac/bc91bd9ac4ca4605a2d397cbb3997d5d.png)
4. Прописываем название пула и его описание, если нужно.
![image](https://habrastorage.org/files/d92/6f7/280/d926f72802264d50a6841d6dbdf11889.png)
5. Далее выбираем, по какому протоколу будут доступны сервера (HTTP, HTTPS, TCP), порты и метод балансировки, т.е. алгоритм, согласно которому трафик будет распределяться между виртуальными машинами. Доступны следующие методы:
— IP Hash: все запросы с одного и того же IP-адреса будут попадать на один и тот же сервер из пула
— Round Robin: запросы распределяются по очереди между серверами в зависимости от заданного веса.
— URI: все запросы к одному и тому же адресу будут попадать на 1 виртуальную машину. Применимо только для серверов, доступных по протоколу http.
— Least Connected: новый запрос будет направляться на наименее загруженный сервер.
Например, выберем протокол http, Port 80, метод Round Robin.
![image](https://habrastorage.org/files/132/226/626/13222662650a42cfad1e16ef5901dd56.png)
6. На следующем этапе устанавливаем параметры, по которым будет производиться мониторинг доступности серверов данного пула:
— порт
— протокол
— интервал между обращениями (interval)
— интервал, в течение которого должен быть получен ответ от сервера (timeout)
— необходимое количество успешных обращений (health threshold)
— допустимое количество неудачных обращений до сообщения о сбое сервера (unhealth threshold).
Тут можно подкрутить дефолтные значения, главное — не переусердствовать и не выставлять, например, для поля timeout 1 сек. :)
В поле URI for HTTP service указываем адрес, по которому балансировщик будет проверять состояние сервера. Можно оставить как есть (/).Если не ищем легких путей, то можно создать статическую веб-страничку для каждого сервера. В этом случае ответ 200 OK означает, что все работает.
![image](https://habrastorage.org/files/8c6/457/8fc/8c64578fcfc64f43b8c43d32b11c29bc.png)
7. Далее в созданный пул добавляем IP-адреса виртуальных машин (Members). Для этого нажимаем Add и вносим в соответствующее поле IP адреса машин, между которыми будет осуществляться балансировка. Например, 192.168.1.2 и 192.168.1.3.
В Ratio Weight указываем вес сервера в балансировке. Если для первого сервера укажем вес 1, а для второго 2, то на второй сервер будет приходить в 2 раза больше обращений.
Если поставить 0 – сервер не будет участвовать в балансировке.
![image](https://habrastorage.org/files/dba/85f/5c4/dba85f5c4d86469fbcac1156eee709db.png)
Добавляем вторую виртуальную машину и жмем Next.
![image](https://habrastorage.org/files/d1f/2a0/f98/d1f2a0f986ed45dcb215659189d4d258.png)
8. На вкладке Ready to Complete проверяем все еще раз и жмем Finish.
![image](https://habrastorage.org/files/747/139/b48/747139b482a845b98a7b9bd350614c37.png)
9. Возвращаемся на исходную страницу и переходим во вкладку Virtual Servers. Нажимаем Add.
![image](https://habrastorage.org/files/b51/475/b07/b51475b079bb485584b21bacc9653558.png)
10. Прописываем имя виртуального сервера.
— в поле Applied On выбираем сеть (внешнюю!). В нашем случае это cloudlite-internet-2.
— IP адрес назначаем из Sub-Allocated IP Pool (тот, что мы смотрели тут)
— Выбираем пул серверов, созданный на предыдущем шаге.
Если есть необходимость, чтобы каждый клиент попадал на тот сервер, на который он обращался в первый раз, выбираем Persistence Method Cookie. Когда все добавили, жмем ОК.
![image](https://habrastorage.org/files/d54/50e/d6a/d5450ed6a6ec4607b473458053f4b631.png)
11. Не забываем нажать ОК на главной странице.
С самим балансировщиком все. Если до этого не настраивали Firewall, то стоит сделать это – пропишите правила для него таким образом, чтобы он пропускал нужный трафик (подробная инструкция тут ).
Надеюсь, этот инструмент облегчить жизнь вам и посетителям вашего веб-ресурса. Если остались вопросы, задавайте в комментариях. И заходите в CloudLITE.ru, чтобы пощупать все своими руками ;)