Создать группу бэкендов
Чтобы создать группу бэкендов:
-
В консоли управления
выберите каталог, в котором будет создаваться группа бэкендов. -
В списке сервисов выберите Application Load Balancer.
-
На панели слева выберите
Группы бэкендов. -
Нажмите кнопку Создать группу бэкендов.
-
Введите имя группы бэкендов.
-
Выберите тип группы бэкендов:
HTTP
— для HTTP- или HTTPS-трафика.gRPC
— для HTTP- или HTTPS-трафика с вызовами gRPC -процедур.Stream
— для TCP-трафика без шифрования или с TLS-шифрованием.
-
(Опционально) Включите привязку сессий. Для группы бэкендов типа
HTTP
илиgRPC
доступны следующие режимы привязки:По IP-адресу
.По HTTP-заголовку
.По cookie
.
Для группы бэкендов типа
Stream
сессии привязываются по IP-адресу клиента.Примечание
Сейчас привязка сессий работает, только если в группе бэкендов активен (имеет положительный вес) один бэкенд, он состоит из одной или нескольких целевых групп и для него выбран режим балансировки
MAGLEV_HASH
. -
В блоке Бэкенды нажмите кнопку Добавить. Задайте настройки бэкенда:
-
Имя бэкенда.
-
Вес — относительный вес бэкенда при распределении трафика. Если опция в поле отключена, эндпоинты бэкенда не будут получать трафик (вес будет равен 0).
-
Тип бэкенда (для группы бэкендов типа
HTTP
):Целевая группа
(целевые группы Application Load Balancer) илиБакет
(бакет Object Storage). Для группы бэкендов типаgRPC
или Stream тип любого бэкенда —Целевая группа
. Подробнее о типах бэкендов см. в разделе Типы бэкендов. -
Следующие настройки доступны только для типа бэкенда Целевая группа:
-
В блоке Настройки балансировки:
- Режим балансировки — режим распределения трафика между эндпоинтами бэкенда.
- Порог для режима паники — доля работоспособных эндпоинтов, при которой включится режим паники: балансировщик будет распределять запросы во все эндпоинты, не учитывая результаты проверок состояния.
- Локализация трафика — доля входящего трафика, которую узел балансировщика передает бэкендам из своей зоны доступности. Остальной трафик поровну делится между другими зонами. Подробнее см. в разделе Локализация трафика.
- Строгая локализация — опция, при которой балансировщик будет отвечать ошибкой (
503 Service Unavailable
), если в зоне доступности, где был принят запрос, нет работающих бэкендов приложения.
-
В блоке Настройки протокола:
-
Для группы бэкендов типа
HTTP
:-
HTTP/2 — опция использования протокола HTTP/2 при отправке запросов к бэкенду для группы бэкендов типа
HTTP
. По умолчанию используется протокол версии 1.1. Группы бэкендов типаgRPC
поддерживают только HTTP/2-соединения. -
Протокол — протокол соединений с бэкендом:
HTTP
(без шифрования) илиHTTPS
(с TLS-шифрованием). Для протоколаHTTPS
укажите:- SNI. Доменное имя хоста для Server Name Indication — расширения TLS.
- Доверенный корневой сертификат. Укажите корневой сертификат
(Root CA) для цепочки сертификатов, установленной на эндпоинтах бэкендов. Поддерживаются сертификаты стандарта X.509 в формате PEM .
-
-
Для группы бэкендов типа
gRPC
:- Протокол — протокол соединений с бэкендом:
Открытый
илиЗашифрованный
. Для зашифрованного протокола укажите SNI и Доверенный корневой сертификат (см. выше).
- Протокол — протокол соединений с бэкендом:
-
Для группы бэкендов типа
Stream
:-
Протокол PROXY — опция, при которой балансировщик передает бэкенду метаданные своего соединения с клиентом, в том числе его IP-адрес, по протоколу PROXY от HAProxy
. -
Протокол — протокол соединений с бэкендом:
Открытый
илиЗашифрованный
. Для зашифрованного протокола укажите SNI и Доверенный корневой сертификат (см. выше).
-
-
-
-
Следующие настройки доступны только для типа бэкенда Бакет для типа группы бэкендов HTTP:
- Формат указания бакета — выберите одну из опций:
Список
илиID
. - Бакет — выберите из списка или укажите идентификатор нужного бакета.
- Формат указания бакета — выберите одну из опций:
-
В блоке HTTP проверка состояния, gRPC проверка состояния или Stream проверка состояния:
-
Таймаут, с — время ожидания ответа.
-
Интервал — интервал отправки проверочных запросов.
-
Порог работоспособности — количество последовательных успешных проверок, после которых эндпоинт считается работоспособным. Игнорируется в начале работы балансировщика: достаточно одной проверки.
-
Порог неработоспособности — количество последовательных неуспешных проверок, после которых эндпоинт считается неработоспособным. Игнорируется, если бэкенд один раз ответил HTTP-кодом состояния
503 Service Unavailable
: он сразу считается неработоспособным. -
Порт.
-
Тип — протокол, по которому будет осуществляться проверка:
HTTP
,gRPC
илиStream
. Тип проверки может не совпадать с типом группы бэкендов. Дополнительно укажите:-
Для типа
HTTP
:- Путь — путь в URI запроса к эндпоинту.
- Authority — значение заголовка
Host
для HTTP/1.1 или псевдо-заголовка:authority
для HTTP/2, которое будет передаваться эндпоинтам бэкенда при проверках состояния. - HTTP/2 — опция использования протокола HTTP версии 2.
-
Для типа
gRPC
:- Имя сервиса — имя проверяемого gRPC-сервиса. Если сервис не указан, проверяется общее состояние бэкенда.
-
Для типа
Stream
:- Отправка — данные, которые отправляются на эндпоинт для проверки состояния.
- Получение — данные, которые должны поступить с эндпоинта, чтобы он прошел проверку состояния.
-
Внимание
Если в зоне доступности все бэкенды с подключенными проверками состояния не прошли проверки, трафик перестанет поступать в зону, даже если в ней есть рабочие бэкенды без проверок состояния.
Рекомендуется настраивать проверки состояния для всех бэкендов.
Чтобы добавить проверку состояния, внизу блока бэкенда нажмите кнопку Добавить проверку состояния и задайте настройки проверки.
Чтобы удалить проверку состояния, напротив заголовка HTTP проверка состояния, gRPC проверка состояния или Stream проверка состояния нажмите
и выберите Удалить. -
-
-
Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Примечание
Создать группу бэкендов типа gRPC
можно в консоли управления
-
Посмотрите описание команды CLI для создания группы бэкендов:
yc alb backend-group create --help
-
Создайте группу бэкендов, выполнив команду:
yc alb backend-group create <имя_группы_бэкендов>
Результат:
id: a5dg2cv4ngne******** name: test-backend-group folder_id: aoerb349v3h4******** created_at: "2021-02-11T20:46:21.688940670Z"
-
Добавьте в группу бэкенд и проверку состояния.
Внимание
Если в зоне доступности все бэкенды с подключенными проверками состояния не прошли проверки, трафик перестанет поступать в зону, даже если в ней есть рабочие бэкенды без проверок состояния.
Рекомендуется настраивать проверки состояния для всех бэкендов.
Внутри группы все бэкенды должны быть одного типа —
HTTP
,gRPC
илиStream
.HTTP-бэкенд
Выполните команду:
yc alb backend-group add-http-backend \ --backend-group-name <имя_бэкенд_группы> \ --name <имя_добавляемого_бэкенда> \ --weight <вес_бэкенда> \ --port <порт_бэкенда> \ --target-group-id=<идентификатор_целевой_группы> \ --panic-threshold 90 \ --http-healthcheck port=80,healthy-threshold=10,unhealthy-threshold=15,\ timeout=10s,interval=2s,host=<адрес_хоста>,path=<путь>
Где:
--panic-threshold
— порог для режима паники.--http-healthcheck
— параметры проверки состояния ресурсов:port
— порт.healthy-threshold
— порог работоспособности.unhealthy-threshold
— порог неработоспособности.timeout
— таймаут.interval
— интервал.host
— адрес хоста.path
— путь.
Результат:
id: a5dqkr2mk3rr******** name: <имя_группы_бэкендов> folder_id: aoe197919j8e******** http: backends: - name: <имя_бэкенда> backend_weight: "1" load_balancing_config: panic_threshold: "90" port: "80" target_groups: target_group_ids: - a5d2iap3nue9******** healthchecks: - timeout: 10s interval: 2s healthy_threshold: "10" unhealthy_threshold: "15" healthcheck_port: "80" http: host: <адрес_хоста> path: <путь> created_at: "2021-02-11T20:46:21.688940670Z"
gRPC-бэкенд
Выполните команду:
yc alb backend-group add-grpc-backend \ --backend-group-name <имя_бэкенд_группы> \ --name <имя_добавляемого_бэкенда> \ --weight <вес_бэкенда> \ --port <порт_бэкенда> \ --target-group-id=<идентификатор_целевой_группы> \ --panic-threshold 90 \ --grpc-healthcheck port=80,healthy-threshold=10,unhealthy-threshold=15,\ timeout=10s,interval=2s,service-name=<имя_gRPC-сервиса>
Где:
--panic-threshold
— порог для режима паники.--grpc-healthcheck
— параметры проверки состояния ресурсов:port
— порт.healthy-threshold
— порог работоспособности.unhealthy-threshold
— порог неработоспособности.timeout
— таймаут.interval
— интервал.service-name
— имя проверяемого gRPC-сервиса. Если сервис не указан, проверяется общее состояние бэкенда.
Результат:
id: a5dqkr2mk3rr******** name: <имя_группы_бэкендов> folder_id: aoe197919j8e******** grpc: backends: - name: <имя_бэкенда> backend_weight: "12" load_balancing_config: panic_threshold: "90" port: "80" target_groups: target_group_ids: - a5d2iap3nue9******** healthchecks: - timeout: 10s interval: 2s healthy_threshold: "10" unhealthy_threshold: "15" healthcheck_port: "80" grpc: service_name: <имя_gRPC_сервиса> created_at: "2023-06-17T13:04:08.567141292Z"
Stream-бэкенд
Выполните команду:
yc alb backend-group add-stream-backend \ --backend-group-name <имя_бэкенд_группы> \ --name <имя_добавляемого_бэкенда> \ --weight <вес_бэкенда> \ --port <порт_бэкенда> \ --target-group-id=<идентификатор_целевой_группы> \ --panic-threshold 90 \ --enable-proxy-protocol \ --stream-healthcheck port=80,healthy-threshold=10,unhealthy-threshold=15,\ timeout=10s,interval=2s,send-text=<данные_к_эндпоинту>,receive-text=<данные_от_эндпоинта>
Где:
--panic-threshold
— порог для режима паники.--enable-proxy-protocol
— опция, при которой балансировщик передает бэкенду метаданные своего соединения с клиентом, в том числе его IP-адрес, по протоколу PROXY от HAProxy . Если опция не задана, в бэкенд передается только IP-адрес балансировщика.--stream-healthcheck
— параметры проверки состояния ресурсов:port
— порт.healthy-threshold
— порог работоспособности.unhealthy-threshold
— порог неработоспособности.timeout
— таймаут.interval
— интервал.send-text
— данные, которые отправляются на эндпоинт для проверки состояния.receive-text
— данные, которые должны поступить с эндпоинта, чтобы он прошел проверку состояния.
Результат:
id: ds77tero4f5******** name: <имя_группы_бэкендов> folder_id: b1gu6g9ielh6******** stream: backends: - name: <имя_бэкенда> backend_weight: "1" port: "80" target_groups: target_group_ids: - ds7eof3r2cte******** healthchecks: - timeout: 10s interval: 2s healthy_threshold: "10" unhealthy_threshold: "15" healthcheck_port: "80" stream: send: text: <данные_к_эндпоинту> receive: text: <данные_от_эндпоинта> enable_proxy_protocol: true created_at: "2022-04-06T09:17:57.104324513Z"
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле Terraform параметры ресурса, который необходимо создать:
resource "yandex_alb_backend_group" "test-backend-group" { name = "<имя_группы_бэкендов>" session_affinity { connection { source_ip = <режим_привязки_сессий_по_IP-адресу> } } stream_backend { name = "<имя_бэкенда>" weight = 1 port = 80 target_group_ids = ["<идентификатор_целевой_группы>"] load_balancing_config { panic_threshold = 90 } enable_proxy_protocol = true healthcheck { timeout = "10s" interval = "2s" healthy_threshold = 10 unhealthy_threshold = 15 stream_healthcheck { send = "<данные_к_эндпоинту>" receive = "<данные_от_эндпоинта>" } } } }
Где:
yandex_alb_backend_group
— параметры группы бэкендов:-
name
— имя группы бэкендов. -
session_affinity
— настройки привязки сессий (необязательный параметр).Примечание
Сейчас привязка сессий работает, только если в группе бэкендов активен (имеет положительный вес) один бэкенд, он состоит из одной или нескольких целевых групп и для него выбран режим балансировки
MAGLEV_HASH
.connection
— режим привязки сессий по IP-адресу (source_ip
). Может принимать значенияtrue
илиfalse
. Также доступны режимыcookie
иheader
. Должен быть указан только один из режимов. Если группа бэкендов имеет типStream
(состоит из ресурсовstream_backend
), то привязка сессий может иметь только режимconnection
.
-
http_backend
,grpc_backend
иstream_backend
— тип бэкенда. Внутри группы все бэкенды должны быть одного типа —HTTP
,gRPC
илиStream
.
-
Параметры бэкенда:
-
name
— имя бэкенда. -
port
— порт бэкенда. -
weight
— вес бэкенда. -
target_group_ids
— идентификатор целевой группы. Получить список доступных целевых групп можно с помощью команды CLI:yc alb target-group list
. -
load_balancing_config
— параметры балансировки:panic_threshold
— порог для режима паники.
-
enable_proxy_protocol
— опция, при которой балансировщик передает бэкенду метаданные своего соединения с клиентом, в том числе его IP-адрес, по протоколу PROXY от HAProxy . Если опция не задана, в бэкенд передается только IP-адрес балансировщика. Параметр доступен только для бэкендов типаStream
. -
healthcheck
— параметры проверки состояния:timeout
— таймаут.interval
— интервал.healthy_threshold
— порог работоспособности.unhealthy_threshold
— порог неработоспособности.http_healthcheck
— параметры проверки состояния типаHTTP
:path
— путь.host
— адрес хоста.
grpc_healthcheck
— параметры проверки состояния типаgRPC
:service_name
— имя проверяемого gRPC-сервиса. Если сервис не указан, проверяется общее состояние бэкенда.
stream_healthcheck
— параметры проверки состояния типаStream
:send
— данные, которые отправляются на эндпоинт для проверки состояния.receive
— данные, которые должны поступить с эндпоинта, чтобы он прошел проверку состояния.
Внимание
Если в зоне доступности все бэкенды с подключенными проверками состояния не прошли проверки, трафик перестанет поступать в зону, даже если в ней есть рабочие бэкенды без проверок состояния.
Рекомендуется настраивать проверки состояния для всех бэкендов.
Подробную информацию о параметрах ресурса
yandex_alb_backend_group
см. в документации провайдера Terraform . -
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно в консоли управления
или с помощью команды CLI:yc alb backend-group list
-
Воспользуйтесь методом REST API create для ресурса BackendGroup или вызовом gRPC API BackendGroupService/Create.