Создать внутренний сетевой балансировщик
Примечание
Чтобы создать внутренний сетевой балансировщик, необходима роль load-balancer.privateAdmin.
Задать тип балансировщика (внешний или внутренний) можно только при его создании. В дальнейшем изменить тип балансировщика нельзя.
Чтобы создать внутренний сетевой балансировщик:
-
В консоли управления
выберите каталог, где нужно создать балансировщик. -
Перейдите в сервис Network Load Balancer.
-
Нажмите кнопку Создать сетевой балансировщик.
-
В поле Имя укажите имя балансировщика. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
В поле Тип выберите
Внутренний. -
(Опционально) В поле Дополнительно включите защиту балансировщика от удаления.
-
В блоке Обработчики добавьте обработчик:
- Нажмите кнопку Добавить обработчик.
- В открывшемся окне задайте параметры обработчика:
-
Имя.
-
Подсеть, в которой балансировщик будет перенаправлять трафик.
-
В поле Внутренний IPv4 адрес выберите способ назначения обработчику IP-адреса, на котором балансировщик будет принимать трафик:
-
Автоматически— чтобы обработчику был автоматически назначен свободный IP-адрес из диапазона выбранной подсети. -
Список— чтобы вручную зарезервировать в выбранной подсети нужный IP-адрес для обработчика.В появившемся поле IP-адрес выберите зарезервированный ранее IP-адрес или нажмите кнопку Зарезервировать, чтобы зарезервировать новый. В открывшемся окне задайте параметры резервируемого IP-адреса:
- Имя.
- Внутрений IPv4 адрес — укажите свободный IP-адрес в диапазоне подсети, выбранной для обработчика.
- (Опционально) В поле Дополнительно включите защиту резервируемого IP-адреса от удаления.
- Нажмите кнопку Создать.
-
-
В поле Протокол выберите
TCPилиUDP.Примечание
По умолчанию обработчик работает по протоколу TCP. Чтобы использовать протокол UDP, запросите в технической поддержке
эту возможность. -
Порт, на котором обработчик будет принимать входящий трафик. Возможные значения: от
1до32767. -
Целевой порт, куда балансировщик будет направлять трафик. Возможные значения: от
1до32767.
-
- Нажмите кнопку Добавить.
-
В блоке Целевые группы добавьте целевую группу:
- Нажмите кнопку Добавить целевую группу.
- Выберите целевую группу или создайте новую:
- В поле Целевая группа выберите
Создать целевую группу. - В открывшемся окне введите имя целевой группы.
- Добавьте в целевую группу виртуальные машины.
- Нажмите кнопку Создать.
- В поле Целевая группа выберите
- (Опционально) Под блоком Проверка состояния нажмите кнопку Настроить. В открывшемся окне задайте параметры проверки состояния ресурсов:
-
Имя.
-
В поле Тип выберите один из вариантов:
HTTP. Дополнительно в поле Путь укажите путь, по которому будут выполняться проверки.TCP.HTTP/2. Дополнительно в полях Хост и Путь укажите адрес хоста и путь, по которому будут выполняться проверки.HTTPS. Дополнительно в полях Хост и Путь укажите адрес хоста и путь, по которому будут выполняться проверки.GRPC. Дополнительно в полях Имя сервиса и Хост укажите данные вашего gRPC-сервиса.
-
Порт — номер порта для проверок. Возможные значения: от
1до32767. -
Время ожидания, c — время ожидания ответа в секундах.
-
Интервал, c — интервал выполнения проверок состояния в секундах.
-
Порог работоспособности — количество успешных проверок, после которого виртуальная машина будет считаться готовой к приему трафика.
-
Порог неработоспособности — количество проваленных проверок, после которого на виртуальную машину перестанет подаваться трафик.
-
- Нажмите кнопку Применить.
-
Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --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-адреса>,` `internal-address=<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. -
internal-address— IP-адрес обработчика, не занятый другими ресурсами и относящийся к диапазону подсети, которая указана в свойствеinternal-subnet-id.Если свойство
internal-addressне задано, обработчику внутреннего сетевого балансировщика назначается случайный IP-адрес из диапазона адресов выбранной подсети.
-
-
--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. -
Подробнее о команде
yc load-balancer network-load-balancer createчитайте в справочнике Yandex Cloud CLI.
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-адреса>" address = "<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. -
address— IP-адрес обработчика, не занятый другими ресурсами и относящийся к диапазону подсети, которая указана в полеsubnet_id.Если значение поля
addressне задано, обработчику внутреннего сетевого балансировщика назначается случайный IP-адрес из диапазона адресов выбранной подсети.
-
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. - IP-адрес обработчика
192.168.1.25.
- Имя
- Идентификатор целевой группы
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,`
`internal-address=192.168.1.25 \
--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" address = "192.168.1.25" } } 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",
"address": "192.168.1.25"
}
}
],
"attachedTargetGroups": [
{
"targetGroupId": "enpu2l7q9kth********",
"healthChecks": [
{
"name": "http",
"interval": "2s",
"timeout": "1s",
"unhealthyThreshold": "2",
"healthyThreshold": "2",
"httpOptions": {
"port": "80",
"path": "/"
}
}
]
}
]
}