Создать HTTP-роутер для gRPC-трафика
Чтобы создать HTTP-роутер и добавить в него маршрут:
-
В меню слева выберите HTTP-роутеры.
-
Нажмите кнопку Создать HTTP-роутер.
-
Введите имя HTTP-роутера.
-
В блоке Виртуальные хосты нажмите кнопку Добавить виртуальный хост.
-
Введите Имя.
-
В поле Authority введите:
*
или IP-адрес балансировщика. -
(Опционально) В поле Профиль безопасности выберите профиль безопасности сервиса Yandex Smart Web Security.
-
Нажмите кнопку Добавить маршрут и выберите Тип:
gRPC
.-
Введите Имя.
-
В блоке FQMN выберите одну из опций:
Начинается с
— для маршрутизации всех запросов, начинающихся с определенного FQMN. В поле ввода укажите/<первое_слово_названия_сервиса>
, например:/helloworld
.Совпадает с
— для маршрутизации всех запросов, совпадающих с указанным FQMN.Регулярное выражение
— для маршрутизации всех запросов, удовлетворяющих регулярному выражению стандарта RE2 .
Важно
FQMN должно начинаться с косой черты
/
и содержать часть полного названия сервиса, на который перенаправляется вызов процедуры. -
В поле Действие выберите одну из опций:
Маршрутизация
илиОтвет
. В зависимости от выбранной опции:Маршрутизация
:- В списке Группа бэкендов выберите имя группы бэкендов из того же каталога, в котором создаете HTTP-роутер.
- (Опционально) В поле Замена заголовка Host выберите одну из опций:
none
— замена не происходит.rewrite
— происходит замена на указанное значение.auto
— происходит автоматическая замена на адрес целевой виртуальной машины.
- (Опционально) В поле Таймаут, с укажите максимальное время, на которое может быть установлено соединение.
- (Опционально) В поле Таймаут простоя, с укажите максимальное время, в течение которого соединение может простаивать без передачи данных.
Ответ
:- В поле Код состояния gRPC выберите код, по которому будет осуществляться ответ.
-
-
Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания HTTP-роутера:
yc alb http-router create --help
-
Выполните команду:
yc alb http-router create <имя_HTTP-роутера>
Результат:
id: a5dcsselagj4******** name: <имя_HTTP-роутера> folder_id: aoerb349v3h4******** created_at: "2022-06-16T21:04:59.438292069Z"
-
Посмотрите описание команды CLI для создания виртуального хоста:
yc alb virtual-host create --help
-
Создайте виртуальный хост, указав имя HTTP-роутера и настройки виртуального хоста:
yc alb virtual-host create <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера> \ --authority * --security-profile-id <идентификатор_профиля_безопасности>
Где:
--http-router-name
— имя HTTP-роутера.--authority
— домены для заголовков:authority
, которые будут связаны с этим виртуальным хостом. Поддерживаются символы подстановки, например*.foo.com
или*-bar.foo.com
.--security-profile-id
— (опционально) идентификатор профиля безопасности сервиса Yandex Smart Web Security.
Результат:
done (1s) name: <имя_виртуального_хоста> authority: - *
-
Посмотрите описание команды CLI для добавления маршрута:
yc alb virtual-host append-grpc-route --help
-
Добавьте маршрут, указав идентификатор или имя HTTP-роутера и параметры маршрутизации:
yc alb virtual-host append-grpc-route <имя_маршрута> \ --virtual-host-name <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера> \ --prefix-fqmn-match / \ --backend-group-name <имя_группы_бэкендов> \ --request-max-timeout 60s
Где:
-
--virtual-host-name
— имя виртуального хоста. -
--http-router-name
— имя HTTP-роутера. -
--prefix-fqmn-match
— параметр для маршрутизации всех запросов с определенным началом. После параметра укажите FQMN/
.Также, чтобы задать условие для маршрутизации, вы можете использовать опции:
--exact-fqmn-match
— для маршрутизации всех запросов, совпадающих с указанным FQMN. После параметра укажите/<FQMN>/
.--regex-fqmn-match
— для маршрутизации всех запросов, удовлетворяющих регулярному выражению стандарта RE2 . После параметра укажите/<регулярное_выражение>
.
-
--backend-group-name
— имя группы бэкендов. -
--request-max-timeout
— максимальный тайм-аут ожидания запроса, в секундах.
Подробную информацию о параметрах команды
yc alb virtual-host append-grpc-route
см. в справочнике CLI.Результат:
done (1s) name: <имя_виртуального_хоста> authority: - * routes: - name: <имя_маршрута> grpc: match: fqmn: prefix_match: /helloworld route: backend_group_id: ds7snban2dvn******** max_timeout: 60s
-
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры HTTP-роутера и виртуального хоста:
resource "yandex_alb_http_router" "tf-router" { name = "<имя_HTTP-роутера>" labels = { tf-label = "tf-label-value" empty-label = "" } } resource "yandex_alb_virtual_host" "my-virtual-host" { name = "<имя_виртуального_хоста>" http_router_id = yandex_alb_http_router.tf-router.id route { name = "<имя_маршрута>" grpc_route { grpc_route_action { backend_group_id = "<идентификатор_группы_бэкендов>" max_timeout = "60s" } } } route_options { security_profile_id = "<идентификатор_профиля_безопасности>" } }
Где:
yandex_alb_http_router
— описание HTTP-роутера:-
name
— имя HTTP-роутера. Формат имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
labels
— метки для HTTP-роутера. Укажите пару ключ — значение.
-
yandex_alb_virtual_host
— описание виртуального хоста:-
name
— имя виртуального хоста. Формат имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
http_router_id
— идентификатор HTTP-роутера. -
route
— описание маршрута HTTP-роутера:name
— имя маршрута.grpc_route
— описание маршрута для gRPC-трафика:grpc_route_action
— параметр для указания действия с gRPC-трафиком.backend_group_id
— идентификатор группы бэкэндов.max_timeout
— максимальный тайм-аут ожидания запроса, в секундах.
-
route_options
— (опционально) дополнительные параметры виртуального хоста:security_profile_id
— идентификатор профиля безопасности сервиса Yandex Smart Web Security.
-
Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера:
- Ресурс yandex_alb_http_router
. - Ресурс yandex_alb_virtual_host
.
-
Создайте ресурсы
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
или с помощью команды CLI:yc alb http-router get <имя_HTTP-роутера>
-
Воспользуйтесь методом REST API create для ресурса HttpRouter или вызовом gRPC API HttpRouterService/Create.