Интеграция группы ВМ с Network Load Balancer или Application Load Balancer
Сервисы Yandex Network Load Balancer и Yandex Application Load Balancer позволяют распределять входящую нагрузку между виртуальными машинами Yandex Compute Cloud. Группу виртуальных машин можно интегрировать с этими сервисами: Compute Cloud автоматически создаст из группы ВМ целевую группу Network Load Balancer или Application Load Balancer и будет следить, чтобы в группу не добавлялись «нездоровые» ВМ.
Как работает интеграция
Создание целевой группы
В сервисах балансировки нагрузки Yandex Cloud целевая группа — это набор ресурсов, на которых запущены ваши сетевые приложения. Балансировщик, к которому привязана целевая группа, распределяет входящие запросы между ее ресурсами. Подробнее о целевых группах см. в документации Network Load Balancer и Application Load Balancer.
Как правило, целевые группы состоят из виртуальных машин Compute Cloud. Поэтому группу ВМ можно настроить так, чтобы из нее автоматически создалась целевая группа Network Load Balancer или Application Load Balancer. Созданная таким образом целевая группа будет связана с группой ВМ:
- когда ВМ добавляется в группу ВМ или запускается после остановки, она добавляется в целевую группу;
- когда ВМ останавливается или удаляется из группы ВМ, она удаляется из целевой группы.
Чтобы целевая группа начала получать трафик, ее нужно привязать к балансировщику. Compute Cloud не делает этого автоматически.
- Целевую группу Network Load Balancer нужно привязать к балансировщику напрямую.
- Целевую группу Application Load Balancer нужно привязать к группе бэкендов, а группу бэкендов — к балансировщику, напрямую или через HTTP-роутер, в зависимости от типа балансировки. Подробнее см. в инструкциях по управлению ресурсами Application Load Balancer.
Проверки состояния от балансировщиков
Когда целевая группа привязана к балансировщику, он отправляет машинам в этой группе проверки состояния, чтобы при распределении трафика знать, какие ВМ «здоровы», а какие нет. Подробнее о проверках состояния см. в документации Network Load Balancer и Application Load Balancer.
ВМ, добавленная в группу ВМ или запущенная после остановки, попадает в целевую группу, получает статус OPENING_TRAFFIC
в группе ВМ, и балансировщик начинает отправлять на нее проверки состояния. Если ВМ пройдет нужное количество проверок (порог работоспособности, который указывается в настройках проверки), то балансировщик сочтет ее «здоровой» — она начнет получать трафик от балансировщика и перейдет в статус RUNNING_ACTUAL
.
По умолчанию ВМ может находиться в статусе OPENING_TRAFFIC
неограниченное время, пока не станет «здоровой». Вы можете ограничить это время в настройках интеграции (поле max_opening_traffic_duration
). Тогда Compute Cloud автоматически восстановит ВМ, которая не получает трафик слишком долго с момента добавления в группу или запуска. Подробнее о восстановлении см. в разделе Особенности автоматического восстановления.
Проверки состояния от балансировщиков можно отключить с помощью параметра ignore_health_checks
. В этом случае проверки никак не будут влиять на группу ВМ. При отрицательных результатах проверки ВМ не будут автоматически восстанавливаться, а в группу не будет поступать трафик от балансировщиков.
Применение игнорирования проверок состояния от балансировщика
Игнорирование проверок состояния может быть полезно, например, при сине-зеленом развертывании:
-
К балансировщику подключены две целевые группы — группы ВМ:
- В «синей» группе ВМ размещается стабильная версия приложения, доступная пользователям. Instance Groups автоматически восстанавливает ВМ в этой группе, если они не проходят проверки состояния балансировщика.
- «Зеленая» группа ВМ используется для тестирования следующей версии приложения. В этой группе включено игнорирование проверок состояния балансировщиков.
-
Проверки состояния от балансировщика намеренно настроены так, чтобы ВМ «зеленой» группы эти проверки не прошли, и пользовательский трафик на них не подавался. При этом проверки никак не влияют на развертывание ВМ в группе. Пользовательский трафик попадает только на ВМ из «синей» группы.
-
Чтобы перевести трафик пользователей на новую версию приложения, которая была протестирована в «зеленой» группе:
- Проверки состояния от балансировщика перенастраиваются так, чтобы ВМ «зеленой» группы прошли эти проверки, и началась подача туда пользовательского трафика.
- Чтобы ВМ в «зеленой» группе автоматически восстанавливались, если они не проходят проверок состояния от балансировщика, в этой группе отключается игнорирование проверок состояния.
- Проверки состояния от балансировщика перенастраиваются так, чтобы ВМ «синей» группы эти проверки не прошли, и пользовательский трафик на них перестал подаваться.
- В «синей» группе включается игнорирование проверок состояния от балансировщиков.
Теперь «синяя» группа ВМ предназначена для тестирования, а «зеленая» — для приема пользовательского трафика.
Настройки
Интеграцию группы ВМ с Network Load Balancer или Application Load Balancer можно настроить в консоли управления или описать в YAML-спецификации группы, чтобы передать спецификацию через один из программных инструментов — интерфейс командной строки (CLI) или API Yandex Cloud. Настройки можно указать при создании или изменении группы.
Группа ВМ может быть интегрирована только с одним из сервисов: либо с Network Load Balancer, либо с Application Load Balancer. Настроить интеграцию группы ВМ с обоими сервисами сразу нельзя.
Ниже описаны поля с настройками в YAML-спецификации и соответствующие им поля в консоли управления.
Настройки интеграции с Network Load Balancer
load_balancer_spec:
target_group_spec:
name: "ig-tg"
description: "Instance group as target group"
labels:
foo: "baz"
bar: "baz"
max_opening_traffic_duration: 30s
ignore_health_checks: false
Поля и опции в консоли управления находятся в блоке Интеграция с Network Load Balancer на страницах создания и редактирования группы ВМ.
Ключ в YAML Поле или опция в консоли |
Описание |
---|---|
load_balancer_spec Создать целевую группу |
Настройки интеграции группы ВМ с Network Load Balancer. Если ключа нет в YAML-спецификации или опция в консоли управления отключена, группа не будет интегрирована с Network Load Balancer. |
target_group_spec |
Параметры целевой группы Network Load Balancer, создаваемой из группы ВМ. |
name Имя целевой группы |
Имя целевой группы. |
description Описание целевой группы |
Описание целевой группы. |
labels |
Метки целевой группы в формате <имя_метки>: <значение_метки> . |
max_opening_traffic_duration Время ожидания трафика |
Время, в течение которого новая ВМ в группе должна пройти проверку состояния от балансировщика. Возможные значения — 0 и от 1 секунды. Значение по умолчанию — 0: время ожидания не ограничено. Подробнее см. в разделе Проверки состояния от балансировщиков. |
ignore_health_checks |
Игнорировать проверки состояния от балансировщика. Возможные значения true или false . |
Настройки интеграции с Application Load Balancer
application_load_balancer_spec:
target_group_spec:
name: "ig-tg"
description: "Instance group as target group"
labels:
foo: "baz"
bar: "baz"
max_opening_traffic_duration: 30s
ignore_health_checks: false
Поля и опции в консоли управления находятся в блоке Интеграция с Application Load Balancer на страницах создания и редактирования группы ВМ.
Ключ в YAML Поле или опция в консоли |
Описание |
---|---|
application_load_balancer_spec Создать целевую группу |
Настройки интеграции группы ВМ с Application Load Balancer. Если ключа нет в YAML-спецификации или опция в консоли управления отключена, группа не будет интегрирована с Application Load Balancer. |
target_group_spec |
Параметры целевой группы Application Load Balancer, создаваемой из группы ВМ. |
name Имя целевой группы |
Имя целевой группы. |
description Описание целевой группы |
Описание целевой группы. |
labels |
Метки целевой группы в формате <имя_метки>: <значение_метки> . |
max_opening_traffic_duration Время ожидания трафика |
Время, в течение которого новая ВМ в группе должна пройти проверку состояния от балансировщика. Возможные значения — 0 и от 1 секунды. Значение по умолчанию — 0: время ожидания не ограничено. Подробнее см. в разделе Проверки состояния от балансировщиков. |
ignore_health_checks |
Игнорировать проверки состояния от балансировщика. Возможные значения true или false . |