Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Application Load Balancer
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Целевые группы
      • Создать целевую группу
      • Изменить целевую группу
      • Удалить целевую группу
    • Группы бэкендов
      • Создать группу бэкендов
      • Изменить группу бэкендов
      • Удалить группу бэкендов
    • HTTP-роутеры
      • Создать HTTP-роутер для HTTP-трафика
      • Создать HTTP-роутер для gRPC-трафика
      • Изменить HTTP-роутер
      • Удалить HTTP-роутер
    • L7-балансировщики
      • Создать L7-балансировщик
      • Изменить L7-балансировщик
      • Посмотреть статистику L7-балансировщика
      • Посмотреть логи L7-балансировщика
      • Получить идентификатор лог-группы L7-балансировщика
      • Остановить и запустить L7-балансировщик
      • Удалить L7-балансировщик
    • Инструменты для Managed Service for Kubernetes
      • Установить Ingress-контроллер
      • Установить Gateway API
      • Создать или изменить ресурсы по конфигурации
  • Практические руководства
    • Все практические руководства
    • Организация виртуального хостинга
    • Создание балансировщика с защитой от DDoS
    • Интеграция L7-балансировщика с CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Терминирование TLS-соединений
    • Запись логов балансировщика в PostgreSQL
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
  • Концепции
    • Обзор
    • Балансировщики нагрузки
    • HTTP-роутеры
    • Группы бэкендов
    • Целевые группы
    • Квоты и лимиты
  • Инструменты для Managed Service for Kubernetes
    • Ingress-контроллер
      • Обзор
      • Принципы работы
    • Gateway API
    • Необходимые настройки
      • Группы безопасности
      • Сервисный аккаунт
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackendGroupService
      • HttpRouterService
      • LoadBalancerService
      • TargetGroupService
      • VirtualHostService
      • OperationService
    • REST (англ.)
      • Overview
      • BackendGroup
        • Overview
        • addBackend
        • create
        • delete
        • get
        • list
        • listOperations
        • removeBackend
        • update
        • updateBackend
      • HttpRouter
        • Overview
        • create
        • delete
        • get
        • list
        • listOperations
        • update
      • LoadBalancer
        • Overview
        • addListener
        • addSniMatch
        • create
        • delete
        • get
        • getTargetStates
        • list
        • listOperations
        • removeListener
        • removeSniMatch
        • start
        • stop
        • update
        • updateListener
        • updateSniMatch
      • TargetGroup
        • Overview
        • addTargets
        • create
        • delete
        • get
        • list
        • listOperations
        • removeTargets
        • update
      • VirtualHost
        • Overview
        • create
        • delete
        • get
        • list
        • removeRoute
        • update
        • updateRoute
  • Справочники инструментов для Managed Service for Kubernetes
    • Обзор
    • Ingress-контроллер
      • Ingress
      • HttpBackendGroup
    • Gateway API
      • Gateway
      • HTTPRoute
    • Service
  • Справочник логов
  1. Пошаговые инструкции
  2. L7-балансировщики
  3. Создать L7-балансировщик

Создать L7-балансировщик

Статья создана
Yandex Cloud

    Чтобы создать L7-балансировщик:

    Консоль управления
    CLI
    Terraform
    1. В консоли управления выберите каталог, в котором будет создан балансировщик.

    2. В списке сервисов выберите Application Load Balancer.

    3. Нажмите кнопку Создать балансировщик и выберите Вручную.

    4. Введите имя балансировщика: test-load-balancer.

    5. В блоке Сетевые настройки выберите сеть, в подсетях которой будут размещаться узлы балансировщика, и подходящие группы безопасности (если соответствующего поля нет, для балансировщика будет разрешен любой входящий и исходящий трафик).

    6. (опционально) В блоке Настройки автомасштабирования укажите ограничения на количество ресурсных единиц.

      Количество единиц будет меняться автоматически с учетом нагрузки на балансировщик и установленных ограничений. От количества единиц зависит тарификация балансировщика.

    7. В блоке Размещение выберите три подсети для узлов балансировщика и включите передачу трафика в эти подсети.

    8. В блоке Обработчики нажмите кнопку Добавить обработчик. Задайте настройки обработчика:

      1. Введите имя обработчика: test-listener.

      2. (опционально) Включите опцию Публичный IP-адрес. Укажите Порт: 80 и выберите Тип:

        • Автоматически.
        • Список — в появившемся поле справа выберите адрес в выпадающем списке.
      3. (опционально) Включите опцию Внутренний IP-адрес. Укажите Порт и выберите Подсеть в выпадающем списке.

      4. В блоке Прием и обработка трафика выберите тип обработчика: HTTP или Stream.

        Для HTTP выберите:

        • Протокол: HTTP,HTTPS или Перенаправлять на HTTPS.
        • HTTP-роутер в выпадающем списке.

        Для Stream выберите протокол:

        • Открытый: выберите Группы бэкендов в выпадающем списке.
        • Зашифрованный: в блоке Основной обработчик выберите Сертификаты и Группы бэкендов в выпадающих списках.
    9. При необходимости добавьте дополнительные обработчики.

    10. Нажмите кнопку Создать.

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

    По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

    1. Посмотрите описание команды CLI для создания L7-балансировщика:

      yc alb load-balancer create --help
      
    2. Выполните команду, указав сеть и подсети, в которых будут размещаться узлы балансировщика, а также подходящие группы безопасности:

      yc alb load-balancer create <имя_балансировщика> \
        --network-name <имя_сети> \
        --location subnet-name=<имя_подсети>,zone=<зона_доступности>
      

      Опцию --location можно повторять несколько раз, чтобы указать разные зоны доступности и подсети.

      Результат:

      done (1m40s)
      id: a5d88ep483cmbfm63g9t
      name: test-balancer2
      folder_id: aoe197919j8elpeg1lkp
      status: ACTIVE
      region_id: ru-central1
      network_id: c64l1c06d15178sa87k0
      allocation_policy:
        locations:
        - zone_id: ru-central1-a
          subnet_id: buc4gsmpj8hvramg61g8
        - zone_id: ru-central1-b
          subnet_id: blt6pcatjje62sqvjq5b
        - zone_id: ru-central1-c
          subnet_id: fo2ap2nrhjk9vpfdnno8
      log_group_id: eolul9ap0bv02i8bsp87
      created_at: "2021-04-26T12:12:13.624832586Z"
      
    3. (опционально) Установите ограничения на количество ресурсных единиц:

      1. Посмотрите описание команды CLI для настройки ограничений:

        yc alb load-balancer autoscale --help
        
      2. Установите ограничения, выполнив команду:

        yc alb load-balancer autoscale <имя_или_ID_балансировщика> \
          --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: a5d88ep483cmbfm63g9t
        name: test-balancer2
        folder_id: aoe197919j8elpeg1lkp
        status: ACTIVE
        region_id: il1
        network_id: c64l1c06d15178sa87k0
        allocation_policy:
          locations:
            - zone_id: il1-a
              subnet_id: buc4gsmpj8hvramg61g8
        created_at: "2022-06-02T12:12:13.624832586Z"
        auto_scale_policy:
          min_zone_size: 3
          max_size: 10
        
    4. Добавьте обработчик для L7-балансировщика:

      • HTTP-обработчик:

        1. Посмотрите описание команды CLI для добавления HTTP-обработчика L7-балансировщика:

          yc alb load-balancer add-listener --help
          
        2. Добавьте обработчик, выполнив команду:

          yc alb load-balancer add-listener <имя балансировщика> \
            --listener-name <имя обработчика> \
            --http-router-id <идентификатор HTTP-роутера> \
            --external-ipv4-endpoint port=<порт обработчика>
          
      • Stream-обработчик:

        1. Посмотрите описание команды CLI для добавления Stream-обработчика L7-балансировщика:

          yc alb load-balancer add-stream-listener --help
          
        2. Добавьте обработчик, выполнив команду:

          yc alb load-balancer add-stream-listener <имя балансировщика> \
            --listener-name=<имя обработчика> \
            --backend-group-id=<идентификатор группы бэкендов> \
            --external-ipv4-endpoint port=<порт обработчика>
          

      Результат после добавления двух обработчиков:

      done (42s)
      id: ds76g8b2op3fej12nab6
      name: test-load-balancer
      folder_id: b1gu6g9ielh690at5bm7
      status: ACTIVE
      network_id: enp0uulja5s3j1ftvfei
      listeners:
      - name: tslistener
        endpoints:
        - addresses:
          - external_ipv4_address:
              address: 51.250.64.197
          ports:
          - "80"
        http:
          handler:
            http_router_id: ds7d7b14b3fsv7qjkvel
      - name: teststreamlistener
        endpoints:
        - addresses:
          - external_ipv4_address:
              address: 51.250.64.197
          ports:
          - "443"
        stream:
          handler:
            backend_group_id: ds77tero4f5h46l4e2gl
      allocation_policy:
        locations:
        - zone_id: ru-central1-a
          subnet_id: e9bs1hp7lgdl1g3n6ci1
        - zone_id: ru-central1-b
          subnet_id: e2le8i7hqa216f6i6php
        - zone_id: ru-central1-c
          subnet_id: b0cgk1au6fn203f3tqnf
      log_group_id: ckgs4u5km3u8j9f360md
      security_group_ids:
      - enp49ot04g63ih1scuap
      created_at: "2022-04-04T02:12:40.160629110Z"
      

    Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). Terraform и его провайдеры распространяются под лицензией Mozilla Public License.

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

    При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

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

    1. Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:

      resource "yandex_alb_load_balancer" "test-balancer" {
        name        = "<имя L7-балансировщика>"
        network_id  = "<идентификатор сети>"
      
        allocation_policy {
          location {
            zone_id   = "<зона доступности>"
            subnet_id = "<идентификатор подсети>" 
          }
        }
      
        listener {
          name = "<имя обработчика>"
          endpoint {
            address {
              external_ipv4_address {
              }
            }
            ports = [ 9000 ]
          }
          http {
            handler {
              http_router_id = "<идентификатор HTTP-роутера>"
            }
          }
        }
      }
      

      Где:

      • name — имя L7-балансировщика. Формат имени:

        • Длина — от 3 до 63 символов.
        • Может содержать строчные буквы латинского алфавита, цифры и дефисы.
        • Первый символ — буква. Последний символ — не дефис.
      • network_id — идентификатор сети.

      • allocation_policy — описание расположения узлов L7-балансировщика. Укажите идентификаторы зоны доступности и подсети.

      • listener — описание параметров обработчика для L7-балансировщика:

        • name — имя обработчика. Формат имени:

          • Длина — от 3 до 63 символов.
          • Может содержать строчные буквы латинского алфавита, цифры и дефисы.
          • Первый символ — буква. Последний символ — не дефис.
        • endpoint — описание адресов и портов обработчика. Укажите внешний IPv4-адрес и порт для приема трафика. Если параметр external_ipv4_address не задан, то публичный адрес будет выделен автоматически.

        • http — описание HTTP-приемника для обработчика. Укажите идентификатор HTTP-роутера.

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

    2. Проверьте корректность конфигурационных файлов.

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

      2. Выполните проверку с помощью команды:

        terraform plan
        

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

    3. Разверните облачные ресурсы.

      1. Если в конфигурации нет ошибок, выполните команду:

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

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

        yc alb load-balancer list
        

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

    Language / Region
    Проект Яндекса
    © 2023 ООО «Яндекс.Облако»