Создать внутренний сетевой балансировщик
Примечание
Для создания внутреннего сетевого балансировщика необходима роль load-balancer.privateAdmin
.
Задать тип балансировщика (внешний или внутренний) можно только при его создании. В дальнейшем изменить тип балансировщика нельзя.
Примечание
Обработчику внутреннего сетевого балансировщика назначается случайный IP-адрес из диапазона адресов выбранной подсети.
Чтобы создать внутренний сетевой балансировщик:
-
В консоли управления
выберите каталог, где нужно создать балансировщик. -
В списке сервисов выберите Network Load Balancer.
-
Нажмите кнопку Создать сетевой балансировщик.
-
Задайте имя балансировщика. Требования к имени:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
Выберите тип балансировщика —
Внутренний
. -
В блоке Обработчики добавьте обработчик:
- Нажмите кнопку Добавить обработчик.
- В открывшемся окне задайте параметры обработчика:
-
Имя.
-
Подсеть, в которой балансировщик будет перенаправлять трафик.
-
Протокол —
TCP
илиUDP
.Примечание
По умолчанию обработчик работает по протоколу TCP. Чтобы использовать протокол UDP, запросите в технической поддержке
эту возможность. -
Порт, на котором обработчик будет принимать входящий трафик. Возможные значения: от
1
до32767
. -
Целевой порт, куда балансировщик будет направлять трафик. Возможные значения: от
1
до32767
.
-
- Нажмите кнопку Добавить.
-
В блоке Целевые группы добавьте целевую группу:
- Нажмите кнопку Добавить целевую группу.
- Выберите целевую группу или создайте новую:
- В поле Целевая группа выберите
Создать целевую группу. - В открывшемся окне введите имя целевой группы.
- Добавьте в целевую группу виртуальные машины.
- Нажмите кнопку Создать.
- В поле Целевая группа выберите
- (Опционально) Под блоком Проверка состояния нажмите кнопку Настроить. В открывшемся окне задайте параметры проверки состояния ресурсов:
- Имя.
- Тип —
HTTP
илиTCP
. Для проверки по протоколу HTTP в поле Путь укажите адрес URL, по которому будут выполняться проверки. - Порт для проверок. Возможные значения: от
1
до32767
. - Время ожидания, c — время ожидания ответа в секундах.
- Интервал, c — интервал выполнения проверок состояния в секундах.
- Порог работоспособности — количество успешных проверок, после которого виртуальная машина будет считаться готовой к приему трафика.
- Порог неработоспособности — количество проваленных проверок, после которого на виртуальную машину перестанет подаваться трафик.
- Нажмите кнопку Применить.
-
Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Перед созданием балансировщика создайте целевую группу, чтобы подключить ее к балансировщику.
-
Посмотрите описание команды CLI для создания сетевого балансировщика:
yc load-balancer network-load-balancer create --help
-
Чтобы создать внутренний балансировщик с обработчиком и целевой группой, выполните команду:
yc load-balancer network-load-balancer create <имя_балансировщика> \ --type=internal \ --listener name=<имя_обработчика>,` `port=<порт>,` `target-port=<целевой_порт>,` `protocol=<протокол>,` `internal-subnet-id=<идентификатор_подсети>,` `internal-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>
Где:
--type
— тип балансировщика.--listener
— параметры обработчика:name
— имя обработчика.port
— порт, на котором сетевой балансировщик будет принимать входящий трафик. Возможные значения: от1
до32767
.target-port
— целевой порт, куда балансировщик будет направлять трафик. Возможные значения: от1
до32767
.protocol
— протокол, по которому будет работать обработчик:tcp
илиudp
.internal-subnet-id
— идентификатор подсети.internal-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 = "<имя_балансировщика>" type = "internal" deletion_protection = "<защита_от_удаления>" listener { name = "<имя_обработчика>" port = <номер_порта> internal_address_spec { subnet_id = "<идентификатор_подсети>" ip_version = "<версия_IP-адреса>" } attached_target_group { target_group_id = "<идентификатор_целевой_группы>" healthcheck { name = "<имя_проверки_состояния>" http_options { port = <номер_порта> path = "<адрес_URL>" } } } }
Где:
name
— имя сетевого балансировщика.type
— тип сетевого балансировщика. Используйтеinternal
, чтобы создать внутренний балансировщик.deletion_protection
— защита внутреннего сетевого балансировщика от удаления. Пока опция включена, удалить балансировщик невозможно. Включенная защита от удаления не запрещает удалять обработчики и целевые группы балансировщика. Значение по умолчаниюfalse
.listener
— параметры обработчика:name
— имя обработчика.port
— порт, на котором сетевой балансировщик будет принимать входящий трафик, из диапазона от1
до32767
.internal_address_spec
— спецификация обработчика для внешнего балансировщика:subnet_id
— идентификатор подсети.ip_version
— описание внешнего IP-адреса. Укажите версию IP-адреса:ipv4
илиipv6
. По умолчаниюipv4
.
attached_target_group
— описание параметров целевой группы для сетевого балансировщика:-
target_group_id
— идентификатор целевой группы.Чтобы узнать идентификатор, получите список целевых групп в каталоге.
-
healthcheck
— описание параметров проверки состояния. Укажите имя, порт из диапазона от1
до32767
и путь, по которому будут выполняться проверки.
-
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Создайте сетевой балансировщик:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Чтобы создать внутренний сетевой балансировщик, воспользуйтесь методом REST API create для ресурса NetworkLoadBalancer или вызовом gRPC API NetworkLoadBalancerService/Create.
Примеры
Создание внутреннего сетевого балансировщика без обработчика
Создайте внутренний сетевой балансировщик без обработчика и целевой группы с именем internal-lb-test-1
.
Чтобы создать внутренний балансировщик без обработчика, выполните команду:
yc load-balancer network-load-balancer create internal-lb-test-1 \
--type=internal
-
Опишите в конфигурационном файле параметры ресурса без блока
listener
иattached_target_group
:resource "yandex_lb_network_load_balancer" "foo" { name = "internal-lb-test-1" type = "internal" deletion_protection = "true"
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте сетевой балансировщик.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Воспользуйтесь методом API create и передайте в теле запроса:
{
"folderId": "<идентификатор_каталога>",
"name": "internal-lb-test-1",
"type": "INTERNAL"
}
Создание внутреннего сетевого балансировщика с обработчиком и подключенной целевой группой
Создайте внутренний сетевой балансировщик с обработчиком и подключенной целевой группой с тестовыми характеристиками:
- Имя
internal-lb-test-2
. - Параметры обработчика:
- Имя
test-listener
. - Порт
80
. - Целевой порт
81
. - Протокол
TCP
. - Идентификатор подсети
b0cp4drld130********
. - Версия IP-адреса
ipv4
.
- Имя
- Идентификатор целевой группы
enpu2l7q9kth********
. - Параметры проверки состояния целевой группы:
- Имя
http
. - Интервал выполнения проверок состояния
2
секунды. - Время ожидания ответа
1
секунда. - Порог неработоспособности
2
. - Порог работоспособности
2
. - Порт для проверок по протоколу HTTP
80
. - Адрес URL, по которому будут выполняться проверки
/
.
- Имя
Выполните следующую команду:
yc load-balancer network-load-balancer create internal-lb-test-2 \
--type=internal \
--listener name=test-listener,`
`port=80,`
`target-port=81,`
`protocol=tcp,`
`internal-subnet-id=b0cp4drld130********,`
`internal-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" "internal-lb-test" { name = "internal-lb-test-2" type = "internal" deletion_protection = "true" listener { name = "test-listener" port = 80 target_port = 81 protocol = "tcp" internal_address_spec { subnet_id = "b0cp4drld130********" 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": "internal-lb-test-2",
"type": "INTERNAL",
"listenerSpecs": [
{
"name": "test-listener",
"port": "80",
"protocol": "TCP",
"targetPort": "81",
"internalAddressSpec": {
"subnetId": "b0cp4drld130********",
"ipVersion": "IPV4"
}
}
],
"attachedTargetGroups": [
{
"targetGroupId": "enpu2l7q9kth********",
"healthChecks": [
{
"name": "http",
"interval": "2s",
"timeout": "1s",
"unhealthyThreshold": "2",
"healthyThreshold": "2",
"httpOptions": {
"port": "80",
"path": "/"
}
}
]
}
]
}