Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Практические руководства
    • Все руководства
    • Разграничение прав доступа для групп пользователей
    • Приглашение нового пользователя и назначение ролей
    • Создание L7-балансировщика с профилем безопасности Smart Web Security через Ingress-контроллер Application Load Balancer
    • Создание распределенной инфраструктуры с защищенным доступом
    • Централизованная публикация в интернете и защита приложений от DDoS
    • Базовая настройка SWS
    • Экстренная защита сервисов в Application Load Balancer от DDoS на уровне L7
      • Обзор
        • Обзор
        • Консоль управления
        • Terraform
    • Передача логов с виртуальной машины в Cloud Logging
    • Запись логов балансировщика в PostgreSQL
    • Безопасное хранение паролей для GitLab CI в виде секретов Yandex Lockbox
    • Сервисный аккаунт с профилем OS Login для управления ВМ с помощью Ansible
    • Передача логов с Container Optimized Image в Cloud Logging
    • Добавление HTML-страницы для работы SmartCaptcha
    • Настройка алертов и дашбордов в Monitoring
    • Загрузка аудитных логов в MaxPatrol SIEM
    • Загрузка аудитных логов в SIEM Splunk
    • Загрузка аудитных логов в SIEM ArcSight
    • Шифрование для бакета Object Storage на стороне сервера
    • Шифрование секретов в HashiCorp Terraform
    • Управление ключами KMS с HashiCorp Terraform
    • Auto Unseal в HashiCorp Vault
    • Передача логов кластера Yandex MPP Analytics for PostgreSQL в Yandex Cloud Logging

В этой статье:

  • Рекомендации по миграции сервисов
  • Создайте инфраструктуру
  • Проверьте работу L7-балансировщика
  • Мигрируйте пользовательскую нагрузку с сетевого балансировщика на L7-балансировщик
  • Обработчик сетевого балансировщика использует публичный IP-адрес с защитой от DDoS
  • Обработчик сетевого балансировщика использует публичный IP-адрес без защиты от DDoS
  1. Безопасность
  2. Миграция сервисов с балансировщика NLB на L7-балансировщик ALB для подключения защиты Smart Web Security
  3. Балансировщик NLB с целевыми ресурсами из группы виртуальных машин
  4. Terraform

Миграция сервисов с балансировщика NLB с целевыми ресурсами из группы виртуальных машин (Instance Groups) на L7-балансировщик ALB с помощью Terraform

Статья создана
Yandex Cloud
Обновлена 1 октября 2025 г.
  • Рекомендации по миграции сервисов
  • Создайте инфраструктуру
  • Проверьте работу L7-балансировщика
  • Мигрируйте пользовательскую нагрузку с сетевого балансировщика на L7-балансировщик
    • Обработчик сетевого балансировщика использует публичный IP-адрес с защитой от DDoS
    • Обработчик сетевого балансировщика использует публичный IP-адрес без защиты от DDoS

Важно

Часть ресурсов, необходимых для прохождения практического руководства, доступны только в регионе Россия.

Чтобы мигрировать сервис с сетевого балансировщика на L7-балансировщик:

  1. Ознакомьтесь с рекомендациями по миграции сервисов.
  2. Создайте инфраструктуру. На этом этапе вы подключите профиль безопасности Smart Web Security к виртуальному хосту L7-балансировщика.
  3. Проверьте работу L7-балансировщика.
  4. Мигрируйте пользовательскую нагрузку с сетевого балансировщика на L7-балансировщик.

Рекомендации по миграции сервисовРекомендации по миграции сервисов

  1. Подключите защиту от DDoS-атак на уровне L3-L4 (модель OSI). Она станет дополнением к защите на уровне L7, которую после миграции обеспечит Yandex Smart Web Security.

    Чтобы подключить защиту на уровне L3-L4:

    1. Перед миграцией зарезервируйте статический публичный IP-адрес с защитой от DDoS-атак и используйте этот адрес для обработчика L7-балансировщика. Если для сетевого балансировщика публичный IP с защитой уже есть, его можно сохранить при миграции. В противном случае IP-адрес придется поменять на защищенный.

    2. Настройте порог для срабатывания механизмов защиты, который будет соответствовать объему легитимного трафика на защищаемый ресурс. Для настройки такого порога обратитесь в техническую поддержку.

    3. Задайте значение MTU равным 1450 на целевых ресурсах за балансировщиком. Подробнее см. в разделе MTU и TCP MSS.

  2. Проводите миграцию в часы наименьшей пользовательской нагрузки. Во время миграции ваш сервис будет недоступен, пока для группы ВМ изменяется интеграция с целевой группой и публичный IP-адрес переносится с сетевого балансировщика на L7-балансировщик. Время недоступности сервиса зависит от количества ВМ в группе, настроек политик развертывания и обычно занимает от нескольких минут до нескольких десятков минут.

  3. При использовании L7-балансировщика запросы на бэкенды приходят с IP-адресом источника из диапазона внутренних IP-адресов подсетей, указанных при создании L7-балансировщика. Исходный IP-адрес источника запроса (пользователя) фигурирует в заголовке X-Forwarded-For. Если необходимо логировать публичные IP-адреса пользователей на веб-сервере, измените его конфигурацию.

  4. Перед миграцией определите минимальное количество ресурсных единиц для настройки автомасштабирования в L7-балансировщике.

    Количество ресурсных единиц выберите на основе анализа нагрузки на ваш сервис по следующим показателям:

    • количество запросов в секунду (RPS);
    • количество одновременных активных соединений;
    • количество новых соединений в секунду;
    • объем трафика в секунду.

Создайте инфраструктуруСоздайте инфраструктуру

  1. Если у вас еще нет Terraform, установите его.

  2. Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.

  3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

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

  5. Скачайте в ту же рабочую директорию файл конфигурации в зависимости от используемого протокола:

    • HTTP — файл конфигурации alb-vm-http.tf.
    • HTTPS — файл конфигурации alb-vm-https.tf.

    В этих файлах описаны:

    • подсети для L7-балансировщика;
    • группа безопасности для L7-балансировщика;
    • статический адрес для L7-балансировщика;
    • импорт TLS-сертификата в Certificate Manager (если используется протокол HTTPS);
    • профиль безопасности Smart Web Security;
    • целевая группа, группа бэкендов и HTTP-роутер для L7-балансировщика;
    • L7-балансировщик.
  6. В конфигурационном файле задайте пользовательские параметры:

    1. Укажите значения переменных:

      • domain_name — имя домена вашего сервиса.
      • network_id — идентификатор сети, в которой находятся виртуальные машины из целевой группы сетевого балансировщика нагрузки.
      • certificate (если используется протокол HTTPS) — путь к файлу самоподписанного пользовательского сертификата.
      • private_key (если используется протокол HTTPS) — путь к файлу с закрытым ключом.
    2. Для ресурса yandex_alb_target_group добавьте столько блоков target, сколько виртуальных машин находится в целевой группе вашего сетевого балансировщика нагрузки:

      resource "yandex_alb_target_group" "alb-target-group" {
        ...
        target {
          subnet_id    = "<идентификатор_подсети>"
          ip_address   = "<внутренний_IP-адрес_ВМ_1>"
        }
        target {
          subnet_id    = "<идентификатор_подсети>"
          ip_address   = "<внутренний_IP-адрес_ВМ_2>"
        }
        ...
        target {
          subnet_id    = "<идентификатор_подсети>"
          ip_address   = "<внутренний_IP-адрес_ВМ_N>"
        }
      }
      

      Где:

      • subnet_id — идентификатор подсети, в которой расположена виртуальная машина.
      • ip_address — внутренний IP-адрес виртуальной машины, указанной в целевой группе вашего сетевого балансировщика нагрузки.
    3. Если для вашего сервиса требуется, чтобы запросы в рамках одной пользовательской сессии обрабатывал один и тот же ресурс бэкенда, включите для группы бэкендов привязку сессий (session affinity) — для ресурса yandex_alb_backend_group раскомментируйте блок:

      session_affinity {
        connection {
          source_ip = true
        }
      }
      
  7. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  8. Создайте необходимую инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

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

  9. В консоли управления перейдите в каталог, в котором создан L7-балансировщик.

  10. Выберите сервис Application Load Balancer.

  11. Дождитесь, когда L7-балансировщик перейдет в статус Active.

  12. Укажите настройки автомасштабирования в L7-балансировщике:

    1. В консоли управления нажмите на имя нужного балансировщика.
    2. Нажмите и выберите Редактировать.
    3. В блоке Настройки автомасштабирования укажите ограничения на количество ресурсных единиц.
    4. Нажмите кнопку Сохранить.

Проверьте работу L7-балансировщикаПроверьте работу L7-балансировщика

  1. В консоли управления перейдите в созданный L7-балансировщик и слева выберите Проверки состояния. Убедитесь, что все проверки состояния L7-балансировщика показывают состояние HEALTHY.

  2. Протестируйте запрос к сервису через L7-балансировщик. Например, одним из способов:

    • В файле hosts на рабочей станции добавьте запись <публичный_IP-адрес_L7-балансировщика> <имя_домена_сервиса>. Удалите запись после тестирования.

    • Выполните запрос с помощью cURL в зависимости от типа протокола:

      curl http://<имя_домена_сервиса> \
          --resolve <имя_домена_сервиса>:<порт_сервиса>:<публичный_IP-адрес_L7-балансировщика>
      
      curl https://<имя_домена_сервиса> \
          --resolve <имя_домена_сервиса>:<порт_сервиса>:<публичный_IP-адрес_L7-балансировщика>
      

Мигрируйте пользовательскую нагрузку с сетевого балансировщика на L7-балансировщикМигрируйте пользовательскую нагрузку с сетевого балансировщика на L7-балансировщик

Важно

В процессе миграции будут пересозданы ВМ бэкенда.

Если обработчик сетевого балансировщика использует публичный IP-адрес без защиты от DDoS, запомните текущие настройки проверок состояния для целевой группы в сетевом балансировщике, прежде чем приступать к миграции. Эти настройки понадобятся при подключении новой целевой группы к балансировщику.

Чтобы мигрировать нагрузку:

  1. Измените для группы ВМ интеграцию с целевой группой:

    1. В консоли управления перейдите в каталог, в котором находится группа ВМ.
    2. Выберите сервис Compute Cloud.
    3. На панели слева выберите Группы виртуальных машин.
    4. Выберите группу, которую хотите изменить.
    5. В правом верхнем углу страницы нажмите Редактировать.
    6. В блоке Интеграция с Application Load Balancer включите опцию Создать целевую группу.
    7. Укажите имя целевой группы L7-балансировщика и опционально другие настройки целевой группы.
    8. Нажмите Сохранить.

    В процессе изменения группы ВМ происходит следующее:

    • Пересоздаются ВМ в группе.
    • Удаляются целевые ресурсы из целевой группы сетевого балансировщика, на оставшиеся целевые ресурсы распределяется пользовательская нагрузка. У пользователей в это время наблюдается частичная недоступность сервиса через сетевой балансировщик.
    • После удаления всех целевых ресурсов удаляется целевая группа. Сервис становится недоступным через сетевой балансировщик.

    Вы можете перейти к следующему шагу, не дожидаясь, пока завершится изменение группы ВМ.

  2. В группе бэкендов L7-балансировщика измените у бэкенда целевую группу. Укажите только целевую группу, созданную на предыдущем шаге.

    В целевую группу L7-балансировщика автоматически будут добавляться ВМ из группы ВМ.

  3. Выберите один из вариантов дальнейшей миграции пользовательской нагрузки с сетевого балансировщика на L7-балансировщик в зависимости от наличия у обработчика сетевого балансировщика публичного IP-адреса с защитой или без защиты от DDoS:

    • Обработчик сетевого балансировщика использует публичный IP-адрес с защитой от DDoS. При миграции сохранится публичный IP-адрес для вашего сервиса.
    • Обработчик сетевого балансировщика использует публичный IP-адрес без защиты от DDoS. При миграции изменится публичный IP-адрес для вашего сервиса.

Обработчик сетевого балансировщика использует публичный IP-адрес с защитой от DDoSОбработчик сетевого балансировщика использует публичный IP-адрес с защитой от DDoS

  1. Удалите обработчик в сетевом балансировщике для освобождения статического публичного IP-адреса.

  2. В L7-балансировщике назначьте обработчику публичный IP-адрес, который ранее был у сетевого балансировщика:

    1. Откройте конфигурационный файл, который вы использовали для создания L7-балансировщика (alb-vm-http.tf или alb-vm-https.tf).

    2. Измените в описании балансировщика значение параметра address в блоке listener.endpoint.address.external_ipv4_address:

      resource "yandex_alb_load_balancer" "<имя_балансировщика>" {
        ...
        listener {
          ...
          endpoint {
            address {
              external_ipv4_address {
                address = <публичный_IP-адрес_сервиса>
              }
            }
            ports = [ <порт_сервиса> ]
          }
        }
      }
      

      Где address — это публичный IP-адрес, который ранее был у сетевого балансировщика.

    3. Примените изменения:

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

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

        terraform validate
        

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

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

        terraform plan
        

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

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

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

  3. После изменения IP-адреса восстановится доступность вашего сервиса через L7-балансировщик. Наблюдайте за пользовательской нагрузкой, поступающей на L7-балансировщик, на графиках статистики работы балансировщика.

  4. Удалите освободившийся статический публичный IP-адрес, который был выбран при создании L7-балансировщика.

    1. Откройте конфигурационный файл, который вы использовали для создания L7-балансировщика (alb-vm-http.tf или alb-vm-https.tf).

    2. Удалите из файла описание ресурса yandex_vpc_address:

      resource "yandex_vpc_address" "static-address" {
        description = "Static public IP address for the Application Load Balancer"
        name        = "alb-static-address"
        external_ipv4_address {
          zone_id                  = "ru-central1-a"
          ddos_protection_provider = "qrator"
        }
      }
      
    3. Примените изменения:

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

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

        terraform validate
        

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

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

        terraform plan
        

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

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

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

  5. (Опционально) После переноса пользовательской нагрузки на L7-балансировщик удалите сетевой балансировщик.

Обработчик сетевого балансировщика использует публичный IP-адрес без защиты от DDoSОбработчик сетевого балансировщика использует публичный IP-адрес без защиты от DDoS

  1. Наблюдайте за состоянием целевых ресурсов сетевого балансировщика. Дождитесь автоматического удаления целевых ресурсов из целевой группы.

  2. Создайте целевую группу сетевого балансировщика. Добавьте ВМ, которые были пересозданы при изменении группы ВМ.

  3. В сетевом балансировщике подключите целевую группу, созданную на предыдущем шаге. При подключении целевой группы настройте проверки состояния, которые были у исходной целевой группы.

  4. Дождитесь перехода проверок состояния ВМ в целевой группе сетевого балансировщика в статус Healthy. После этого восстановится доступность вашего сервиса через сетевой балансировщик.

  5. Чтобы мигрировать пользовательскую нагрузку с сетевого балансировщика на L7-балансировщик, в DNS-сервисе, обслуживающем публичную зону вашего домена, измените значение A-записи для доменного имени сервиса на публичный IP-адрес L7-балансировщика. Если публичная зона домена была создана в Yandex Cloud DNS, то измените запись по инструкции.

    Примечание

    Миграция нагрузки может выполняться долго, так как распространение изменений в записи DNS зависит от времени жизни записи (TTL) и количества звеньев цепочки DNS-запросов.

  6. По мере распространения изменений в записи DNS наблюдайте за ростом запросов, поступающих на L7-балансировщик, на графиках статистики работы балансировщика.

  7. Наблюдайте за снижением нагрузки на сетевой балансировщик с помощью метрик балансировщика processed_bytes и processed_packets. Для визуализации этих метрик можно создать дашборд. Если нагрузка на сетевом балансировщике долгое время отсутствует, то перенос на L7-балансировщик завершен.

  8. (Опционально) После переноса пользовательской нагрузки на L7-балансировщик удалите сетевой балансировщик.

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

Предыдущая
Консоль управления
Следующая
Обзор
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»