Как начать работать с Yandex Application Load Balancer
Примечание
В регионе Казахстан доступна только зона доступности kz1-a
.
Yandex Application Load Balancer служит для распределения запросов по бэкендам ваших сетевых приложений и терминирования TLS-шифрования. Application Load Balancer работает на 7-м уровне модели OSI
С помощью этой инструкции вы развернете инфраструктуру сервиса Application Load Balancer и настроите передачу трафика на бэкенд тестового приложения.
В инфраструктуру сервиса входят компоненты:
Ниже описано как создать каждый компонент по отдельности. Также вы можете воспользоваться визардом, чтобы создавать все компоненты на одной странице.
Перед началом работы
-
Войдите в консоль управления
или зарегистрируйтесь. Если вы еще не зарегистрированы, перейдите в консоль управления и следуйте инструкциям. -
На странице Биллинг
убедитесь, что у вас подключен платежный аккаунт и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его. -
Если у вас еще нет каталога, создайте его. Во время создания каталога вы можете создать виртуальную сеть по умолчанию с подсетями во всех зонах доступности.
Примечание
В регионе Казахстан доступна только зона доступности
kz1-a
.
Создайте ВМ и запустите на ней тестовый веб-сервер
-
Создайте виртуальную машину
test-vm1
из публичного образа Ubuntu 24.04 в зоне доступностиru-central1-a
. -
Если у вас установлен интерфейс командной строки Yandex Cloud, вы можете подключиться к ВМ по OS Login:
yc compute ssh --name test-vm1
-
Запустите тестовый веб-сервер, который будет отвечать на запросы на порте
8080
:mkdir test-server; echo 'HELLO' > test-server/hello.txt; python3 -m http.server -d test-server 8080
-
Убедитесь, что веб-сервер возвращает список папок из каталога
test-server
. В терминале вашего компьютера выполните:curl --verbose <публичный_IP-адрес_ВМ>:8080
Создайте целевую группу
На ВМ из целевой группы развертываются бэкенды вашего приложения. Целевая группа будет подключена к балансировщику, чтобы на эндпоинты бэкендов вашего приложения можно было направлять запросы.
Для примера в целевой группе будет находиться только одна виртуальная машина.
- В консоли управления
выберите каталог, в котором будет создаваться целевая группа. - В списке сервисов выберите Application Load Balancer.
- В меню слева выберите Целевые группы.
- Нажмите кнопку Создать целевую группу.
- Введите имя целевой группы:
test-target-group
. - Выберите ВМ
test-vm1
. - Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
Выполните команду:
yc alb target-group create test-target-group \
--target subnet-name=<имя_подсети_ВМ>,ip-address=<внутренний_IP-адрес_ВМ>
Создайте группу бэкендов
Группы бэкендов содержат настройки балансировки трафика и проверок состояния целевых ресурсов. Создайте группу и добавьте в нее один бэкенд.
- В меню слева выберите Группы бэкендов.
- Нажмите кнопку Создать группу бэкендов.
- Введите имя группы бэкендов:
test-backend-group
. - В блоке Бэкенды нажмите кнопку Добавить. Задайте настройки бэкенда:
- Введите имя бэкенда:
backend-1
. - В списке Целевая группа выберите
test-target-group
. - Укажите Порт:
8080
.
- Введите имя бэкенда:
- Разверните поле Настройки протокола и задайте их параметры:
- Выберите тип
HTTP
.
- Выберите тип
- Нажмите кнопку Добавить проверку состояния и задайте настройки проверки:
- Таймаут, с:
1
. - Интервал:
3
. - Порог работоспособности:
2
. - Порог неработоспособности:
2
. - Тип:
HTTP
. - Путь:
/
.
- Таймаут, с:
- Нажмите кнопку Создать.
-
Создайте группу бэкендов:
yc alb backend-group create test-backend-group
-
Создайте бэкенд и проверку состояния:
yc alb backend-group add-http-backend \ --backend-group-name test-backend-group \ --name backend-1 \ --port 8080 \ --target-group-name test-target-group \ --target-group-id <идентификатор_целевой_группы> \ --http-healthcheck healthy-threshold=2,unhealthy-threshold=2,timeout=1s,interval=3s,path=/
Создайте HTTP-роутер
HTTP-роутеры определяют правила маршрутизации запросов к бэкендам и позволяют модифицировать запросы прямо на балансировщике.
- В меню слева выберите HTTP-роутеры.
- Нажмите кнопку Создать HTTP-роутер.
- Введите имя роутера:
test-http-router
. - В блоке Виртуальные хосты нажмите кнопку Добавить виртуальный хост.
- Введите имя хоста:
test-virtual-host
. - Нажмите кнопку Добавить маршрут.
- Введите Имя:
test-route
. - В поле Путь выберите
Начинается с
и укажите путь/
. - В поле Действие оставьте
Маршрутизация
. - В списке Группа бэкендов выберите
test-backend-group
. - Остальные настройки оставьте без изменений и нажмите кнопку Создать.
-
Создайте HTTP-роутер:
yc alb http-router create test-http-router
-
Создайте виртуальный хост:
yc alb virtual-host create test-virtual-host --http-router-name test-http-router
-
Добавьте маршрут:
yc alb virtual-host append-http-route test-route \ --http-router-name test-http-router \ --prefix-path-match / \ --backend-group-name test-backend-group \ --virtual-host-name test-virtual-host
Создайте L7-балансировщик
Балансировщик принимает запросы и распределяет их по ВМ из целевой группы по правилам, указанным в HTTP-роутере. Для приема трафика балансировщик использует обработчики.
Для примера будет создан балансировщик с узлом в одной подсети в одной зоне доступности.
-
В меню слева выберите Балансировщики.
-
Нажмите кнопку Создать L7-балансировщик.
-
Введите имя балансировщика:
test-load-balancer
. -
В блоке Сетевые настройки выберите сеть, в подсети которой будет размещаться узел балансировщика.
-
В блоке Размещение выберите подсеть в одной зоне доступности и включите прием трафика в этой подсети.
Остальные зоны доступности удалите, нажав
в соответствующей строке.Примечание
В регионе Казахстан доступна только зона доступности
kz1-a
. -
В блоке Обработчики нажмите кнопку Добавить обработчик. Задайте настройки обработчика:
- Введите имя обработчика:
test-listener
. - В блоке Публичный IP-адрес включите передачу трафика.
- Укажите порт
80
. - Выберите тип Автоматически.
- Введите имя обработчика:
-
В поле HTTP-роутер выберите
test-http-router
. -
Нажмите кнопку Создать.
-
Создайте балансировщик с узлом в одной подсети:
yc alb load-balancer create test-load-balancer \ --network-name <имя_сети> \ --location subnet-name=<имя_подсети_в_зоне_ru-central1-a>,zone=ru-central1-a
-
Добавьте обработчик:
yc alb load-balancer add-listener test-load-balancer \ --listener-name test-listener \ --http-router-id <идентификатор_HTTP-роутера> \ --external-ipv4-endpoint port=80
Протестируйте работу балансировщика
В терминале выполните следующую команду:
curl --verbose <публичный_IP-адрес_балансировщика>:80
В ответ должен вернуться HTTP-ответ с кодом 200
и список папок из каталога тестовой ВМ в HTML-разметке.
После этого вы можете добавить другие виртуальные машины в целевую группу, создать новые бэкенды для вашего приложения и построить маршруты до их эндпоинтов.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы, удалите их в указанном порядке: