Создать балансировщик нагрузки
- Панель управления
- OpenStack CLI
- Terraform
В панели управления перейдите в раздел Облачная платформа → Балансировщики.
Нажмите Создать балансировщик.
Введите имя балансировщика.
Выберите регион и пул.
Выберите тип балансировщика в зависимости от нагрузки на проект.
Выберите подсеть:
- приватную — балансировка трафика будет производиться только внутри подсети. Можно подключить публичный IP-адрес к приватному адресу — балансировщик будет доступен из интернета через NAT;
- или публичную — балансировщик будет доступен из интернета и сможет проксировать запросы из публичной подсети к облачным серверам в приватной подсети. Если вы будете размещать облачные серверы в этой же подсети, то выберите сеть размером от /28 или убедитесь, что в ней выделен свободный порт — подробнее о том, какое количество портов использует балансировщик.
Укажите IP-адрес балансировщика — один из свободных адресов в подсети.
Опционально: подключите публичный IP-адрес. Если нет свободного публичного IP-адреса, создайте новый IP-адрес. Приватная подсеть, в которой вы создаете балансировщик, должна быть подключена к облачному роутеру с доступом к внешней сети.
Настройте правило балансировщика нагрузки. Укажите протокол для балансировщика и облачного сервера:
- TCP–TCP — классическая L4-балансировка;
- TCP–PROXY — информация о клиенте не теряется и передается в отдельном заголовке соединения;
- UDP–UDP — UDP-протокол быстрее, чем TCP, но менее надежен;
- HTTP–HTTP — L7-балансировка;
- HTTPS–HTTP — L7-балансировка с шифрованием и терминацией SSL-сертификата на балансировщике.
Для выбранного протокола автоматически проставится стандартный порт — измените его при необходимости. Значение порта будет общим для всех серверов в правиле.
Если вы выбрали HTTPS-протокол, добавьте в правило SSL-сертификат — так балансировщик сможет прочитать HTTPS-запрос и использовать информацию протокола HTTP для правильной балансировки. Терминация SSL-сертификата происходит на балансировщике, балансировщик передает данные серверам по HTTP.
Выберите сертификат из менеджера секретов или загрузите новый.
Откройте вкладку Серверы и отметьте серверы, которые добавятся в правило.
Для каждого сервера выберите IP-адрес и введите порт.
Укажите вес сервера — это пропорциональная мера, обозначает долю запросов, которую обрабатывает сервер. Если значения весов одинаковые, то серверы обслуживают равное количество запросов. Если, например, в правиле один сервер с весом «2» и два сервера с весом «1», то первый сервер получит 50% всех запросов, а другие два — по 25%. Максимальное значение веса — 256.
Откройте вкладку Алгоритм и выберите алгоритм распределения запросов — Round Robin или Least connections. Опционально: чтобы включить метод Sticky Sessions, отметьте чекбокс Sticky sessions.
Откройте вкладку Проверки и настройте проверки доступности.
Откройте вкладку Соединения и укажите настройки соединения между:
- входящими запросами и балансировщиком — укажите таймаут соединения, а также ограничено или нет количество соединений. При ограниченном количестве соединений укажите максимум количества запросов;
- балансировщиком и серверами — укажите таймаут соединения, таймаут неактивности и таймаут ожидания TCP-пакетов.
Опционально: откройте вкладку Заголовки и отметьте заголовки HTTP-запросов, которые будут передаваться серверам.
Опционально: чтобы добавить дополнительное правило, нажмите Добавить правило. Количество правил не ограничено.
Нажмите Создать балансировщик нагрузки.
Установите клиент Octavia:
pip install python-octaviaclient
Создайте балансировщик:
openstack loadbalancer create \
--vip-subnet-id <subnet_ID> \
--vip-address <IP_address> \
--flavor <flavor_ID> \
--name <loadbalancer_name>Укажите:
<subnet_ID>
— ID приватной или публичной подсети, можно посмотреть с помощьюopenstack subnet list
<IP_address>
— IP-адрес, который выделится для балансировщика нагрузки — один из свободных в подсети;<flavor_ID>
— ID типа балансировщика нагрузки (флейвора). Cписок флейворов можно посмотреть с помощью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
Создайте правило, укажите в нем протокол и порт для балансировщика:
openstack loadbalancer listener create \
--name <listener_name> \
--protocol <protocol> \
--protocol-port <protocol_port> \
<loadbalancer>Укажите:
<listener_name>
— имя слушателя — отобразится в панели управления как имя правила;<protocol>
— название протокола;<protocol_port>
— номер порта.
Создайте в правиле протокол для сервера и укажите алгоритм:
openstack loadbalancer pool create \
--name <pool_name> \
--lb-algorithm <algorithm> \
--listener <listener_name> \
--protocol <protocol_name>Укажите:
<pool_name>
— имя пула, не будет отображаться в панели управления;<algorithm>
— название алгоритма:ROUND_ROBIN
илиLEAST_CONNECTIONS
<listener_name>
— имя слушателя;<protocol_name>
— название протокола.
Добавьте сервер в правило и укажите его IP-адрес:
openstack loadbalancer member create \
--subnet-id <subnet_ID> \
--address <server_IP> \
--protocol-port <protocol_port> \
<pool_name>Укажите
<server_IP>
— IP-адрес сервера.Опционально: укажите параметры проверки доступности — они отразятся на странице балансировщика → вкладка Проверки:
openstack loadbalancer healthmonitor create \
--delay <delay> \
--max-retries <max_retries> \
--timeout <timeout> \
--type <protocol_name> \
<pool_name>Укажите:
<delay>
— интервал в секундах;<max_retries>
— порог успеха;<timeout>
— таймаут соединения;<protocol_name>
— тип проверки — название протокола;<pool_name>
— имя pool.
Опционально: подключите публичный IP-адрес к балансировщику:
openstack floating ip set --port <loadbalancer_port_ID> <floating_IP>
Укажите:
<loadbalancer_port_ID>
— ID порта балансировщика — значениеvip_port_id
из вывода командыopenstack loadbalancer show <loadbalancer>
<floating_IP>
— публичный IP-адрес.