Создать балансировщик нагруз ки
Панель управления
OpenStack CLI
Terraform
1. Выбрать конфигурацию и сеть
-
В панели управления в верхнем меню нажмите Продукты и выберите Облачные серверы.
-
Перейдите в раздел Балансировщики → вкладка Балансировщики.
-
Нажмите Создать балансировщик.
-
Выберите регион и пул, в котором будет создан бал ансировщик.
-
Выберите конфигурацию в зависимости от нагрузки на проект.
-
Введите имя балансировщика.
-
Опционально: введите комментарий — любую дополнительную информацию о балансировщике, она будет отображаться только в панели управления.
-
Опционально: чтобы иметь доступ к логам балансировщика, включите логирование. Логирование использует часть вычислительных ресурсов балансировщика.
8.1. Отметьте чекбокс Собирать технические логи балансировщика.
8.2. Выберите группу логов или создайте новую группу.
8.3. Если вы выбрали новую группу, введите ее имя.
-
Выберите подсеть:
- приватную — балансировка трафика будет производиться только внутри подсети. Можно подключить публичный IP-адрес к приватному адресу — балансировщик будет доступен из интернета через NAT;
- или публичную — балансировщик будет доступен из интернета и сможет проксировать запросы из публичной подсети к облачным серверам в приватной подсети. Если вы будете размещать облачные серве ры в этой же подсети, то выберите сеть размером от /28 или убедитесь, что в ней есть свободный IP-адрес для порта балансировщика нагрузки.
-
Укажите IP-адрес в подсети — свободный адрес, который будет назначен на балансировщик.
-
Опционально: подключите публичный IP-адрес. Если нет свободного публичного IP-адреса, создайте новый IP-адрес. Приватная подсеть, в которой вы создаете балансировщик, должна быть подготовлена для подключения публичного IP-адреса.
-
Нажмите Дальше.
2. Создать целевую группу
-
Откройте вкладку Серверы.
-
Опционально: чтобы изменить имя целевой группы, нажмите , введите имя и нажмите .
-
Выберите протокол назначения трафика, по которому балансировщик будет передавать трафик на целевую группу. Доступны следующие комбинации протоколов для приема трафика на балансировщике и назначения трафика на целевую группу:
- TCP–TCP — классическая L4-балансировка;
- TCP–PROXY — информация о клиенте не теряется и передается в отдельном заголовке соединения;
- UDP–UDP — UDP-протокол быстрее, чем TCP, но менее надежен;
- HTTP–HTTP — L7-балансировка;
- HTTPS–HTTP — L7-балансировка с шифрованием и терминацией SSL-сертификата на балансировщике.
-
Для выбранного протокола будет автоматически выбран стандартный порт — измените его при необходимости. Значение порта будет общим для всех серверов в группе.
-
Отметьте серверы, которые добавятся в целевую группу.
-
Укажите настройк и для каждого отмеченного сервера:
6.1. Выберите IP-адрес.
6.2. Опционально: измените порт.
6.3. Укажите вес сервера — это пропорциональная мера, обозначает долю запросов, которую обрабатывает сервер. Если значения весов одинаковые, то серверы обслуживают равное количество запросов. Если, например, в группе один сервер с весом «2» и два сервера с весом «1», то первый сервер получит 50% всех запросов, а другие два — по 25%. Максимальное значение веса — 256.
6.4. Опционально: чтобы направлять трафик на сервер только при недоступности остальных серверов в группе, отметьте чекбокс Резервный.
-
Откройте вкладку Алгоритм.
-
Выберите алгоритм распределения запросов — Round Robin или Least connections.
-
Опционально: чтобы включить метод Sticky Sessions, отметьте чекбокс Sticky sessions и выберите идентификатор сессии. Для идентификатора APP-cookie введите имя cookie.
-
Откройте вкладку Проверки доступности.
-
Выберите тип проверки доступности. После создания группы тип проверки изменить нельзя.
-
Если выбран тип проверки HTTP, укажите параметры запроса — метод, путь и ожидаемые коды ответа.
-
Укажите интервал между проверками — интервал в секундах, с которым балансировщик отправляет проверяющие запросы серверам.
-
Укажите таймаут соединения — максимальное время ожидания ответа в секундах, должно быть меньше интервала между проверками.
-
Укажите порог успеха — количество успешных обращений подряд, после которых сервер переводится в рабочее состояние.
-
Укажите порог неуспеха — количество неуспешных обращений подряд, после которых работа сервера приостанавливается.
-
Опционально: чтобы добавить еще одну целевую группу, нажмите Добавить целевую группу и настройте ее.
-
Нажмите Дальше.
3. Создать правила и HTTP-политики
- Выберите протокол приема трафика на балансировщ ике — TCP, UDP, HTTP или HTTPS. Доступен также вариант Prometheus для настройки мониторинга балансировщика нагрузки.
TCP- или UDP-трафик
HTTP- или HTTPS-трафик
-
Для выбранного протокола будет автоматически выбран стандартный порт, на котором балансировщик будет слушать трафик, — измените его при необходимости.
-
Опционально: введите разрешенные CIDR — IP-адреса, с которых балансировщик будет принимать трафик с выбранным протоколом и портом. Можно ввести подсеть в формате CIDR или одиночный IP-адрес с маской
/32
. Если вы оставите поле пустым, балансировщик будет принимать трафик с любых IP-адресов. Вы можете указать разрешенные IP-адреса в правиле после создания балансировщика.Если поле отсутствует, в сети балансировщика выключена ф ильтрация трафика (port security).
-
Выберите целевую группу. Доступны группы, на которые можно балансировать трафик по выбранному протоколу приема трафика.
-
Опционально: разверните блок Расширенные настройки правила и укажите настройки соединений:
- для входящих запросов на балансировщик — укажите таймаут соединения и максимум соединений;
- для запросов от балансировщика к серверам — укажите таймаут соединения, таймаут неактивности и таймаут ожидания TCP-пакетов.
-
Опционально: чтобы добавить еще одно правило, нажмите Добавить правило и повторите шаги 1-5. Количество правил не ограничено.
-
Проверьте итоговую стоимость балансировщика.
-
Нажмите Создать балансировщик.
-
Для выбранного протокола будет автоматически выбран стандартный порт, на котором балансировщик будет слушать трафик, — измените его при необходимости.
-
Если вы выбрали HTTPS-протокол, выберите сертификат для терминации HTTPS-трафика на балансировщике — выберите сертификат из менеджера секретов или загрузите новый. Подробнее в инструкции TLS(SSL)-сертификаты балансировщика нагрузки.
-
Опционально: чтобы ограничить доступ к балансировщику, введите разрешенные CIDR — IP-адреса, с которых балансировщик будет принимать трафик с выбранным протоколом и портом. Можно ввести подсеть в формате CIDR или одиночный IP-адрес с маской
/32
. Если вы оставите поле пустым, балансировщик будет принимать трафик с любых IP-адресов. Вы можете указать разрешенные IP-адреса в правиле после создания балансировщика.Если поле отсутствует, в сети балансировщика выключена фильтрация трафика (port security).
-
Опционально: отметьте заголовки HTTP-запросов, которые будут передаваться серверам.
-
Выберите целевую группу по умолчанию — туда будет направляться трафик, который не попал под HTTP-политику.
-
Создайте HTTP-политики.
-
Опционально: измените настройки соединений, для этого откройте блок Расширенные настройки правила и укажите:
- для входящих запросов на балансировщик — укажите таймаут соединения и максимум соединений;
- для запросов от балансировщика к серверам — укажите таймаут соединения, таймаут неактивности и таймаут ожидания TCP-пакетов.
-
Опционально: чтобы добавить еще одно правило, нажмите Добавить правило и повторите шаги 1-8. Количество правил не ограничено.
-
Проверьте итоговую стоимость балансировщика.
-
Нажмите Создать балансировщик.
Создать балансировщик
-
Установите компонент Octavia для работы с облачными балансировщиками нагрузки — для совместимости с версией релиза Yoga требуется версия 3.4.0:
pip3 install python-octaviaclient===3.4.0
-
Создайте балансировщик нагрузки:
openstack loadbalancer create \
--vip-subnet-id <subnet_uuid> \
--vip-address <loadbalancer_ip_address> \
--flavor <flavor> \
--name <loadbalancer_name>Укажите:
<subnet_uuid>
— ID приватной или публичной подсети, можно посмотреть с помощью командыopenstack subnet list
;<loadbalancer_ip_address>
— IP-адрес, который выделится для балансировщика нагрузки — один из свободных в подсети;<flavor>
— ID или имя флейвора. Флейворы соответствуют типам балансировщика нагрузки и определяют количество vCPU, RAM и количество инстансов балансировщика. Например,ac18763b-1fc5-457d-9fa7-b0d339ffb336
— ID для создания балансировщика с типом Продвинутый с резервированием в пуле ru-9. Список флейворов можно посмотреть с помощью командыopenstack loadbalancer flavor list -c id -c name
или в таблице Список флейворов балансировщика нагрузки во всех пулах;<loadbalancer_name>
— имя балансировщика.
-
Проверьте, что балансировщик находится в статусах
ONLINE
(параметрoperating_status
в выводе команды) иACTIVE
(provisioning_status
):openstack loadbalancer show <loadbalancer>
Укажите
<loadbalancer>
— ID или имя балансировщика, список можно посмотреть с помощью командыopenstack loadbalancer list
. -
Опц ионально: если на шаге 3 вы указали приватную подсеть, подключите публичный IP-адрес к балансировщику:
openstack floating ip set --port <loadbalancer_port_uuid> <floating_ip>
Укажите:
<loadbalancer_port_uuid>
— ID порта балан сировщика, можно посмотреть с помощью командыopenstack loadbalancer show <loadbalancer>
, значениеvip_port_id
;<floating_ip>
— публичный IP-адрес.
Создать правило, HTTP-политику и целевую группу
Для TCP- или UDP-трафика
Для HTTP- или HTTPS-трафика
-
Создайте правило:
openstack loadbalancer listener create \
--name <listener_name> \
--protocol <protocol> \
--protocol-port <port> \
[--allowed-cidr <allowed_cidr>] \
<loadbalancer>