Переместить виртуальную машину в целевую группу в новой зоне доступности
Примечание
В регионе Казахстан доступна только зона доступности kz1-a.
Чтобы перенести ВМ за L7-балансировщиком в целевую группу в новой зоне доступности:
-
Включите для балансировщика прием трафика в новой зоне доступности:
Консоль управленияCLITerraformAPI- В консоли управления
выберите каталог, в котором находится балансировщик. - Выберите сервис Application Load Balancer.
- В строке с нужным балансировщиком нажмите
и выберите Редактировать. - В открывшемся окне в блоке Размещение включите прием трафика в той зоне доступности, в которую хотите перенести ВМ.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-nameили--folder-id.-
Посмотрите описание команды CLI для включения трафика балансировщика:
yc application-load-balancer load-balancer enable-traffic --help -
Получите список всех L7-балансировщиков в каталоге по умолчанию:
yc application-load-balancer load-balancer listРезультат:
+----------------------+-----------------------+-------------+----------------+---------+ | ID | NAME | REGION ID | LISTENER COUNT | STATUS | +----------------------+-----------------------+-------------+----------------+---------+ | ds732hi8pn9n******** | sample-alb1 | kz1 | 1 | ACTIVE | | f3da23i86n2v******** | sample-alb2 | kz1 | 1 | ACTIVE | +----------------------+-----------------------+-------------+----------------+---------+ -
Включите прием трафика в новой зоне доступности:
yc application-load-balancer load-balancer enable-traffic <имя_балансировщика> \ --zone <зона_доступности>Где
--zone— зона, в которую вы хотите перенести виртуальные машины.Результат:
id: ds7pmslal3km******** name: sample-alb1 folder_id: b1gmit33ngp3******** status: ACTIVE region_id: kz1 network_id: enpn46stivv8******** allocation_policy: locations: - zone_id: kz1-a subnet_id: e9bavnqlbiuk******** disable_traffic: true - zone_id: kz1-b subnet_id: e2lgp8o00g06******** - zone_id: kz1-d subnet_id: b0cv501fvp13******** log_group_id: ckgah4eo2j0r******** security_group_ids: - enpdjc5bitmj******** created_at: "2023-08-09T08:34:24.887765763Z" log_options: {}
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Откройте файл конфигурации Terraform для L7-балансировщика и укажите в блоке
allocation_policyновую зону доступности и идентификатор подсети, созданной ранее:... allocation_policy { location { zone_id = [ "<старая_зона_доступности>", "<новая_зона_доступности>" ] subnet_id = [ "<идентификатор_подсети_в_старой_зоне_доступности>", "<идентификатор_подсети_в_новой_зоне_доступности>" ] } } } ...Где:
zone_id— зоны доступности, в которых балансировщик будет принимать трафик.subnet_id— идентификаторы подсетей в зонах доступности.
Более подробную информацию о параметрах ресурсов в Terraform см. в документации провайдера.
-
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Новая зона доступности включится для приема трафика в балансировщике. Проверить это можно в консоли управления
или с помощью команды CLI:yc alb load-balancer get <имя_балансировщика>Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с балансировщиками Application Load Balancer 10 минутами.
Операции, которые длятся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию балансировщика блок
timeouts, например:resource "yandex_alb_load_balancer" "<имя_балансировщика>" { ... timeouts { create = "60m" update = "60m" delete = "60m" } } -
Воспользуйтесь методом REST API update для ресурса LoadBalancer или вызовом gRPC API LoadBalancerService/Update.
- В консоли управления
-
При необходимости настройте группу безопасности балансировщика. Для корректной работы балансировщика его группы безопасности должны разрешать исходящие соединения на адреса подсети, соответствующей новой зоне доступности ВМ.
-
Перенесите ВМ в новую зону доступности.
-
Добавьте в целевую группу балансировщика новые ВМ и удалите старые.
-
Убедитесь, что состояние ВМ определяется балансировщиком как
HEALTHY:Консоль управленияAPI- В консоли управления
выберите каталог, в котором находится балансировщик. - Выберите сервис Application Load Balancer.
- Выберите нужный балансировщик.
- Перейдите на вкладку
Проверки состояния. - Раскройте список целевых ресурсов. ВМ, привязанные к целевой группе, должны иметь статус
HEALTHY.
Воспользуйтесь методом REST API getTargetStates для ресурса LoadBalancer или вызовом gRPC API LoadBalancerService/GetTargetStates.
Статус
HEALTHYопределяется для ВМ не сразу после подключения их к целевой группе. Для этого может потребоваться несколько минут, в зависимости от настроек бэкенда.Если состояние ВМ в течение длительного времени определяется балансировщиком как
UNHEALTHY, убедитесь, что группы безопасности балансировщика настроены правильно. - В консоли управления