Миграция сервисов с балансировщика NLB с целевыми ресурсами из виртуальных машин на L7-балансировщик ALB с помощью консоли управления
Важно
Часть ресурсов, необходимых для прохождения практического руководства, доступны только в регионе Россия.
Чтобы мигрировать сервис с сетевого балансировщика на L7-балансировщик с помощью консоли управления:
- Ознакомьтесь с рекомендациями по миграции сервисов.
- Создайте инфраструктуру для миграции.
- Создайте профиль безопасности Smart Web Security.
- Создайте L7-балансировщик. На этом этапе вы подключите профиль безопасности Smart Web Security к виртуальному хосту L7-балансировщика.
- Проверьте работу L7-балансировщика.
- Мигрируйте пользовательскую нагрузку с сетевого балансировщика на L7-балансировщик.
Рекомендации по миграции сервисов
-
Подключите защиту от DDoS-атак на уровне L3-L4 (модель OSI
). Она станет дополнением к защите на уровне L7, которую после миграции обеспечит Yandex Smart Web Security.Чтобы подключить защиту на уровне L3-L4:
-
Перед миграцией зарезервируйте статический публичный IP-адрес с защитой от DDoS-атак и используйте этот адрес для обработчика L7-балансировщика. Если для сетевого балансировщика публичный IP с защитой уже есть, его можно сохранить при миграции. В противном случае IP-адрес придется поменять на защищенный.
-
Настройте порог для срабатывания механизмов защиты, который будет соответствовать объему легитимного трафика на защищаемый ресурс. Для настройки такого порога обратитесь в техническую поддержку
. -
Задайте значение MTU равным
1450на целевых ресурсах за балансировщиком. Подробнее см. в разделе MTU и TCP MSS.
-
-
Проводите миграцию в часы наименьшей пользовательской нагрузки. Если вы решили сохранить публичный IP-адрес, то во время миграции ваш сервис будет недоступен, пока этот IP-адрес переносится с сетевого балансировщика на L7-балансировщик. Обычно это занимает несколько минут.
-
При использовании L7-балансировщика запросы на бэкенды приходят с IP-адресом источника из диапазона внутренних IP-адресов подсетей, указанных при создании L7-балансировщика. Исходный IP-адрес источника запроса (пользователя) фигурирует в заголовке
X-Forwarded-For. Если необходимо логировать публичные IP-адреса пользователей на веб-сервере, измените его конфигурацию. -
Перед миграцией определите минимальное количество ресурсных единиц для настройки автомасштабирования в L7-балансировщике.
Количество ресурсных единиц выберите на основе анализа нагрузки на ваш сервис по следующим показателям:
- количество запросов в секунду (RPS);
- количество одновременных активных соединений;
- количество новых соединений в секунду;
- объем трафика в секунду.
Создайте инфраструктуру
-
Создайте подсети в трех зонах доступности. Эти подсети будут использоваться для L7-балансировщика.
-
Создайте группы безопасности, которые разрешают L7-балансировщику получать входящий трафик и отправлять его на целевые ресурсы, а также разрешают целевым ресурсам получать входящий трафик от балансировщика.
-
При использовании протокола HTTPS добавьте TLS-сертификат вашего сервиса в Yandex Certificate Manager.
-
(Опционально) Зарезервируйте публичный статический IP-адрес с защитой от DDoS на уровне L3-L4 для L7-балансировщика.
Создайте профиль безопасности Smart Web Security
Создайте профиль безопасности Smart Web Security, выбрав вариант создания По преднастроенному шаблону.
При создании профиля задайте настройки:
- В поле Действие для базового правила по умолчанию выберите
Разрешить. - Для правила Smart Protection включите опцию Только логирование (dry run).
С этими настройками информация о трафике будет логироваться, но к трафику не будут применяться никакие действия. Это позволит снизить риск отключения пользователей из-за проблем в настройке профиля. В дальнейшем вы сможете отключить опцию Только логирование (dry run) и настроить правила с запрещающими действиями в профиле безопасности для вашего сценария.
Создайте L7-балансировщик
-
Создайте целевую группу L7-балансировщика. В блоке Целевые ресурсы выберите виртуальные машины из целевой группы вашего сетевого балансировщика нагрузки.
-
Создайте группу бэкендов со следующими параметрами:
-
Выберите тип группы бэкендов
HTTP. -
Если для вашего сервиса требуется, чтобы запросы в рамках одной пользовательской сессии обрабатывал один и тот же ресурс бэкенда, включите для группы бэкендов привязку сессий (session affinity).
-
В блоке Бэкенды нажмите кнопку Добавить и задайте настройки бэкенда:
- Тип —
Целевая группа. - Целевые группы — созданная ранее целевая группа.
- Порт — TCP-порт вашего сервиса, на котором виртуальные машины принимают входящий трафик.
- В блоке Настройки протокола в зависимости от используемого вашим сервисом протокола выберите
HTTPилиHTTPS. - В блоке HTTP проверка состояния настройте проверку в соответствии с практическими рекомендациями.
- (Опционально) Задайте прочие настройки в соответствии с инструкцией.
- Тип —
-
-
В блоке Виртуальные хосты нажмите кнопку Добавить виртуальный хост и задайте настройки виртуального хоста:
-
Authority — имя домена вашего сервиса.
-
Профиль безопасности — созданный ранее профиль безопасности Smart Web Security.
Важно
Подключение сервиса Smart Web Security невозможно без привязки профиля безопасности к виртуальному хосту L7-балансировщика.
-
Нажмите кнопку Добавить маршрут и задайте настройки маршрута:
- Путь —
Начинается с/. - Действие —
Маршрутизация. - Группа бэкендов — созданная ранее группа бэкендов.
- Путь —
-
-
Создайте L7-балансировщик, выбрав способ создания Вручную:
-
Укажите группу безопасности, созданную ранее.
-
В блоке Размещение выберите для узлов балансировщика подсети в трех зонах доступности. Включите прием трафика в этих подсетях.
-
В блоке Настройки автомасштабирования укажите минимальное количество ресурсных единиц в каждой зоне в соответствии с ожидаемой нагрузкой на ваш сервис.
-
В блоке Обработчики нажмите кнопку Добавить обработчик и задайте настройки обработчика:
-
В блоке Публичный IP-адрес укажите:
- Порт — TCP-порт вашего сервиса, на котором виртуальные машины принимают входящий трафик.
- Тип —
Список. Выберите из списка публичный IP-адрес. Если вы планируете подключить защиту от DDoS-атак на уровне L3-L4, выберите статический публичный IP-адрес с установленной защитой от DDoS-атак.
-
В блоке Приём и обработка трафика укажите:
- Тип обработчика —
HTTP. - Протокол — в зависимости от используемого вашим сервисом протокола выберите
HTTPилиHTTPS. - Если выбран протокол
HTTPS, в поле Сертификаты укажите TLS-сертификат, добавленный ранее в Certificate Manager. - HTTP-роутер — выберите созданный ранее HTTP-роутер.
- Тип обработчика —
-
-
Проверьте работу L7-балансировщика
-
Дождитесь, когда L7-балансировщик перейдет в статус
Active. -
Перейдите в созданный L7-балансировщик и слева выберите Проверки состояния. Убедитесь, что все проверки показывают состояние
HEALTHY. -
Протестируйте запрос к сервису через L7-балансировщик. Например, одним из способов:
-
В файле
hostsна рабочей станции добавьте запись<публичный_IP-адрес_L7-балансировщика> <имя_домена_сервиса>. Удалите запись после тестирования. -
Выполните запрос с помощью cURL
в зависимости от типа протокола:curl http://<имя_домена_сервиса> \ --resolve <имя_домена_сервиса>:<порт_сервиса>:<публичный_IP-адрес_L7-балансировщика>curl https://<имя_домена_сервиса> \ --resolve <имя_домена_сервиса>:<порт_сервиса>:<публичный_IP-адрес_L7-балансировщика>
-
Мигрируйте пользовательскую нагрузку с сетевого балансировщика на L7-балансировщик
Выберите один из вариантов миграции:
- Сохранить публичный IP-адрес для вашего сервиса.
- Не сохранять публичный IP-адрес для вашего сервиса.
Сохранить публичный IP-адрес для вашего сервиса
-
Если у сетевого балансировщика используется динамический публичный IP-адрес, сделайте его статическим.
-
В сетевом балансировщике удалите обработчик для освобождения статического публичного IP-адреса. После этого ваш сервис не будет доступен через сетевой балансировщик.
-
В L7-балансировщике назначьте обработчику публичный IP-адрес, который ранее был у сетевого балансировщика:
CLIЕсли у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-nameили--folder-id.Чтобы изменить публичный IP-адрес, выполните команду:
yc application-load-balancer load-balancer update-listener <имя_балансировщика> \ --listener-name <имя_обработчика> \ --external-ipv4-endpoint address=<публичный_IP-адрес_сервиса>,port=<порт_сервиса>Где
address— это публичный IP-адрес, который ранее был у сетевого балансировщика. -
После изменения IP-адреса восстановится доступность вашего сервиса через L7-балансировщик. Наблюдайте за пользовательской нагрузкой, поступающей на L7-балансировщик, на графиках статистики работы балансировщика.
-
Удалите освободившийся статический публичный IP-адрес, который был выбран при создании L7-балансировщика.
-
(Опционально) После переноса пользовательской нагрузки на L7-балансировщик удалите сетевой балансировщик.
Не сохранять публичный IP-адрес для вашего сервиса
-
Чтобы мигрировать пользовательскую нагрузку с сетевого балансировщика на L7-балансировщик, в DNS-сервисе, обслуживающем публичную зону вашего домена, измените значение А-записи для доменного имени сервиса на публичный IP-адрес L7-балансировщика. Если публичная зона домена была создана в Yandex Cloud DNS, то измените запись по инструкции.
Примечание
Миграция нагрузки может выполняться долго, так как распространение изменений в записи DNS зависит от времени жизни записи (TTL) и количества звеньев цепочки DNS-запросов.
-
По мере распространения изменений в записи DNS наблюдайте за ростом запросов, поступающих на L7-балансировщик, на графиках статистики работы балансировщика.
-
Наблюдайте за снижением нагрузки на сетевой балансировщик с помощью метрик балансировщика
processed_bytesиprocessed_packets. Для визуализации этих метрик можно создать дашборд. Если нагрузка на сетевом балансировщике долгое время отсутствует, то перенос на L7-балансировщик завершен. -
(Опционально) После переноса пользовательской нагрузки на L7-балансировщик удалите сетевой балансировщик.