Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Application Load Balancer
  • Начало работы
    • Все инструкции
    • Создать инфраструктуру Application Load Balancer c помощью визарда
      • Создать HTTP-роутер для HTTP-трафика
      • Создать HTTP-роутер для gRPC-трафика
      • Получить информацию об HTTP-роутере
      • Изменить HTTP-роутер
      • Удалить HTTP-роутер
    • Посмотреть операции с ресурсами сервиса
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Логи L7-балансировщика
  • История изменений
  • Обучающие курсы
  1. Пошаговые инструкции
  2. HTTP-роутеры
  3. Создать HTTP-роутер для gRPC-трафика

Создать HTTP-роутер для gRPC-трафика

Статья создана
Yandex Cloud
Улучшена
Обновлена 21 апреля 2025 г.

Чтобы создать HTTP-роутер и добавить в него маршрут:

Консоль управления
CLI
Terraform
API
  1. В меню слева выберите HTTP-роутеры.

  2. Нажмите кнопку Создать HTTP-роутер.

  3. Введите имя HTTP-роутера.

  4. В блоке Виртуальные хосты нажмите кнопку Добавить виртуальный хост.

  5. Введите Имя.

  6. В поле Authority введите: * или IP-адрес балансировщика.

  7. (Опционально) В поле Профиль безопасности выберите профиль безопасности сервиса Yandex Smart Web Security. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. Профили безопасности.

  8. Нажмите кнопку Добавить маршрут и выберите Тип: gRPC.

    1. Введите Имя.

    2. В поле FQMN выберите одну из опций:

      • Начинается с — для маршрутизации всех запросов, начинающихся с определенного FQMN. В поле ввода укажите /<первое_слово_названия_сервиса>, например: /helloworld.
      • Совпадает с — для маршрутизации всех запросов, совпадающих с указанным FQMN.
      • Регулярное выражение — для маршрутизации всех запросов, удовлетворяющих регулярному выражению стандарта RE2.

      Важно

      FQMN должно начинаться с косой черты / и содержать часть полного названия сервиса, на который перенаправляется вызов процедуры.

    3. В поле Действие выберите одну из опций: Маршрутизация или Ответ. В зависимости от выбранной опции:

      • Маршрутизация:
        • В списке Группа бэкендов выберите имя группы бэкендов из того же каталога, в котором создаете HTTP-роутер.
        • (Опционально) В поле Замена заголовка Host выберите одну из опций:
          • none — замена не происходит.
          • rewrite — происходит замена на указанное значение.
          • auto — происходит автоматическая замена на адрес целевой виртуальной машины.
        • (Опционально) В поле Максимальный таймаут, с укажите максимальное время, на которое может быть установлено соединение. Клиент может указать в запросе HTTP-заголовок grpc-timeout с меньшим тайм-аутом.
        • (Опционально) В поле Таймаут простоя, с укажите максимальное время, в течение которого соединение может простаивать без передачи данных.
      • Ответ:
        • В поле Код состояния gRPC выберите код, по которому будет осуществляться ответ.
  9. Нажмите кнопку Создать.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Посмотрите описание команды CLI для создания HTTP-роутера:

    yc alb http-router create --help
    
  2. Выполните команду:

    yc alb http-router create <имя_HTTP-роутера>
    

    Результат:

    id: a5dcsselagj4********
    name: <имя_HTTP-роутера>
    folder_id: aoerb349v3h4********
    created_at: "2022-06-16T21:04:59.438292069Z"
    
  3. Посмотрите описание команды CLI для создания виртуального хоста:

    yc alb virtual-host create --help
    
  4. Создайте виртуальный хост, указав имя HTTP-роутера и настройки виртуального хоста:

    yc alb virtual-host create <имя_виртуального_хоста> \
      --http-router-name <имя_HTTP-роутера> \
      --authority * \
      --rate-limit rps=100,all-requests \
      --security-profile-id <идентификатор_профиля_безопасности>
    

    Где:

    • --http-router-name — имя HTTP-роутера.
    • --authority — домены для заголовков :authority, которые будут связаны с этим виртуальным хостом. Поддерживаются символы подстановки, например *.foo.com или *-bar.foo.com.
    • --rate-limit — (опционально) ограничение на скорость запросов:
      • rps или rpm – количество запросов, которые можно принять в секунду или минуту.
      • all-requests — ограничение на все входящие запросы.
      • requests-per-ip — ограничение на количество запросов для каждого IP-адреса в отдельности. То есть в единицу времени для каждого IP-адреса можно принять указанное количество запросов.
    • --security-profile-id — (опционально) идентификатор профиля безопасности сервиса Yandex Smart Web Security. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. Профили безопасности.

    Результат:

    done (1s)
    name: <имя_виртуального_хоста>
    authority:
      - *
    rate_limit:
      all_requests:
        per_second: "100"
    
  5. Посмотрите описание команды CLI для добавления маршрута:

    yc alb virtual-host append-grpc-route --help
    
  6. Добавьте маршрут, указав идентификатор или имя 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 \
      --rate-limit rps=50,requests-per-ip
    

    Где:

    • --virtual-host-name — имя виртуального хоста.

    • --http-router-name — имя HTTP-роутера.

    • --prefix-fqmn-match — параметр для маршрутизации всех запросов с определенным началом. После параметра укажите FQMN /.

      Также, чтобы задать условие для маршрутизации, вы можете использовать опции:

      • --exact-fqmn-match — для маршрутизации всех запросов, совпадающих с указанным FQMN. После параметра укажите /<FQMN>/.
      • --regex-fqmn-match — для маршрутизации всех запросов, удовлетворяющих регулярному выражению стандарта RE2. После параметра укажите /<регулярное_выражение>.
    • --backend-group-name — имя группы бэкендов.

    • --rate-limit — ограничение на скорость запросов.

    • --request-max-timeout — максимальный тайм-аут ожидания запроса, в секундах. Клиент может указать в запросе HTTP-заголовок grpc-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 позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

  1. Опишите в конфигурационном файле параметры 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-роутера. Формат имени:

        • длина — от 2 до 63 символов;
        • может содержать строчные буквы латинского алфавита, цифры и дефисы;
        • первый символ — буква, последний — не дефис.
      • labels — метки для HTTP-роутера. Укажите пару ключ — значение.

    • yandex_alb_virtual_host — описание виртуального хоста:
      • name — имя виртуального хоста. Формат имени:

        • длина — от 2 до 63 символов;
        • может содержать строчные буквы латинского алфавита, цифры и дефисы;
        • первый символ — буква, последний — не дефис.
      • http_router_id — идентификатор HTTP-роутера.

      • route — описание маршрута HTTP-роутера:

        • name — имя маршрута.
        • grpc_route — описание маршрута для gRPC-трафика:
          • grpc_route_action — параметр для указания действия с gRPC-трафиком.
            • backend_group_id — идентификатор группы бэкэндов.
            • max_timeout — максимальный тайм-аут ожидания запроса, в секундах. Клиент может указать в запросе HTTP-заголовок grpc-timeout с меньшим тайм-аутом.
      • route_options — (опционально) дополнительные параметры виртуального хоста:

        • security_profile_id — идентификатор профиля безопасности сервиса Yandex Smart Web Security. Профиль безопасности позволяет настроить фильтрацию входящих запросов, подключить WAF и установить лимиты на количество запросов для защиты от вредоносной активности. Подробнее см. Профили безопасности.

    Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера:

    • Ресурс yandex_alb_http_router.
    • Ресурс yandex_alb_virtual_host.
  2. Создайте ресурсы

    1. В терминале перейдите в папку, где вы отредактировали конфигурационный файл.

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

      В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

    Terraform создаст все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления или с помощью команды CLI:

    yc alb http-router get <имя_HTTP-роутера>
    

Воспользуйтесь методом REST API create для ресурса HttpRouter или вызовом gRPC API HttpRouterService/Create.

Была ли статья полезна?

Предыдущая
Создать HTTP-роутер для HTTP-трафика
Следующая
Получить информацию об HTTP-роутере
Проект Яндекса
© 2025 ООО «Яндекс.Облако»