Изменить параметры HTTP-роутера
Чтобы изменить параметры HTTP-роутера:
- В консоли управления
выберите каталог, в котором создан HTTP-роутер. - Выберите сервис Application Load Balancer.
- На панели слева выберите
HTTP-роутеры. - Нажмите на имя нужного роутера.
- Нажмите Редактировать.
- Измените параметры роутера, заголовка, виртуального хоста или маршрута.
- Внизу страницы нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Посмотрите описание команды CLI для изменения балансировщиков:
yc alb http-router update --help -
Выполните команду, указав новые параметры роутера:
yc alb http-router update <имя_HTTP-роутера> --new-name <новое_имя_HTTP-роутера>Результат:
id: a5dld80l32ed******** name: new-http-router folder_id: aoe197919j8e******** virtual_hosts: - name: test-virtual-host authority: - your-domain.foo.com routes: - name: test-route http: match: path: prefix_match: / route: backend_group_id: a5d4db973944******** timeout: 2s idle_timeout: 3s modify_request_headers: - name: Accept-Language append: ru-RU created_at: "2021-02-11T21:31:01.676592016Z"
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Откройте файл конфигурации Terraform и измените фрагмент с описанием HTTP-роутера:
... resource "yandex_alb_http_router" "tf-router" { name = "my-http-router" labels = { tf-label = "tf-label-value" empty-label = "" } } ...Более подробную информацию о параметрах ресурса
yandex_alb_http_routerв Terraform см. в документации провайдера. -
Чтобы добавить, изменить или удалить виртуальные хосты HTTP-роутера, используйте ресурс
yandex_alb_virtual_hostс указанием на роутер в полеhttp_router_id:resource "yandex_alb_virtual_host" "my-virtual-host" { name = "my-virtual-host" http_router_id = "${yandex_alb_http_router.tf-router.id}" route { name = "my-route" disable_security_profile = true|false http_route { http_route_action { backend_group_id = "${yandex_alb_backend_group.backend-group.id}" timeout = "3s" } } } }Более подробную информацию о параметрах ресурса
yandex_alb_virtual_hostв Terraform см. в документации провайдера. -
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Terraform изменит все требуемые ресурсы. Проверить изменение HTTP-роутера можно в консоли управления
или с помощью команды CLI:yc alb http-router get <идентификатор_http-роутера>Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с HTTP-роутерами и виртуальными хостами Application Load Balancer 10 минутами.
Операции, которые длятся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию HTTP-роутера и виртуального хоста блоки
timeouts(ресурсыyandex_alb_http_routerиyandex_alb_virtual_hostсоответственно).Пример:
resource "yandex_alb_http_router" "<имя_роутера>" { ... timeouts { create = "60m" update = "60m" delete = "60m" } } -
Воспользуйтесь методом REST API update для ресурса HttpRouter или вызовом gRPC API HttpRouterService/Update.
Добавить маршрут в виртуальный хост
Чтобы добавить новый маршрут в виртуальный хост HTTP-роутера:
-
В консоли управления
выберите каталог, в котором вы будете создавать маршрут для виртуального хоста. -
В списке сервисов выберите Application Load Balancer.
-
На панели слева выберите
HTTP-роутеры и выберите HTTP-роутер, в котором находится виртуальный хост, для которого требуется создать маршрут. -
На открывшейся странице в секции Виртуальные хосты в блоке с нужным виртуальным хостом нажмите значок
и выберите Редактировать.При необходимости создайте новый виртуальный хост.
В открывшемся окне нажмите кнопку Добавить маршрут и в появившейся форме Новый маршрут, в зависимости от типа создаваемого маршрута:
HTTPgRPC-
В поле Имя укажите имя создаваемого маршрута. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
В поле Тип выберите
HTTP. -
В поле Путь выберите одну из опций:
Совпадает с— чтобы маршрутизировать запросы, путь в которых идентичен пути, заданному в текстовом поле справа. Например, чтобы маршрутизировать все запросы, укажите путь/.Начинается с— чтобы маршрутизировать запросы, путь в которых начинается с префикса, заданного в текстовом поле справа.Регулярное выражение— чтобы маршрутизировать запросы, путь в которых удовлетворяет регулярному выражению стандарта RE2 , заданному в текстовом поле справа. Например:\/[a-z]{10}[0-9]{3}.
-
В поле Методы HTTP выберите нужные HTTP-методы
, запросы с которыми необходимо маршрутизировать. -
В поле Действие выберите одну из опций:
Маршрутизация,ПеренаправлениеилиОтвет. В зависимости от выбранной опции:МаршрутизацияПеренаправлениеОтвет-
В поле Группа бэкендов выберите группу бэкендов, расположенную в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых вы создаете маршрут.
-
(Опционально) В поле Замена пути или начала укажите путь, по которому HTTP-роутер должен перенаправлять трафик. Если ранее в поле Путь вы выбрали опцию
Совпадает с, путь будет полностью заменен. Если была выбрана опцияНачинается с, будет изменено только начало. -
(Опционально) В поле Замена заголовка Host выберите одну из опций:
none— заголовок Host в запросе не изменяется.rewrite— заголовок Host в запросе заменяется на указанное значение.auto— заголовок Host в запросе автоматически заменяется на адрес целевой виртуальной машины.
-
(Опционально) Включите опции Ограничивать все запросы и/или Ограничивать запросы с одного IP и задайте соответствующие ограничения на количество запросов, которые будут обрабатываться для данного маршрута за единицу времени.
-
(Опционально) В поле Таймаут, с укажите максимальное время, на которое может быть установлено соединение.
-
(Опционально) В поле Таймаут простоя, с укажите максимальное время keep-alive, в течение которого соединение может простаивать без передачи данных.
-
(Опционально) В поле Допустимые значения заголовка Upgrade:
- (Опционально) Укажите список протоколов, на которые группа бэкендов может перейти в рамках TCP-соединения по запросу клиента. Используйте кнопку Добавить тип модификации, чтобы добавлять дополнительные протоколы.
- (Опционально) Включите опцию WebSocket, если вы хотите использовать протокол WebSocket
.
-
В поле Код состояния HTTP выберите код, по которому будет осуществляться перенаправление:
301 Moved Permanently;302 Found;303 See Other;307 Temporary Redirect;308 Permanent Redirect.
-
(Опционально) Включите опцию Замена пути или начала и укажите тип модификации пути, по которому HTTP-роутер должен перенаправлять трафик:
Весь путь— чтобы полностью заменить путь запроса на значение, заданное в поле справа.Начало— чтобы изменить префикс пути запроса на значение, заданное в поле справа.
Примечание
Если в поле Путь выше вы выбрали опцию
Совпадает с, путь будет полностью заменен, даже если в поле Замена пути или начала выбрана опцияНачало. -
(Опционально) Включите опцию Удалить query-параметры, чтобы удалять из запросов все query-параметры.
-
(Опционально) Включите опцию Изменить схему, чтобы изменять схему в запросах на схему, заданную в поле справа.
Если в исходном URI использована схема
http(https) и указан порт80(443), при изменении схемы порт будет удален. -
(Опционально) Включите опцию Изменить хост и в поле справа укажите новый хост.
-
(Опционально) Включите опцию Изменить порт и в поле справа укажите новый порт.
-
В поле Код состояния HTTP выберите код статического ответа, который будет отправляться на запрос.
-
В поле Тело ответа задайте тело статического ответа на запросы. Для этого нажмите кнопку Выбрать и в открывшемся окне:
-
В поле Способ выберите:
Файл— чтобы выбрать текстовый файл, содержащий тело ответа.Текст— чтобы указать текст ответа в текстовом поле.- Нажмите кнопку Добавить.
-
-
-
В поле Имя укажите имя создаваемого маршрута. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
В поле Тип выберите
gRPC. -
В поле FQMN выберите одну из опций:
Совпадает с— чтобы маршрутизировать запросы, FQMN которых идентичен FQMN, заданному в текстовом поле справа.Начинается с— чтобы маршрутизировать запросы, FQMN в которых начинается с префикса, заданного в текстовом поле справа. Например, вы можете указать первое слово в имени сервиса:/helloworld.Регулярное выражение— чтобы маршрутизировать запросы, FQMN в которых удовлетворяет регулярному выражению стандарта RE2 , заданному в текстовом поле справа.
Важно
FQMN должно начинаться с косой черты
/и содержать часть полного названия сервиса, на который перенаправляется вызов процедуры. -
В поле Действие выберите одну из опций:
МаршрутизацияилиОтвет. В зависимости от выбранной опции:МаршрутизацияОтвет-
В поле Группа бэкендов выберите группу бэкендов, расположенную в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых вы создаете маршрут.
-
(Опционально) В поле Замена заголовка Host выберите одну из опций:
none— заголовок Host в запросе не изменяется.rewrite— заголовок Host в запросе заменяется на указанное значение.auto— заголовок Host в запросе автоматически заменяется на адрес целевой виртуальной машины.
-
(Опционально) Включите опции Ограничивать все запросы и/или Ограничивать запросы с одного IP и задайте соответствующие ограничения на количество запросов, которые будут обрабатываться для данного маршрута за единицу времени.
- (Опционально) В поле Максимальный таймаут, с укажите максимальное время, на которое может быть установлено соединение. Клиент может указать в запросе HTTP-заголовок
grpc-timeoutс меньшим значением таймаута. - (Опционально) В поле Таймаут простоя, с укажите максимальное время, в течение которого соединение может простаивать без передачи данных.
В поле Код состояния gRPC выберите код статического ответа, отправляемого балансировщиком в ответ на запрос:
OK;INVALID_ARGUMENT;NOT_FOUND;PERMISSION_DENIED;UNAUTHENTICATED;UNIMPLEMENTED;INTERNAL;UNAVAILABLE.
-
-
-
(Опционально) Чтобы изменить порядок маршрутов, нажмите кнопку Сортировать и в открывшемся окне:
- С помощью мышки методом перетаскивания выстройте нужный порядок маршрутов.
- Нажмите кнопку Сохранить.
Примечание
Позднее вы в любой момент сможете изменить порядок маршрутов виртуального хоста.
-
Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
С помощью Yandex Cloud CLI вы можете добавлять в виртуальный хост разные типы маршрутов:
Yandex Cloud CLI позволяет использовать три разных команды для добавления HTTP-маршрутов в виртуальный хост:
yc alb virtual-host append-http-route— добавляет маршрут в конец списка маршрутов виртуального хоста.yc alb virtual-host prepend-http-route— добавляет маршрут в начало списка маршрутов виртуального хоста.yc alb virtual-host insert-http-route— добавляет маршрут в указанное место внутри списка маршрутов виртуального хоста.
-
Посмотрите описание команды CLI для добавления маршрута в конец списка маршрутов виртуального хоста:
yc alb virtual-host append-http-route --help -
Посмотрите список HTTP-роутеров в каталоге по умолчанию:
yc alb http-router listРезультат:
+----------------------+--------------------+-------------+-------------+ | ID | NAME | VHOST COUNT | ROUTE COUNT | +----------------------+--------------------+-------------+-------------+ | ds76j5n6a39g******** | sample-http-router | 1 | 2 | | ds76jk27sdf3******** | new-http-router | 2 | 7 | +----------------------+--------------------+-------------+-------------+ -
Посмотрите список виртуальных хостов в нужном HTTP-роутере, указав его имя или идентификатор соответственно в параметре
--http-router-nameили--http-router-id:yc alb virtual-host list \ --http-router-name <имя_HTTP-роутера> \ --http-router-id <идентификатор_HTTP-роутера>Результат:
+-------------------+-------------+-------------+----------------------+ | NAME | AUTHORITIES | ROUTE COUNT | SECURITY PROFILE ID | +-------------------+-------------+-------------+----------------------+ | my-virtual-host | * | 1 | fevu5fnuk6vf******** | | test-virtual-host | example.com | 2 | fevug3d25bv6******** | +-------------------+-------------+-------------+----------------------+ -
Добавьте маршрут, указав его имя и дополнительные параметры:
yc alb virtual-host append-http-route <имя_маршрута> \ --http-router-name <имя_HTTP-роутера> \ --virtual-host-name <имя_виртуального_хоста> \ --match-http-method <метод_1>,<метод_2>,...<метод_n> \ --exact-path-match <полный_путь> \ --prefix-path-match <префикс_пути> \ --regex-path-match <регулярное_выражение> \ --backend-group-name <имя_группы_бэкендов> \ --request-timeout <таймаут_запроса>s \ --request-idle-timeout <таймаут_ожидания_запроса>s \ --rate-limit rps=<лимит_запросов>,requests-per-ip \ --disable-security-profileГде:
-
--http-router-name— имя HTTP-роутера, в котором создается маршрут.Вместо имени HTTP-роутера вы можете указать его идентификатор в параметре
--http-router-id. -
--virtual-host-name— имя виртуального хоста, в котором создается маршрут. -
--match-http-method— список HTTP-методов , запросы с которыми необходимо маршрутизировать. Например:--match-http-method GET,POST,OPTIONS. Необязательный параметр. Если не задан, маршрутизироваться будут запросы с любыми методами. -
Параметры с условиями маршрутизации на основе пути:
--exact-path-match— маршрутизировать запросы, путь в которых идентичен заданному пути. Например, чтобы маршрутизировать все запросы, укажите путь/.--prefix-path-match— маршрутизировать запросы, путь в которых начинается с заданного префикса. Например:/myapp/.--regex-path-match— маршрутизировать запросы, путь в которых удовлетворяет заданному регулярному выражению стандарта RE2 . Например:\/[a-z]{10}[0-9]{3}\/.
Примечание
Параметры
--exact-path-match,--prefix-path-matchи--regex-path-match— взаимоисключающие: вы можете использовать только один из них. -
--backend-group-name— имя группы бэкендов, расположенной в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых вы создаете маршрут.Вместо имени группы бэкендов вы можете указать ее идентификатор в параметре
--backend-group-id. -
--request-timeout— максимальное время в секундах, на которое может быть установлено соединение по запросу. -
--request-idle-timeout— максимальное время в секундах, в течение которого соединение может простаивать без передачи данных. -
--rate-limit— ограничение на частоту запросов. Возможные свойства:rpsилиrpm— количество запросов, которые можно принять в секунду или в минуту.all-requests— ограничение на все входящие запросы.requests-per-ip— ограничение на количество запросов для каждого IP-адреса клиента в отдельности.
Для одного маршрута вы можете задать только один вид ограничения: либо свойство
all-requests, либо —requests-per-ip.Необязательный параметр: если не задан, ограничение на частоту запросов не применяется.
-
--disable-security-profile— параметр, отключающий для маршрута использование профиля безопасности сервиса Yandex Smart Web Security, заданного для виртуального хоста. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. в разделе Профили безопасности. Необязательный параметр. По умолчанию профиль безопасности, привязанный к виртуальному хосту, действует в отношении всех создаваемых маршрутов.Важно
Функциональность доступна только в регионе Россия.
Результат:
name: test-virtual-host authority: - example.com routes: - name: my-first-route http: match: path: prefix_match: / route: backend_group_id: ds7dnf2s5dco******** timeout: 60s auto_host_rewrite: false - name: my-second-route http: match: http_method: - GET - POST - OPTIONS path: exact_match: / route: backend_group_id: ds7dnf2s5dco******** timeout: 2s idle_timeout: 5s rate_limit: requests_per_ip: per_second: "10" disable_security_profile: true modify_request_headers: - name: Accept-Language append: ru-RU route_options: security_profile_id: fevu5fnuk6vf******** rate_limit: all_requests: per_second: "100"Подробную информацию о команде
yc alb virtual-host append-http-routeс полным перечнем параметров см. в справочнике CLI. -
-
Посмотрите описание команды CLI для добавления маршрута в начало списка маршрутов:
yc alb virtual-host prepend-http-route --help -
Посмотрите список HTTP-роутеров в каталоге по умолчанию:
yc alb http-router listРезультат:
+----------------------+--------------------+-------------+-------------+ | ID | NAME | VHOST COUNT | ROUTE COUNT | +----------------------+--------------------+-------------+-------------+ | ds76j5n6a39g******** | sample-http-router | 1 | 2 | | ds76jk27sdf3******** | new-http-router | 2 | 7 | +----------------------+--------------------+-------------+-------------+ -
Посмотрите список виртуальных хостов в нужном HTTP-роутере, указав его имя или идентификатор соответственно в параметре
--http-router-nameили--http-router-id:yc alb virtual-host list \ --http-router-name <имя_HTTP-роутера> \ --http-router-id <идентификатор_HTTP-роутера>Результат:
+-------------------+-------------+-------------+----------------------+ | NAME | AUTHORITIES | ROUTE COUNT | SECURITY PROFILE ID | +-------------------+-------------+-------------+----------------------+ | my-virtual-host | * | 1 | fevu5fnuk6vf******** | | test-virtual-host | example.com | 2 | fevug3d25bv6******** | +-------------------+-------------+-------------+----------------------+ -
Добавьте маршрут, указав его имя и дополнительные параметры:
yc alb virtual-host prepend-http-route <имя_маршрута> \ --http-router-name <имя_HTTP-роутера> \ --virtual-host-name <имя_виртуального_хоста> \ --match-http-method <метод_1>,<метод_2>,...<метод_n> \ --exact-path-match <полный_путь> \ --prefix-path-match <префикс_пути> \ --regex-path-match <регулярное_выражение> \ --backend-group-name <имя_группы_бэкендов> \ --request-timeout <таймаут_запроса>s \ --request-idle-timeout <таймаут_ожидания_запроса>s \ --rate-limit rps=<лимит_запросов>,requests-per-ip \ --disable-security-profileГде:
-
--http-router-name— имя HTTP-роутера, в котором создается маршрут.Вместо имени HTTP-роутера вы можете указать его идентификатор в параметре
--http-router-id. -
--virtual-host-name— имя виртуального хоста, в котором создается маршрут. -
--match-http-method— список HTTP-методов , запросы с которыми необходимо маршрутизировать. Например:--match-http-method GET,POST,OPTIONS. Необязательный параметр. Если не задан, маршрутизироваться будут запросы с любыми методами. -
Параметры с условиями маршрутизации на основе пути:
--exact-path-match— маршрутизировать запросы, путь в которых идентичен заданному пути. Например, чтобы маршрутизировать все запросы, укажите путь/.--prefix-path-match— маршрутизировать запросы, путь в которых начинается с заданного префикса. Например:/myapp/.--regex-path-match— маршрутизировать запросы, путь в которых удовлетворяет заданному регулярному выражению стандарта RE2 . Например:\/[a-z]{10}[0-9]{3}\/.
Примечание
Параметры
--exact-path-match,--prefix-path-matchи--regex-path-match— взаимоисключающие: вы можете использовать только один из них. -
--backend-group-name— имя группы бэкендов, расположенной в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых вы создаете маршрут.Вместо имени группы бэкендов вы можете указать ее идентификатор в параметре
--backend-group-id. -
--request-timeout— максимальное время в секундах, на которое может быть установлено соединение по запросу. -
--request-idle-timeout— максимальное время в секундах, в течение которого соединение может простаивать без передачи данных. -
--rate-limit— ограничение на частоту запросов. Возможные свойства:rpsилиrpm— количество запросов, которые можно принять в секунду или в минуту.all-requests— ограничение на все входящие запросы.requests-per-ip— ограничение на количество запросов для каждого IP-адреса клиента в отдельности.
Для одного маршрута вы можете задать только один вид ограничения: либо свойство
all-requests, либо —requests-per-ip.Необязательный параметр: если не задан, ограничение на частоту запросов не применяется.
-
--disable-security-profile— параметр, отключающий для маршрута использование профиля безопасности сервиса Yandex Smart Web Security, заданного для виртуального хоста. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. в разделе Профили безопасности. Необязательный параметр. По умолчанию профиль безопасности, привязанный к виртуальному хосту, действует в отношении всех создаваемых маршрутов.Важно
Функциональность доступна только в регионе Россия.
Результат:
name: test-virtual-host authority: - example.com routes: - name: my-second-route http: match: http_method: - GET - POST - OPTIONS path: exact_match: / route: backend_group_id: ds7dnf2s5dco******** timeout: 2s idle_timeout: 5s rate_limit: requests_per_ip: per_second: "10" disable_security_profile: true - name: my-first-route http: match: path: prefix_match: / route: backend_group_id: ds7dnf2s5dco******** timeout: 60s auto_host_rewrite: false modify_request_headers: - name: Accept-Language append: ru-RU route_options: security_profile_id: fevu5fnuk6vf******** rate_limit: all_requests: per_second: "100"Подробную информацию о команде
yc alb virtual-host prepend-http-routeс полным перечнем параметров см. в справочнике CLI. -
-
Посмотрите описание команды CLI для добавления маршрута в заданное место в списке маршрутов:
yc alb virtual-host insert-http-route --help -
Посмотрите список HTTP-роутеров в каталоге по умолчанию:
yc alb http-router listРезультат:
+----------------------+--------------------+-------------+-------------+ | ID | NAME | VHOST COUNT | ROUTE COUNT | +----------------------+--------------------+-------------+-------------+ | ds76j5n6a39g******** | sample-http-router | 1 | 2 | | ds76jk27sdf3******** | new-http-router | 2 | 7 | +----------------------+--------------------+-------------+-------------+ -
Посмотрите список виртуальных хостов в нужном HTTP-роутере, указав его имя или идентификатор соответственно в параметре
--http-router-nameили--http-router-id:yc alb virtual-host list \ --http-router-name <имя_HTTP-роутера> \ --http-router-id <идентификатор_HTTP-роутера>Результат:
+-------------------+-------------+-------------+----------------------+ | NAME | AUTHORITIES | ROUTE COUNT | SECURITY PROFILE ID | +-------------------+-------------+-------------+----------------------+ | my-virtual-host | * | 1 | fevu5fnuk6vf******** | | test-virtual-host | example.com | 2 | fevug3d25bv6******** | +-------------------+-------------+-------------+----------------------+ -
Чтобы узнать текущий порядок маршрутов в виртуальном хосте, выполните команду, указав в ней имя виртуального хоста и имя или идентификатор HTTP-роутера соответственно в параметре
--http-router-nameили--http-router-id:yc alb virtual-host get <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера> \ --http-router-id <идентификатор_HTTP-роутера>Результат:
name: test-virtual-host authority: - example.com routes: - name: my-first-route http: match: path: prefix_match: / route: backend_group_id: ds7dnf2s5dco******** timeout: 60s auto_host_rewrite: false - name: my-second-route http: match: http_method: - GET - POST - OPTIONS path: exact_match: / route: backend_group_id: ds7dnf2s5dco******** timeout: 2s idle_timeout: 5s rate_limit: requests_per_ip: per_second: "10" disable_security_profile: true modify_request_headers: - name: Accept-Language append: ru-RU route_options: security_profile_id: fevu5fnuk6vf******** rate_limit: all_requests: per_second: "100" -
Добавьте маршрут, указав его имя и дополнительные параметры:
yc alb virtual-host insert-http-route <имя_маршрута> \ --http-router-name <имя_HTTP-роутера> \ --virtual-host-name <имя_виртуального_хоста> \ --match-http-method <метод_1>,<метод_2>,...<метод_n> \ --exact-path-match <полный_путь> \ --prefix-path-match <префикс_пути> \ --regex-path-match <регулярное_выражение> \ --backend-group-name <имя_группы_бэкендов> \ --request-timeout <таймаут_запроса>s \ --request-idle-timeout <таймаут_ожидания_запроса>s \ --rate-limit rps=<лимит_запросов>,requests-per-ip \ --disable-security-profile \ --before <имя_последующего_маршрута> \ --after <имя_предшествующего_маршрута>Где:
-
--http-router-name— имя HTTP-роутера, в котором создается маршрут.Вместо имени HTTP-роутера вы можете указать его идентификатор в параметре
--http-router-id. -
--virtual-host-name— имя виртуального хоста, в котором создается маршрут. -
--match-http-method— список HTTP-методов , запросы с которыми необходимо маршрутизировать. Например:--match-http-method GET,POST,OPTIONS. Необязательный параметр. Если не задан, маршрутизироваться будут запросы с любыми методами. -
Параметры с условиями маршрутизации на основе пути:
--exact-path-match— маршрутизировать запросы, путь в которых идентичен заданному пути. Например, чтобы маршрутизировать все запросы, укажите путь/.--prefix-path-match— маршрутизировать запросы, путь в которых начинается с заданного префикса. Например:/myapp/.--regex-path-match— маршрутизировать запросы, путь в которых удовлетворяет заданному регулярному выражению стандарта RE2 . Например:\/[a-z]{10}[0-9]{3}\/.
Примечание
Параметры
--exact-path-match,--prefix-path-matchи--regex-path-match— взаимоисключающие: вы можете использовать только один из них. -
--backend-group-name— имя группы бэкендов, расположенной в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых вы создаете маршрут.Вместо имени группы бэкендов вы можете указать ее идентификатор в параметре
--backend-group-id. -
--request-timeout— максимальное время в секундах, на которое может быть установлено соединение по запросу. -
--request-idle-timeout— максимальное время в секундах, в течение которого соединение может простаивать без передачи данных. -
--rate-limit— ограничение на частоту запросов. Возможные свойства:rpsилиrpm— количество запросов, которые можно принять в секунду или в минуту.all-requests— ограничение на все входящие запросы.requests-per-ip— ограничение на количество запросов для каждого IP-адреса клиента в отдельности.
Для одного маршрута вы можете задать только один вид ограничения: либо свойство
all-requests, либо —requests-per-ip.Необязательный параметр: если не задан, ограничение на частоту запросов не применяется.
-
--disable-security-profile— параметр, отключающий для маршрута использование профиля безопасности сервиса Yandex Smart Web Security, заданного для виртуального хоста. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. в разделе Профили безопасности. Необязательный параметр. По умолчанию профиль безопасности, привязанный к виртуальному хосту, действует в отношении всех создаваемых маршрутов.Важно
Функциональность доступна только в регионе Россия.
--before— имя маршрута, перед которым в общем списке маршрутов виртуального хоста будет добавлен новый маршрут.--after— имя маршрута, после которого в общем списке маршрутов виртуального хоста будет добавлен новый маршрут.
Примечание
Параметры
--beforeи--after— взаимоисключающие: вы можете указать только один из них.Результат:
name: test-virtual-host authority: - example.com routes: - name: my-first-route http: match: path: prefix_match: / route: backend_group_id: ds7dnf2s5dco******** timeout: 60s auto_host_rewrite: false - name: my-third-route http: match: http_method: - PATCH - PUT path: exact_match: / route: backend_group_id: ds7dnf2s5dco******** timeout: 2s idle_timeout: 5s rate_limit: requests_per_ip: per_second: "10" disable_security_profile: true - name: my-second-route http: match: http_method: - GET - POST - OPTIONS path: exact_match: / route: backend_group_id: ds7dnf2s5dco******** timeout: 2s idle_timeout: 5s rate_limit: requests_per_ip: per_second: "10" disable_security_profile: true modify_request_headers: - name: Accept-Language append: ru-RU route_options: security_profile_id: fevu5fnuk6vf******** rate_limit: all_requests: per_second: "100"Подробную информацию о команде
yc alb virtual-host insert-http-routeс полным перечнем параметров см. в справочнике CLI. -
Yandex Cloud CLI позволяет использовать три разных команды для добавления gRPC-маршрутов в виртуальный хост:
yc alb virtual-host append-grpc-route— добавляет маршрут в конец списка маршрутов виртуального хоста.yc alb virtual-host prepend-grpc-route— добавляет маршрут в начало списка маршрутов виртуального хоста.yc alb virtual-host insert-grpc-route— добавляет маршрут в указанное место внутри списка маршрутов виртуального хоста.
-
Посмотрите описание команды CLI для добавления маршрута в конец списка маршрутов виртуального хоста:
yc alb virtual-host append-grpc-route --help -
Посмотрите список HTTP-роутеров в каталоге по умолчанию:
yc alb http-router listРезультат:
+----------------------+--------------------+-------------+-------------+ | ID | NAME | VHOST COUNT | ROUTE COUNT | +----------------------+--------------------+-------------+-------------+ | ds76j5n6a39g******** | sample-http-router | 1 | 2 | | ds76jk27sdf3******** | new-http-router | 2 | 7 | +----------------------+--------------------+-------------+-------------+ -
Посмотрите список виртуальных хостов в нужном HTTP-роутере, указав его имя или идентификатор соответственно в параметре
--http-router-nameили--http-router-id:yc alb virtual-host list \ --http-router-name <имя_HTTP-роутера> \ --http-router-id <идентификатор_HTTP-роутера>Результат:
+-------------------+-------------+-------------+----------------------+ | NAME | AUTHORITIES | ROUTE COUNT | SECURITY PROFILE ID | +-------------------+-------------+-------------+----------------------+ | my-virtual-host | * | 1 | fevu5fnuk6vf******** | | test-virtual-host | example.com | 2 | fevug3d25bv6******** | +-------------------+-------------+-------------+----------------------+ -
Добавьте маршрут, указав его имя и дополнительные параметры:
yc alb virtual-host append-grpc-route <имя_маршрута> \ --http-router-name <имя_HTTP-роутера> \ --virtual-host-name <имя_виртуального_хоста> \ --exact-fqmn-match <полный_FQMN> \ --prefix-fqmn-match <префикс_FQMN> \ --regex-fqmn-match <регулярное_выражение> \ --backend-group-name <имя_группы_бэкендов> \ --request-max-timeout <таймаут_запроса>s \ --request-idle-timeout <таймаут_ожидания_запроса>s \ --rate-limit rps=<лимит_запросов>,requests-per-ip \ --disable-security-profileГде:
-
--http-router-name— имя HTTP-роутера, в котором создается маршрут.Вместо имени HTTP-роутера вы можете указать его идентификатор в параметре
--http-router-id. -
--virtual-host-name— имя виртуального хоста, в котором создается маршрут. -
Параметры с условиями маршрутизации на основе FQMN:
--exact-fqmn-match— маршрутизировать запросы, FQMN в которых идентичен заданному.--prefix-fqmn-match— маршрутизировать запросы, FQMN в которых начинается с заданного префикса. Например, вы можете указать первое слово в имени сервиса:/helloworld.--regex-fqmn-match— маршрутизировать запросы, FQMN в которых удовлетворяет заданному регулярному выражению стандарта RE2 . Например:\/[a-z]{10}[0-9]{3}.
Важно
FQMN должно начинаться с косой черты
/и содержать часть полного названия сервиса, на который перенаправляется вызов процедуры.Примечание
Параметры
--exact-fqmn-match,--prefix-fqmn-matchи--regex-fqmn-match— взаимоисключающие: вы можете использовать только один из них. -
--backend-group-name— имя группы бэкендов, расположенной в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых вы создаете маршрут.Вместо имени группы бэкендов вы можете указать ее идентификатор в параметре
--backend-group-id. -
--request-max-timeout— максимальное время, на которое может быть установлено соединение. Клиент может указать в запросе HTTP-заголовокgrpc-timeoutс меньшим значением таймаута. -
--request-idle-timeout— максимальное время в секундах, в течение которого соединение может простаивать без передачи данных. -
--rate-limit— ограничение на частоту запросов. Возможные свойства:rpsилиrpm— количество запросов, которые можно принять в секунду или в минуту.all-requests— ограничение на все входящие запросы.requests-per-ip— ограничение на количество запросов для каждого IP-адреса клиента в отдельности.
Для одного маршрута вы можете задать только один вид ограничения: либо свойство
all-requests, либо —requests-per-ip.Необязательный параметр: если не задан, ограничение на частоту запросов не применяется.
-
--disable-security-profile— параметр, отключающий для маршрута использование профиля безопасности сервиса Yandex Smart Web Security, заданного для виртуального хоста. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. в разделе Профили безопасности. Необязательный параметр. По умолчанию профиль безопасности, привязанный к виртуальному хосту, действует в отношении всех создаваемых маршрутов.Важно
Функциональность доступна только в регионе Россия.
Результат:
name: test-virtual-host authority: - example.com routes: - name: my-first-route grpc: match: fqmn: prefix_match: / route: backend_group_id: ds7dq9nsrgpc******** max_timeout: 60s idle_timeout: 5s auto_host_rewrite: false - name: my-second-route grpc: match: fqmn: prefix_match: helloworld/ route: backend_group_id: ds7dq9nsrgpc******** max_timeout: 10s idle_timeout: 5s rate_limit: requests_per_ip: per_second: "4" disable_security_profile: true modify_request_headers: - name: Accept-Language append: ru-RU route_options: security_profile_id: fevu5fnuk6vf******** rate_limit: all_requests: per_second: "100"Подробную информацию о команде
yc alb virtual-host append-grpc-routeс полным перечнем параметров см. в справочнике CLI. -
-
Посмотрите описание команды CLI для добавления маршрута в начало списка маршрутов:
yc alb virtual-host prepend-grpc-route --help -
Посмотрите список HTTP-роутеров в каталоге по умолчанию:
yc alb http-router listРезультат:
+----------------------+--------------------+-------------+-------------+ | ID | NAME | VHOST COUNT | ROUTE COUNT | +----------------------+--------------------+-------------+-------------+ | ds76j5n6a39g******** | sample-http-router | 1 | 2 | | ds76jk27sdf3******** | new-http-router | 2 | 7 | +----------------------+--------------------+-------------+-------------+ -
Посмотрите список виртуальных хостов в нужном HTTP-роутере, указав его имя или идентификатор соответственно в параметре
--http-router-nameили--http-router-id:yc alb virtual-host list \ --http-router-name <имя_HTTP-роутера> \ --http-router-id <идентификатор_HTTP-роутера>Результат:
+-------------------+-------------+-------------+----------------------+ | NAME | AUTHORITIES | ROUTE COUNT | SECURITY PROFILE ID | +-------------------+-------------+-------------+----------------------+ | my-virtual-host | * | 1 | fevu5fnuk6vf******** | | test-virtual-host | example.com | 2 | fevug3d25bv6******** | +-------------------+-------------+-------------+----------------------+ -
Добавьте маршрут, указав его имя и дополнительные параметры:
yc alb virtual-host prepend-grpc-route <имя_маршрута> \ --http-router-name <имя_HTTP-роутера> \ --virtual-host-name <имя_виртуального_хоста> \ --exact-fqmn-match <полный_FQMN> \ --prefix-fqmn-match <префикс_FQMN> \ --regex-fqmn-match <регулярное_выражение> \ --backend-group-name <имя_группы_бэкендов> \ --request-max-timeout <таймаут_запроса>s \ --request-idle-timeout <таймаут_ожидания_запроса>s \ --rate-limit rps=<лимит_запросов>,requests-per-ip \ --disable-security-profileГде:
-
--http-router-name— имя HTTP-роутера, в котором создается маршрут.Вместо имени HTTP-роутера вы можете указать его идентификатор в параметре
--http-router-id. -
--virtual-host-name— имя виртуального хоста, в котором создается маршрут. -
Параметры с условиями маршрутизации на основе FQMN:
--exact-fqmn-match— маршрутизировать запросы, FQMN в которых идентичен заданному.--prefix-fqmn-match— маршрутизировать запросы, FQMN в которых начинается с заданного префикса. Например, вы можете указать первое слово в имени сервиса:/helloworld.--regex-fqmn-match— маршрутизировать запросы, FQMN в которых удовлетворяет заданному регулярному выражению стандарта RE2 . Например:\/[a-z]{10}[0-9]{3}.
Важно
FQMN должно начинаться с косой черты
/и содержать часть полного названия сервиса, на который перенаправляется вызов процедуры.Примечание
Параметры
--exact-fqmn-match,--prefix-fqmn-matchи--regex-fqmn-match— взаимоисключающие: вы можете использовать только один из них. -
--backend-group-name— имя группы бэкендов, расположенной в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых вы создаете маршрут.Вместо имени группы бэкендов вы можете указать ее идентификатор в параметре
--backend-group-id. -
--request-max-timeout— максимальное время, на которое может быть установлено соединение. Клиент может указать в запросе HTTP-заголовокgrpc-timeoutс меньшим значением таймаута. -
--request-idle-timeout— максимальное время в секундах, в течение которого соединение может простаивать без передачи данных. -
--rate-limit— ограничение на частоту запросов. Возможные свойства:rpsилиrpm— количество запросов, которые можно принять в секунду или в минуту.all-requests— ограничение на все входящие запросы.requests-per-ip— ограничение на количество запросов для каждого IP-адреса клиента в отдельности.
Для одного маршрута вы можете задать только один вид ограничения: либо свойство
all-requests, либо —requests-per-ip.Необязательный параметр: если не задан, ограничение на частоту запросов не применяется.
-
--disable-security-profile— параметр, отключающий для маршрута использование профиля безопасности сервиса Yandex Smart Web Security, заданного для виртуального хоста. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. в разделе Профили безопасности. Необязательный параметр. По умолчанию профиль безопасности, привязанный к виртуальному хосту, действует в отношении всех создаваемых маршрутов.Важно
Функциональность доступна только в регионе Россия.
Результат:
name: test-virtual-host authority: - example.com routes: - name: my-second-route grpc: match: fqmn: prefix_match: helloworld/ route: backend_group_id: ds7dq9nsrgpc******** max_timeout: 10s idle_timeout: 5s rate_limit: requests_per_ip: per_second: "4" disable_security_profile: true - name: my-first-route grpc: match: fqmn: prefix_match: / route: backend_group_id: ds7dq9nsrgpc******** max_timeout: 60s idle_timeout: 5s auto_host_rewrite: false modify_request_headers: - name: Accept-Language append: ru-RU route_options: security_profile_id: fevu5fnuk6vf******** rate_limit: all_requests: per_second: "100"Подробную информацию о команде
yc alb virtual-host prepend-grpc-routeс полным перечнем параметров см. в справочнике CLI. -
-
Посмотрите описание команды CLI для добавления маршрута в заданное место в списке маршрутов:
yc alb virtual-host insert-grpc-route --help -
Посмотрите список HTTP-роутеров в каталоге по умолчанию:
yc alb http-router listРезультат:
+----------------------+--------------------+-------------+-------------+ | ID | NAME | VHOST COUNT | ROUTE COUNT | +----------------------+--------------------+-------------+-------------+ | ds76j5n6a39g******** | sample-http-router | 1 | 2 | | ds76jk27sdf3******** | new-http-router | 2 | 7 | +----------------------+--------------------+-------------+-------------+ -
Посмотрите список виртуальных хостов в нужном HTTP-роутере, указав его имя или идентификатор соответственно в параметре
--http-router-nameили--http-router-id:yc alb virtual-host list \ --http-router-name <имя_HTTP-роутера> \ --http-router-id <идентификатор_HTTP-роутера>Результат:
+-------------------+-------------+-------------+----------------------+ | NAME | AUTHORITIES | ROUTE COUNT | SECURITY PROFILE ID | +-------------------+-------------+-------------+----------------------+ | my-virtual-host | * | 1 | fevu5fnuk6vf******** | | test-virtual-host | example.com | 2 | fevug3d25bv6******** | +-------------------+-------------+-------------+----------------------+ -
Чтобы узнать текущий порядок маршрутов в виртуальном хосте, выполните команду, указав в ней имя виртуального хоста и имя или идентификатор HTTP-роутера соответственно в параметре
--http-router-nameили--http-router-id:yc alb virtual-host get <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера> \ --http-router-id <идентификатор_HTTP-роутера>Результат:
name: test-virtual-host authority: - example.com routes: - name: my-first-route grpc: match: fqmn: prefix_match: / route: backend_group_id: ds7dq9nsrgpc******** max_timeout: 60s idle_timeout: 5s auto_host_rewrite: false - name: my-second-route grpc: match: fqmn: prefix_match: helloworld/ route: backend_group_id: ds7dq9nsrgpc******** max_timeout: 10s idle_timeout: 5s rate_limit: requests_per_ip: per_second: "4" disable_security_profile: true modify_request_headers: - name: Accept-Language append: ru-RU route_options: security_profile_id: fevu5fnuk6vf******** rate_limit: all_requests: per_second: "100" -
Добавьте маршрут, указав его имя и дополнительные параметры:
yc alb virtual-host insert-grpc-route <имя_маршрута> \ --http-router-name <имя_HTTP-роутера> \ --virtual-host-name <имя_виртуального_хоста> \ --exact-fqmn-match <полный_FQMN> \ --prefix-fqmn-match <префикс_FQMN> \ --regex-fqmn-match <регулярное_выражение> \ --backend-group-name <имя_группы_бэкендов> \ --request-max-timeout <таймаут_запроса>s \ --request-idle-timeout <таймаут_ожидания_запроса>s \ --rate-limit rps=<лимит_запросов>,requests-per-ip \ --disable-security-profile \ --before <имя_последующего_маршрута> \ --after <имя_предшествующего_маршрута>Где:
-
--http-router-name— имя HTTP-роутера, в котором создается маршрут.Вместо имени HTTP-роутера вы можете указать его идентификатор в параметре
--http-router-id. -
--virtual-host-name— имя виртуального хоста, в котором создается маршрут. -
Параметры с условиями маршрутизации на основе FQMN:
--exact-fqmn-match— маршрутизировать запросы, FQMN в которых идентичен заданному.--prefix-fqmn-match— маршрутизировать запросы, FQMN в которых начинается с заданного префикса. Например, вы можете указать первое слово в имени сервиса:/helloworld.--regex-fqmn-match— маршрутизировать запросы, FQMN в которых удовлетворяет заданному регулярному выражению стандарта RE2 . Например:\/[a-z]{10}[0-9]{3}.
Важно
FQMN должно начинаться с косой черты
/и содержать часть полного названия сервиса, на который перенаправляется вызов процедуры.Примечание
Параметры
--exact-fqmn-match,--prefix-fqmn-matchи--regex-fqmn-match— взаимоисключающие: вы можете использовать только один из них. -
--backend-group-name— имя группы бэкендов, расположенной в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых вы создаете маршрут.Вместо имени группы бэкендов вы можете указать ее идентификатор в параметре
--backend-group-id. -
--request-max-timeout— максимальное время, на которое может быть установлено соединение. Клиент может указать в запросе HTTP-заголовокgrpc-timeoutс меньшим значением таймаута. -
--request-idle-timeout— максимальное время в секундах, в течение которого соединение может простаивать без передачи данных. -
--rate-limit— ограничение на частоту запросов. Возможные свойства:rpsилиrpm— количество запросов, которые можно принять в секунду или в минуту.all-requests— ограничение на все входящие запросы.requests-per-ip— ограничение на количество запросов для каждого IP-адреса клиента в отдельности.
Для одного маршрута вы можете задать только один вид ограничения: либо свойство
all-requests, либо —requests-per-ip.Необязательный параметр: если не задан, ограничение на частоту запросов не применяется.
-
--disable-security-profile— параметр, отключающий для маршрута использование профиля безопасности сервиса Yandex Smart Web Security, заданного для виртуального хоста. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. в разделе Профили безопасности. Необязательный параметр. По умолчанию профиль безопасности, привязанный к виртуальному хосту, действует в отношении всех создаваемых маршрутов.Важно
Функциональность доступна только в регионе Россия.
--before— имя маршрута, перед которым в общем списке маршрутов виртуального хоста будет добавлен новый маршрут.--after— имя маршрута, после которого в общем списке маршрутов виртуального хоста будет добавлен новый маршрут.
Примечание
Параметры
--beforeи--after— взаимоисключающие: вы можете указать только один из них.Результат:
name: test-virtual-host authority: - example.com routes: - name: my-first-route grpc: match: fqmn: prefix_match: / route: backend_group_id: ds7dq9nsrgpc******** max_timeout: 60s idle_timeout: 5s auto_host_rewrite: false - name: my-third-route grpc: match: fqmn: prefix_match: myapp/ route: backend_group_id: ds7dq9nsrgpc******** max_timeout: 10s idle_timeout: 5s rate_limit: requests_per_ip: per_second: "4" disable_security_profile: true - name: my-second-route grpc: match: fqmn: prefix_match: helloworld/ route: backend_group_id: ds7dq9nsrgpc******** max_timeout: 10s idle_timeout: 5s rate_limit: requests_per_ip: per_second: "4" disable_security_profile: true modify_request_headers: - name: Accept-Language append: ru-RU route_options: security_profile_id: fevu5fnuk6vf******** rate_limit: all_requests: per_second: "100"Подробную информацию о команде
yc alb virtual-host insert-grpc-routeс полным перечнем параметров см. в справочнике CLI. -
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Примечание
Маршруты виртуального хоста будут применяться к поступающим запросам в том порядке, в котором они описаны в конфигурационном файле Terraform.
-
Опишите в конфигурационном файле параметры маршрута как ресурса, вложенного в ресурс типа yandex_alb_virtual_host. С помощью Terraform вы можете добавлять в виртуальный хост разные типы маршрутов:
HTTPgRPC... route { name = "<имя_маршрута>" disable_security_profile = true|false http_route { http_match { http_method = ["<HTTP-метод_1>","<HTTP-метод_2>",...,"<HTTP-метод_n>"] path { prefix = "/<префикс_пути_запроса>/" # или exact = "<путь_запроса>" # или regex = "<регулярное_выражение>" } } http_route_action { backend_group_id = "<идентификатор_группы_бэкендов>" host_rewrite = "<значение_заголовка_Host>" timeout = "<таймаут_соединения>s" idle_timeout = "<таймаут-простоя>s" prefix_rewrite = "<новый_префикс_пути_запроса>/" rate_limit { all_requests { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } requests_per_ip { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } } } } } ...Где:
-
route— описание маршрута виртуального хоста:name— имя маршрута.disable_security_profile— (опционально) опция отключения профиля безопасности сервиса Yandex Smart Web Security. Возможные значения:true(профиль отключен) илиfalse(профиль включен). По умолчанию профиль безопасности включен (значениеfalse).
-
http_route— описание маршрута для HTTP-трафика:-
http_match— (опционально) параметр для фильтрации входящих HTTP-запросов:-
http_method— (опционально) список HTTP-методов , запросы с которыми будут маршрутизироваться. По умолчанию маршрутизируются запросы с любыми методами. -
path— (опционально) параметры для фильтрации пути входящего запроса:exact— маршрутизировать запросы, путь в которых идентичен заданному пути. Например, чтобы маршрутизировать все запросы, укажите путь/.prefix— маршрутизировать запросы, путь в которых начинается с заданного префикса.regex— маршрутизировать запросы, путь в которых удовлетворяет заданному регулярному выражению стандарта RE2 . Например:\/[a-z]{10}[0-9]{3}\/.
Параметры
exact,prefixиregex— взаимоисключающие: вы можете использовать только один из них.
-
-
http_route_action— параметр для указания действия с HTTP-трафиком.backend_group_id— идентификатор группы бэкендов, расположенной в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых создается маршрут.host_rewrite— (опционально) замена заголовка Host в запросе на указанное значение. Вместо параметраhost_rewriteвы можете указать параметрauto_host_rewrite— в этом случае заголовок Host в запросе автоматически будет заменяться на адрес целевой виртуальной машины.timeout— (опционально) максимальное время, на которое может быть установлено соединение, в секундах. Значение по умолчанию — 60 секунд.idle_timeout— (опционально) максимальное время keep-alive, в течение которого соединение может простаивать без передачи данных. Если не задано, соединение без передачи данных будет сразу разрываться.prefix_rewrite— (опционально) значение, на которое будет заменен путь или часть пути запроса, указанные в параметреpath.-
rate_limit— (опционально) параметр для ограничения количества запросов за единицу времени:-
all_requests— (опционально) ограничение на все входящие запросы:per_second— максимальное количество входящих запросов, которые могут поступать в маршрут за одну секунду.per_minute— максимальное количество входящих запросов, которые могут поступать в маршрут за одну минуту.
Параметры
per_secondиper_minute— взаимоисключающие: вы можете использовать только один из них. -
requests_per_ip— (опционально) ограничение на входящие запросы с одного IP-адреса:per_second— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать в маршрут за одну секунду.per_minute— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать в маршрут за одну минуту.
Параметры
per_secondиper_minute— взаимоисключающие: вы можете использовать только один из них.
-
-
... route { name = "<имя_маршрута>" disable_security_profile = true|false grpc_route { grpc_match { fqmn { prefix = "/<префикс_FQMN_запроса>" # или exact = "<FQMN_запроса>" # или regex = "<регулярное_выражение>" } } grpc_route_action { backend_group_id = "<идентификатор_группы_бэкендов>" host_rewrite = "<значение_заголовка_Host>" max_timeout = "<таймаут_соединения>s" idle_timeout = "<таймаут-простоя>s" rate_limit { all_requests { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } requests_per_ip { per_second = <количество_запросов_в_секунду> # или per_minute = <количество_запросов_в_минуту> } } } } } ...Где:
-
route— описание маршрута виртуального хоста:name— имя маршрута.disable_security_profile— (опционально) опция отключения профиля безопасности сервиса Yandex Smart Web Security. Возможные значения:true(профиль отключен) илиfalse(профиль включен). По умолчанию профиль безопасности включен (значениеfalse).
-
grpc_route— описание маршрута для gRPC-трафика:-
grpc_match.fqmn— (опционально) параметр для фильтрации входящих gRPC-запросов по FQMN:exact— маршрутизировать запросы, FQMN в которых идентичен заданному.prefix— маршрутизировать запросы, FQMN в которых начинается с заданного префикса. Например, вы можете указать первое слово в имени сервиса:/helloworld.regex— маршрутизировать запросы, FQMN в которых удовлетворяет заданному регулярному выражению стандарта RE2 . Например:\/[a-z]{10}[0-9]{3}.
Параметры
exact,prefixиregex— взаимоисключающие: вы можете использовать только один из них. -
grpc_route_action— параметр для указания действия с gRPC-трафиком.backend_group_id— идентификатор группы бэкендов, расположенной в том же каталоге, в котором находятся HTTP-роутер и виртуальный хост, для которых создается маршрут.host_rewrite— (опционально) замена заголовка Host в запросе на указанное значение. Вместо параметраhost_rewriteвы можете указать параметрauto_host_rewrite— в этом случае заголовок Host в запросе автоматически будет заменяться на адрес целевой виртуальной машины.max_timeout— (опционально) максимальный таймаут ожидания запроса в секундах. Клиент может указать в запросе HTTP-заголовокgrpc-timeoutс меньшим значением таймаута. Значение по умолчанию — 60 секунд.idle_timeout— (опционально) максимальное время keep-alive, в течение которого соединение может простаивать без передачи данных. Если не задано, соединение без передачи данных будет сразу разрываться.-
rate_limit— (опционально) параметр для ограничения количества запросов за единицу времени:-
all_requests— (опционально) ограничение на все входящие запросы:per_second— максимальное количество входящих запросов, которые могут поступать в маршрут за одну секунду.per_minute— максимальное количество входящих запросов, которые могут поступать в маршрут за одну минуту.
Параметры
per_secondиper_minute— взаимоисключающие: вы можете использовать только один из них. -
requests_per_ip— (опционально) ограничение на входящие запросы с одного IP-адреса:per_second— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать в маршрут за одну секунду.per_minute— максимальное количество входящих запросов с одного IP-адреса, которые могут поступать в маршрут за одну минуту.
Параметры
per_secondиper_minute— взаимоисключающие: вы можете использовать только один из них.
-
-
Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера: yandex_alb_virtual_host.
-
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
или с помощью команды CLI:yc alb virtual-host get <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера>Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с HTTP-роутерами и виртуальными хостами Application Load Balancer 10 минутами.
Операции, которые длятся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию HTTP-роутера и виртуального хоста блоки
timeouts(ресурсыyandex_alb_http_routerиyandex_alb_virtual_hostсоответственно).Пример:
resource "yandex_alb_http_router" "<имя_роутера>" { ... timeouts { create = "60m" update = "60m" delete = "60m" } } -
Воспользуйтесь методом REST API update для ресурса VirtualHost или вызовом gRPC API VirtualHostService/Update.
Примечание
Маршруты виртуального хоста будут применяться к поступающим запросам в том порядке, в котором они описаны в теле запроса.
Изменить порядок маршрутов в виртуальном хосте
Чтобы изменить порядок маршрутов в виртуальном хосте HTTP-роутера:
-
В консоли управления
выберите каталог, в котором вы будете изменять порядок маршрутов виртуального хоста. -
В списке сервисов выберите Application Load Balancer.
-
На панели слева выберите
HTTP-роутеры и выберите HTTP-роутер, в котором находится нужный виртуальный хост. -
На открывшейся странице в секции Виртуальные хосты в блоке с нужным виртуальным хостом нажмите значок
и выберите Редактировать. -
Чтобы изменить порядок маршрутов, нажмите кнопку Сортировать и в открывшемся окне:
- С помощью мышки методом перетаскивания выстройте нужный порядок маршрутов.
- Нажмите кнопку Сохранить.
-
Нажмите кнопку Сохранить.
В Yandex Cloud CLI в настоящий момент нет отдельной команды, позволяющей изменять порядок маршрутов в виртуальном хосте.
Чтобы изменить порядок маршрутов с помощью CLI, воспользуйтесь следующим порядком действий:
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Примечание
Маршруты виртуального хоста будут применяться к поступающим запросам в том порядке, в котором они описаны в конфигурационном файле Terraform.
-
Измените в конфигурационном файле порядок маршрутов как ресурсов, вложенных в ресурс типа yandex_alb_virtual_host.
Пример конфигурации виртуального хоста:
resource "yandex_alb_virtual_host" "my-virtual-host" { name = "test-virtual-host" http_router_id = "ds76j5n6a39g********" rate_limit { all_requests { per_second = 5 } requests_per_ip { per_second = 3 } } route { name = "my-first-http-route" disable_security_profile = false http_route { http_match { http_method = ["GET","POST"] path { prefix = "/myapp/" } } http_route_action { backend_group_id = "ds7dnf2s5dco********" host_rewrite = "myapp" idle_timeout = "3s" prefix_rewrite = "/yourapp/" rate_limit { all_requests { per_second = 12 } requests_per_ip { per_minute = 120 } } timeout = "10s" } } } route { name = "my-first-grpc-route" disable_security_profile = false grpc_route { grpc_match { fqmn { prefix = "/" } } grpc_route_action { backend_group_id = "ds7dq9nsrgpc********" host_rewrite = "myapp" idle_timeout = "5s" max_timeout = "10s" rate_limit { all_requests { per_minute = 0 per_second = 12 } requests_per_ip { per_minute = 0 per_second = 6 } } } } } authority = ["example.com"] modify_request_headers { name = "Accept-Language" append = "ru-RU" } modify_response_headers { name = "Accept-Language" append = "ru-RU" } route_options { security_profile_id = "fevu5fnuk6vf********" } }Информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера: yandex_alb_virtual_host.
-
Обновите ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление, порядок ресурсов и их настройки можно в консоли управления
или с помощью команды CLI:yc alb virtual-host get <имя_виртуального_хоста> \ --http-router-name <имя_HTTP-роутера>Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с HTTP-роутерами и виртуальными хостами Application Load Balancer 10 минутами.
Операции, которые длятся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию HTTP-роутера и виртуального хоста блоки
timeouts(ресурсыyandex_alb_http_routerиyandex_alb_virtual_hostсоответственно).Пример:
resource "yandex_alb_http_router" "<имя_роутера>" { ... timeouts { create = "60m" update = "60m" delete = "60m" } } -
Воспользуйтесь методом REST API update для ресурса VirtualHost или вызовом gRPC API VirtualHostService/Update.
Примечание
Маршруты виртуального хоста будут применяться к поступающим запросам в том порядке, в котором они описаны в теле запроса.
Изменить таймаут маршрута
Изменение таймаута доступно только для маршрутов с типом действия Маршрутизация.
Чтобы изменить таймаут маршрута HTTP-роутера:
- В консоли управления
выберите каталог, в котором создан HTTP-роутер. - Выберите сервис Application Load Balancer.
- На панели слева выберите
HTTP-роутеры. - Нажмите на имя нужного роутера.
- Нажмите Редактировать.
- В разделе Виртуальные хосты для нужного маршрута измените значение поля Таймаут, с.
- Внизу страницы нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Посмотрите описание команды CLI для изменения маршрута:
yc alb virtual-host update-http-route --help -
Выполните команду:
yc alb virtual-host remove-http-route <имя_маршрута> \ --virtual-host-name <имя_виртуального_хоста> \ --http-router-name <имя_роутера> \ --request-timeout <таймаут>Где
--request-timeout— новое значение таймаута с указанием единиц измерения времени, например120s.Результат:
name: host-one routes: - name: route-one http: match: path: prefix_match: / route: backend_group_id: ds7d6hg1dg24******** timeout: 120s auto_host_rewrite: false
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Откройте файл конфигурации Terraform и измените значение параметра
timeoutдля нужного маршрута:resource "yandex_alb_virtual_host" "my-virtual-host" { name = "my-virtual-host" http_router_id = "${yandex_alb_http_router.tf-router.id}" route { name = "my-route" http_route { http_route_action { backend_group_id = "${yandex_alb_backend_group.backend-group.id}" timeout = "3s" } } } }Более подробную информацию о параметрах ресурса
yandex_alb_virtual_hostв Terraform см. в документации провайдера. -
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Terraform изменит все требуемые ресурсы. Проверить изменение виртуального хоста можно в консоли управления
или с помощью команды CLI:yc alb virtual-host get <идентификатор_виртуального_хоста>Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с HTTP-роутерами и виртуальными хостами Application Load Balancer 10 минутами.
Операции, которые длятся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию HTTP-роутера и виртуального хоста блоки
timeouts(ресурсыyandex_alb_http_routerиyandex_alb_virtual_hostсоответственно).Пример:
resource "yandex_alb_http_router" "<имя_роутера>" { ... timeouts { create = "60m" update = "60m" delete = "60m" } } -
Воспользуйтесь методом REST API update для ресурса VirtualHost или вызовом gRPC API VirtualHostService/Update.