Создать L7-балансировщик
Чтобы создать L7-балансировщик:
-
В консоли управления
выберите каталог, в котором будет создан балансировщик. -
В списке сервисов выберите Application Load Balancer.
-
Нажмите кнопку Создать L7-балансировщик и выберите Вручную.
-
Введите имя балансировщика.
-
В блоке Сетевые настройки выберите:
-
Сеть, в подсетях которой будут размещаться узлы балансировщика.
-
Подходящие группы безопасности:
Без групп
— для балансировщика будет разрешен любой входящий и исходящий трафик. Это наименее безопасный вариант.Автоматически
— при создании балансировщика будет автоматически создана группа безопасности, разрешающая любой входящий трафик на порте80
и TCP-трафик для проверки состояния узлов балансировщика на порте30080
. При этом для балансировщика будет разрешен любой исходящий трафик.Из списка
— для более гибкого управления трафиком создайте свои группы безопасности. Вы можете выбрать и привязать к балансировщику одновременно до пяти групп безопасности.
-
-
В блоке Размещение выберите для узлов балансировщика подсети в разных зонах доступности и включите прием трафика в этих подсетях.
Чтобы не создавать узел балансировщика в определенной зоне доступности, нажмите
в соответствующей строке. -
(Опционально) В блоке Настройки автомасштабирования укажите ограничения на количество ресурсных единиц.
Количество единиц будет меняться автоматически с учетом нагрузки на балансировщик и установленных ограничений. От количества единиц зависит тарификация балансировщика.
-
(Опционально) В блоке Настройки логов:
-
Включите опцию Запись логов.
-
Выберите лог-группу Yandex Cloud Logging, в которую будут записываться логи балансировщика.
-
Нажмите кнопку Добавить правило отбрасывания логов и настройте его параметры:
- HTTP-коды — добавьте HTTP-коды.
- Классы HTTP-кодов — добавьте классы HTTP-кодов.
- gRPC-коды — добавьте gRPC-коды.
- Доля отбрасываемых логов — добавьте процент отбрасываемых логов.
Вы можете задать больше одного правила.
-
-
В блоке Обработчики нажмите кнопку Добавить обработчик. Задайте настройки обработчика:
-
Введите имя обработчика.
-
(Опционально) Включите опцию Публичный IP-адрес. Укажите Порт:
80
и выберите Тип:Автоматически
.Список
— в появившемся поле справа выберите адрес в выпадающем списке.
-
(Опционально) Включите опцию Внутренний IP-адрес. Укажите Порт и выберите Подсеть в выпадающем списке.
-
В блоке Приём и обработка трафика выберите тип обработчика:
HTTP
илиStream
.Для
HTTP
выберите:- Протокол:
HTTP
,HTTPS
илиПеренаправлять на HTTPS
. - HTTP-роутер в выпадающем списке.
Для
Stream
выберите протокол:Открытый
: выберите Группы бэкендов в выпадающем списке.Зашифрованный
: в блоке Основной обработчик выберите Сертификаты и Группы бэкендов в выпадающих списках.
- Протокол:
-
-
При необходимости добавьте дополнительные обработчики.
-
Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания L7-балансировщика:
yc alb load-balancer create --help
-
Выполните команду:
yc alb load-balancer create <имя_балансировщика> \ --network-name <имя_сети> \ --security-group-id <список_идентификаторов_групп_безопасности> \ --location subnet-name=<имя_подсети>,zone=<зона_доступности>
Где:
<имя_балансировщика>
— имя создаваемого балансировщика.--network-name
— имя сети, в которой создается балансировщик.--security-group-id
(опционально) — список от одного до пяти разделенных запятыми идентификаторов групп безопасности. Если не указать этот параметр, то для балансировщика будет разрешен любой трафик.--location
— подсеть и зона доступности. Опцию можно повторять несколько раз, чтобы указать разные зоны доступности и подсети.
Результат:
done (1m40s) id: a5d88ep483cm******** name: test-balancer2 folder_id: aoe197919j8e******** status: ACTIVE region_id: ru-central1 network_id: c64l1c06d151******** allocation_policy: locations: - zone_id: ru-central1-a subnet_id: buc4gsmpj8hv******** log_group_id: eolul9ap0bv0******** security_group_ids: - enpulh2tbrep******** - enpg05a3ck35******** created_at: "2021-04-26T12:12:13.624832586Z"
-
(Опционально) Установите ограничения на количество ресурсных единиц:
-
Посмотрите описание команды CLI для настройки ограничений:
yc alb load-balancer autoscale --help
-
Установите ограничения, выполнив команду:
yc alb load-balancer autoscale <имя_или_идентификатор_балансировщика> \ --min-zone-size <минимум_ресурсных_единиц_в_зоне> \ --max-size <максимум_ресурсных_единиц_в_сумме>
Где:
--min-zone-size
— минимальное количество ресурсных единиц в каждой зоне доступности. По умолчанию минимум равен 2. Указать минимальное значение меньше 2 нельзя.--max-size
— максимальное суммарное количество ресурсных единиц. По умолчанию количество не ограничено. Значение должно быть не меньше, чем количество зон доступности балансировщика, умноженное на минимальное количество ресурсных единиц в каждой зоне.
Вы можете указать в команде один из параметров или оба сразу.
Пример:
yc alb load-balancer autoscale test-balancer2 \ --min-zone-size 3 \ --max-size 10
Результат:
id: a5d88ep483cm******** name: test-balancer2 folder_id: aoe197919j8e******** status: ACTIVE region_id: ru-central1 network_id: c64l1c06d151******** allocation_policy: locations: - zone_id: ru-central1-a subnet_id: buc4gsmpj8hv******** created_at: "2022-06-02T12:12:13.624832586Z" auto_scale_policy: min_zone_size: 3 max_size: 10
-
-
(Опционально) Установите параметры записи логов в Yandex Cloud Logging:
-
Посмотрите описание команды CLI для добавления логирования в балансировщик:
yc alb load-balancer logging --help
-
Привяжите лог-группу к балансировщику и настройте правило отбрасывания логов:
yc alb load-balancer logging <имя_балансировщика> \ --log-group-id <идентификатор_лог-группы> \ --enable \ --discard codes=[<HTTP-код>,<класс_HTTP-кодов>,<gRPC-код>],percent=<доля_отбрасываемых_логов>
Где:
--log-group-id
— идентификатор лог-группы.--discard
— правило отбрасывания логов. Параметры правила:codes
— HTTP-коды, классы HTTP-кодов или gRPC-коды.percent
— доля отбрасываемых логов в процентах.
Вы можете задать больше одного правила.
Результат:
done (42s) id: ds76g83js9gf******** name: test-load-balancer ... log_options: log_group_id: e23p9bfjvsgr******** discard_rules: - http_codes: - "200" http_code_intervals: - HTTP_3XX grpc_codes: - OK discard_percent: "90"
-
-
Добавьте обработчик для L7-балансировщика:
-
HTTP-обработчик.
-
Посмотрите описание команды CLI для добавления HTTP-обработчика L7-балансировщика:
yc alb load-balancer add-listener --help
-
Добавьте обработчик, выполнив команду:
yc alb load-balancer add-listener <имя_балансировщика> \ --listener-name <имя_обработчика> \ --http-router-id <идентификатор_HTTP-роутера> \ --external-ipv4-endpoint port=<порт_обработчика>
-
-
Stream-обработчик.
-
Посмотрите описание команды CLI для добавления Stream-обработчика L7-балансировщика:
yc alb load-balancer add-stream-listener --help
-
Добавьте обработчик, выполнив команду:
yc alb load-balancer add-stream-listener <имя_балансировщика> \ --listener-name=<имя_обработчика> \ --backend-group-id=<идентификатор_группы_бэкендов> \ --external-ipv4-endpoint port=<порт_обработчика>
-
Результат после добавления двух обработчиков:
done (42s) id: ds76g8b2op3f******** name: test-load-balancer folder_id: b1gu6g9ielh6******** status: ACTIVE network_id: enp0uulja5s3******** listeners: - name: tslistener endpoints: - addresses: - external_ipv4_address: address: 51.250.64.197 ports: - "80" http: handler: http_router_id: ds7d7b14b3fs******** - name: teststreamlistener endpoints: - addresses: - external_ipv4_address: address: 51.250.64.197 ports: - "443" stream: handler: backend_group_id: ds77tero4f5h******** allocation_policy: locations: - zone_id: ru-central1-a subnet_id: e9bs1hp7lgdl******** log_group_id: ckgs4u5km3u8******** security_group_ids: - enp49ot04g63******** created_at: "2022-04-04T02:12:40.160629110Z" log_options: log_group_id: e23p9bfjvsgr******** discard_rules: - http_codes: - "200" http_code_intervals: - HTTP_3XX grpc_codes: - OK discard_percent: "90"
-
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
resource "yandex_alb_load_balancer" "test-balancer" { name = "<имя_L7-балансировщика>" network_id = "<идентификатор_сети>" security_group_ids = ["<список_идентификаторов_групп_безопасности>"] allocation_policy { location { zone_id = "<зона_доступности>" subnet_id = "<идентификатор_подсети>" } } listener { name = "<имя_обработчика>" endpoint { address { external_ipv4_address { } } ports = [ 9000 ] } http { handler { http_router_id = "<идентификатор_HTTP-роутера>" } } } log_options { log_group_id = "<идентификатор_лог-группы>" discard_rule { http_codes = ["<HTTP-код>"] http_code_intervals = ["<класс_HTTP-кодов>"] grpc_codes = ["<gRPC-код>"] discard_percent = <доля_отбрасываемых_логов> } } }
Где:
-
name
— имя L7-балансировщика. Формат имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
network_id
— идентификатор сети, в которой создается балансировщик. -
security_group_ids
(опционально) — список от одного до пяти разделенных запятыми идентификаторов групп безопасности.
Если не указать этот параметр, то для балансировщика будет разрешен любой трафик. -
allocation_policy
— описание расположения узлов L7-балансировщика. Укажите идентификаторы зоны доступности и подсети. -
listener
— описание параметров обработчика для L7-балансировщика:-
name
— имя обработчика. Формат имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
endpoint
— описание адресов и портов обработчика. Укажите внешний IPv4-адрес и порт для приема трафика. Если параметрexternal_ipv4_address
не задан, то публичный адрес будет выделен автоматически. -
http
— описание HTTP-приемника для обработчика. Укажите идентификатор HTTP-роутера. -
log_options
— (опционально) параметры записи логов в Yandex Cloud Logging:-
log_group_id
— идентификатор лог-группы. -
discard_rule
— правило отбрасывания логов:http_codes
— HTTP-коды.http_code_intervals
— классы HTTP-кодов.grpc_codes
— gRPC-коды.discard_percent
— доля отбрасываемых логов в процентах.
Вы можете задать больше одного правила.
-
-
Более подробную информацию о параметрах ресурса
yandex_alb_load_balancer
в Terraform см. в документации провайдера . -
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
или с помощью команды CLI:yc alb load-balancer list
-
Воспользуйтесь методом REST API create для ресурса LoadBalancer или вызовом gRPC API LoadBalancerService/Create.