Loadbalancer Octavia - это компонент OpenStack, который предоставляет возможность распределения сетевой нагрузки между несколькими виртуальными машинами (VMs) или другими конечными узлами в вашей инфраструктуре OpenStack.. Loadbalancer может быть использован для распределения трафика между несколькими экземплярами приложения или сервиса, улучшая производительность, отказоустойчивость и масштабируемость системы.
Виртуальный инстанс, который служит в качестве непосредственного балансировщика нагрузки в Octavia называется Amphora. Он автоматически создается при создании балансировщика и управляется Octavia и обеспечивает эффективное распределение трафика между серверами. Amphora работает в изолированной среде, обеспечивая безопасность и изоляцию между различными балансировщиками.
Использование Load Balancer Octavia позволяет улучшить производительность, отказоустойчивость и масштабируемость ваших приложений, обеспечивая балансировку нагрузки и автоматическую регулировку трафика в вашем облаке OpenStack.
Создание и настройка балансировщика OpenStack происходит в рамках услуги Public Cloud (IaaS)
Мы покажем наиболее часто используемый способ создания HTTP балансировщика c перенаправлением на определенный URL с помощью Openstack Horizon, так же продублируем данные действия через OpenStack CLI
OpenStack Horizon - это веб-интерфейс, предоставляющий графический доступ к функциям и ресурсам OpenStack для управления облачной инфраструктурой.
Подробнее о том, как авторизоваться в Horizon можно узнать в статье Как создать виртуальный сервер в панели управления Horizon
Шаг – 1 зайдите в панель управления Horison
Шаг – 2 Нажмите на вкладку "Сеть" - > "Load Balancers" -> "Create Load Balancer"
Шаг – 3 В открывшемся окне создания балансировщика введите требуемые данные:
1 - Название балансировщика
2 - Описание балансировщика
3 - Выберите тип инстанса [подразумевает два варианта 1. Standalone(не отказоустойчивый, с одним amphora-инстансом) и 2. Active-standby(отказоуйсточивый балансировщик с двумя amphora-инстансами)]
4 - Выберите подсеть, в которой будет создан балансировщик. Важно, чтобы в данной сети были свободные IP-адреса.
5 - Поле "IP address" вы можете оставить пустым, айпи будет выделен из стека IP-адресов указанной подсети. Либо, если вы желаете присвоить свой IP из сети Openstack, укажите его.
6 - Создайте слушателя (Listener Details) -> Укажите название, протокол( в нашем случае HTTP) -> В следующей вкладке "Pool Details" в разделе "Сreate Pool" выберите "Нет", в данном примере пул нам не потребуется -> Create Load Balancer
7 - Балансировщик создан, дождитесь статус Active в "Provisioning Status" для продолжения настройки.
Шаг – 4 Настройка баллансировщика
1 - Добавляем L7 правило для слушателя, которое будет перенаправлять запрос на другой ресурс(редирект).
Выберите ваш балансировщик -> Listeners -> Выберите созданный балансировщик(клик на него)
2 - В открывшемся окне перейдите во вкладку L7 Policies -> Create L7 Policy
3 - Создадим L7 policy
В открывшемся окне укажите:
- Название политики
- Описание
- Действие( в нашем демонстрационном случае - REDIRECT_TO_URL )
- Укажите Redirect URL
- Position выставится автоматически со значением - 1.
- Create L7 Policy !
На этом создание и настройка балансировщика завершена.
Шаг – 5 Выполняем проверку с помощью curl
$ curl -I <loadbalancer_ip>
Запрос успешно перенаправляется.
openstack loadbalancer create --name <loadbalancer> --vip-subnet-id <subnet_id> --description "description"
openstack loadbalancer listener create --protocol HTTP --protocol-port 80 --name <name for listener> <loadbalancer>
openstack loadbalancer l7policy create --action REDIRECT_TO_URL --redirect-url "https://domain.com" --name <name for policy> <listener>
openstack loadbalancer l7rule create --compare-type STARTS_WITH --type PATH --value "/" <policy-name>
Этот набор инструкций предоставляет простое и эффективное решение для создания базового балансировщика нагрузки HTTP с использованием Octavia. Рекомендуется следовать указаниям шаг за шагом для обеспечения корректного развертывания и обеспечения надежной балансировки веб-трафика между вашими серверами.
Шаг – 1 подготовьте платформу, с которой вы будете управлять вашим Public Cloud, и установите утилиту openstack.
Это может быть готовый виртуальный сервер или даже персональный компьютер.
Вы можете сделать это с помощью инструкции Создание сервера через CLI (командную строку)
Шаг – 2 Создание балансировщика нагрузки
создайте балансировщик нагрузки с именем <lb1>, который будет доступен из интернета:
openstack loadbalancer create --name <lb1> --vip-subnet-id <public-subnet>
Подождите, пока балансировщик нагрузки не получит статусы ACTIVE и ONLINE.
openstack loadbalancer show <lb1>
Шаг – 3 Создание прослушивателя
Создайте прослушиватель с именем <listener1>, который будет прослушивать входящие HTTP-запросы на порту 80.
openstack loadbalancer listener create --name <listener1> --protocol HTTP --protocol-port 80 <lb1>
Шаг – 4 Создание пула
Создайте пул с именем <pool1>, который будет служить пулом по умолчанию для прослушивателя <listener1>.
openstack loadbalancer pool create --name <pool1> --lb-algorithm ROUND_ROBIN --listener <listener1> --protocol HTTP
Шаг – 5 Добавление членов пула
Добавьте сервера <192.0.2.10> и <192.0.2.11>, настроенные с приложением на порту 80, в пул <pool1>.
openstack loadbalancer member create --subnet-id <private-subnet> --address 192.0.2.10 --protocol-port 80 <pool1>
openstack loadbalancer member create --subnet-id <private-subnet> --address 192.0.2.11 --protocol-port 80 <pool1>
Шаг – 6 Проверку балансировщика можно выполнить способом, описанным выше:
$ curl -I <loadbalancer_ip>