Создать сетевой балансировщик
Примечание
Перед созданием сетевого балансировщика создайте целевую группу, чтобы подключить ее к балансировщику.
Задать тип балансировщика (внешний или внутренний) можно только при его создании. В дальнейшем изменить тип балансировщика нельзя.
Чтобы создать сетевой балансировщик:
-
В консоли управления
выберите каталог, где требуется создать балансировщик. -
В списке сервисов выберите Network Load Balancer.
-
Нажмите кнопку Создать сетевой балансировщик.
-
Задайте имя балансировщика. Требования к имени:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
Назначьте балансировщику публичный IP-адрес. Адрес можно назначить автоматически или выбрать из списка зарезервированных адресов.
-
В блоке Обработчики добавьте обработчик:
-
Нажмите кнопку Добавить обработчик.
-
В открывшемся окне задайте параметры обработчика:
-
Имя.
-
Протокол —
TCP
илиUDP
.Примечание
По умолчанию обработчик работает по протоколу TCP. Чтобы использовать протокол UDP, запросите в технической поддержке
эту возможность. -
Порт, на котором обработчик будет принимать входящий трафик. Возможные значения: от
1
до32767
. -
Целевой порт, куда балансировщик будет направлять трафик. Возможные значения: от
1
до32767
.
-
-
Нажмите кнопку Добавить.
-
-
В блоке Целевые группы добавьте целевую группу:
-
Нажмите кнопку Добавить целевую группу.
-
Выберите целевую группу или создайте новую:
- В поле Целевая группа выберите
Создать целевую группу. - В открывшемся окне введите имя целевой группы.
- Добавьте в целевую группу виртуальные машины.
- Нажмите кнопку Создать.
- В поле Целевая группа выберите
-
(Опционально) Под блоком Проверка состояния нажмите кнопку Настроить. В открывшемся окне задайте параметры проверки состояния ресурсов:
- Имя.
- Тип —
HTTP
илиTCP
. Для проверки по протоколу HTTP в поле Путь укажите адрес URL, по которому будут выполняться проверки. - Порт для проверок. Возможные значения: от
1
до32767
. - Время ожидания, c — время ожидания ответа в секундах. Возможные значения: от
1
до60
. Интервал должен быть больше времени ожидания минимум на 1 секунду. - Интервал, c — интервал выполнения проверок состояния в секундах. Возможные значения: от
1
до60
. - Порог работоспособности — количество успешных проверок, после которого виртуальная машина будет считаться готовой к приему трафика.
- Порог неработоспособности — количество проваленных проверок, после которого на виртуальную машину перестанет подаваться трафик.
-
Нажмите кнопку Применить.
-
-
Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания сетевого балансировщика:
yc load-balancer network-load-balancer create --help
-
Чтобы создать балансировщик с обработчиком и целевой группой, выполните команду:
yc load-balancer network-load-balancer create <имя_балансировщика> \ --listener name=<имя_обработчика>,` `port=<порт>,` `target-port=<целевой_порт>,` `protocol=<протокол>,` `external-ip-version=<версия_IP-адреса> \ --target-group target-group-id=<идентификатор_целевой_группы>,` `healthcheck-name=<имя_проверки_состояния>,` `healthcheck-interval=<интервал_между_проверками>s,` `healthcheck-timeout=<таймаут_проверки_состояния>s,` `healthcheck-unhealthythreshold=<количество_проваленных_проверок_для_статуса_Unhealthy>,` `healthcheck-healthythreshold=<количество_успешных_проверок_для_статуса_Healthy>,` `healthcheck-tcp-port=<TCP-порт>,` `healthcheck-http-port=<HTTP-порт>,` `healthcheck-http-path=<адрес_URL>
Где:
--listener
— параметры обработчика:name
— имя обработчика.port
— порт, на котором сетевой балансировщик будет принимать входящий трафик. Возможные значения: от1
до32767
.target-port
— целевой порт, куда балансировщик будет направлять трафик. Возможные значения: от1
до32767
.protocol
— протокол, по которому будет работать обработчик:tcp
илиudp
.external-address
— внешний IP-адрес обработчика.external-ip-version
— версия внешнего IP-адреса:ipv4
илиipv6
.
-
--target-group
— параметры целевой группы и настройки проверки состояния её ресурсов:-
target-group-id
— идентификатор целевой группы.Чтобы узнать идентификатор, получите список целевых групп в каталоге.
-
healthcheck-name
— имя проверки состояния ресурсов. -
healthcheck-interval
— интервал выполнения проверок состояния в секундах. Возможные значения: от1s
до60s
. Интервал должен быть больше времени ожидания минимум на 1 секунду. -
healthcheck-timeout
— время ожидания ответа в секундах. Возможные значения: от1s
до60s
. -
healthcheck-unhealthythreshold
— количество проваленных проверок, после которого на виртуальную машину перестанет подаваться трафик. Возможные значения: от2
до10
. -
healthcheck-healthythreshold
— количество успешных проверок, после которого виртуальная машина будет считаться готовой к приему трафика. Возможные значения: от2
до10
. -
healthcheck-tcp-port
— порт для проверок по протоколу TCP. Возможные значения: от1
до32767
. -
healthcheck-http-port
— порт для проверок по протоколу HTTP. Возможные значения: от1
до32767
. -
healthcheck-http-path
— адрес URL, по которому будут выполняться проверки по протоколу HTTP.
Указывать одновременно
healthcheck-tcp-port
иhealthcheck-http-port
нельзя.Важно
Для параметров
healthcheck-interval
иhealthcheck-timeout
необходимо указывать значение в формате<время_в_секундах>s
, например20s
. -
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурса сетевого балансировщика.
Пример структуры конфигурационного файла:
resource "yandex_lb_network_load_balancer" "foo" { name = "<имя_балансировщика>" deletion_protection = "<защита_от_удаления>" listener { name = "<имя_обработчика>" port = <номер_порта> external_address_spec { ip_version = "<версия_IP-адреса>" } } attached_target_group { target_group_id = "<идентификатор_целевой_группы>" healthcheck { name = "<имя_проверки_состояния>" http_options { port = <номер_порта> path = "<адрес_URL>" } } } }
Где:
name
— имя сетевого балансировщика.deletion_protection
— защита сетевого балансировщика от удаления. Пока опция включена, балансировщик удалить невозможно. Включенная защита от удаления не запрещает удалять обработчики и целевые группы балансировщика. Значение по умолчаниюfalse
.listener
— параметры обработчика:name
— имя обработчика.port
— порт, на котором сетевой балансировщик будет принимать входящий трафик, из диапазона от1
до32767
.external_address_spec
— спецификация обработчика для внешнего балансировщика:ip_version
— описание внешнего IP-адреса. Укажите версию IP-адреса:ipv4
илиipv6
. По умолчаниюipv4
.
attached_target_group
— описание параметров целевой группы для сетевого балансировщика:-
target_group_id
— идентификатор целевой группы.Чтобы узнать идентификатор, получите список целевых групп в каталоге.
-
healthcheck
— описание параметров проверки состояния. Укажите имя, порт из диапазона от1
до32767
и путь, по которому будут выполняться проверки.
-
Более подробную информацию о параметрах ресурса
yandex_lb_network_load_balancer
в Terraform см. в документации провайдера . -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте сетевой балансировщик.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Чтобы создать новый сетевой балансировщик, воспользуйтесь методом REST API create для ресурса NetworkLoadBalancer или вызовом gRPC API NetworkLoadBalancerService/Create.
Примеры
Создание сетевого балансировщика без обработчика
Создайте сетевой балансировщик без обработчика и целевой группы с именем test-load-balancer-1
.
Выполните следующую команду:
yc load-balancer network-load-balancer create test-load-balancer-1
-
Опишите в конфигурационном файле параметры ресурса без блока
listener
иattached_target_group
:resource "yandex_lb_network_load_balancer" "foo" { name = "test-load-balancer-1" deletion_protection = "true" }
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте сетевой балансировщик.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Воспользуйтесь методом API create и передайте в теле запроса:
{
"folderId": "<идентификатор_каталога>",
"name": "test-load-balancer-1",
"type": "EXTERNAL"
}
Создание сетевого балансировщика с обработчиком и подключенной целевой группой
Создайте сетевой балансировщик с обработчиком и подключенной целевой группой с тестовыми характеристиками:
- Имя
test-load-balancer-2
. - Параметры обработчика:
- Имя
test-listener
. - Порт
80
. - Целевой порт
81
. - Протокол
TCP
. - Версия IP-адреса
ipv4
.
- Имя
- Идентификатор целевой группы
enpu2l7q9kth********
. - Параметры проверки состояния ресурсов целевой группы:
- Имя
http
. - Интервал выполнения проверок состояния
2
секунды. - Время ожидания ответа
1
секунда. - Порог неработоспособности
2
. - Порог работоспособности
2
. - Порт для проверок по протоколу HTTP
80
. - Адрес URL, по которому будут выполняться проверки
/
.
- Имя
Выполните следующую команду:
yc load-balancer network-load-balancer create test-load-balancer-2 \
--listener name=test-listener,`
`port=80,`
`target-port=81,`
`protocol=tcp,`
`external-ip-version=ipv4 \
--target-group target-group-id=enpu2l7q9kth********,`
`healthcheck-name=http,`
`healthcheck-interval=2s,`
`healthcheck-timeout=1s,`
`healthcheck-unhealthythreshold=2,`
`healthcheck-healthythreshold=2,`
`healthcheck-http-port=80,`
`healthcheck-http-path=/
-
Опишите в конфигурационном файле параметры ресурса с блоками
listener
иattached_target_group
:resource "yandex_lb_network_load_balancer" "foo" { name = "test-load-balancer-2" deletion_protection = "true" listener { name = "test-listener" port = 80 target_port = 81 protocol = "tcp" external_address_spec { ip_version = "ipv4" } } attached_target_group { target_group_id = "enpu2l7q9kth********" healthcheck { name = "http" interval = 2 timeout = 1 unhealthy_threshold = 2 healthy_threshold = 2 http_options { port = 80 path = "/" } } } }
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте сетевой балансировщик.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Воспользуйтесь методом API create и передайте в теле запроса:
{
"folderId": "<идентификатор_каталога>",
"name": "test-load-balancer-2",
"type": "EXTERNAL",
"listenerSpecs": [
{
"name": "test-listener",
"port": "80",
"protocol": "TCP",
"targetPort": "81",
"externalAddressSpec": {
"ipVersion": "IPV4"
}
}
],
"attachedTargetGroups": [
{
"targetGroupId": "b7rjtf12qdee********",
"healthChecks": [
{
"name": "http",
"interval": "2s",
"timeout": "1s",
"unhealthyThreshold": "2",
"healthyThreshold": "2",
"httpOptions": {
"port": "80",
"path": "/"
}
}
]
}
]
}