Перенести группу виртуальных машин с L7-балансировщиком в другую зону доступности
Примечание
В регионе Казахстан доступна только зона доступности kz1-a.
Чтобы перенести группу ВМ с L7-балансировщиком Yandex Application Load Balancer:
-
Создайте подсеть в зоне доступности, в которую вы хотите перенести группу ВМ.
-
Включите для 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— зоны доступности, в которых L7-балансировщик будет принимать трафик.subnet_id— идентификаторы подсетей в зонах доступности.
Более подробную информацию о параметрах ресурсов в Terraform см. в документации провайдера.
-
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Новая зона доступности включится для приема трафика в L7-балансировщике. Проверить это можно в консоли управления
или с помощью команды CLI:yc alb load-balancer get <имя_L7-балансировщика> -
Воспользуйтесь методом REST API update для ресурса LoadBalancer или вызовом gRPC API LoadBalancerService/Update.
- В консоли управления
-
Добавьте ВМ группы в новую зону доступности:
Консоль управленияCLITerraformAPI-
В консоли управления
откройте каталог, в котором находится нужная группа виртуальных машин. -
Выберите сервис Compute Cloud.
-
На панели слева выберите
Группы виртуальных машин. -
Выберите группу ВМ, которую хотите изменить.
-
В правом верхнем углу нажмите
Редактировать. -
В блоке Распределение добавьте зону доступности, в которую вы хотите перенести группу ВМ.
-
Если у вас группа ВМ с ручным масштабированием, в блоке Масштабирование укажите размер группы, достаточный для размещения во всех выбранных зонах доступности.
Вернуть изначальное количество ВМ можно будет после воссоздания всех ВМ группы в новой зоне доступности и удаления всех ВМ в старой.
-
Если у вас автоматически масштабируемая группа ВМ с ручной (
OPPORTUNISTIC) стратегией остановки, в поле Останавливать машины по стратегии измените стратегию на автоматическую (PROACTIVE).Вернуть ручную стратегию остановки можно будет после воссоздания всех ВМ группы в новой зоне доступности и удаления всех ВМ в старой.
-
Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-nameили--folder-id.-
Откройте файл со спецификацией группы виртуальных машин и измените шаблон ВМ:
-
В секции
allocation_policyдобавьте новую зону доступности. -
В секции
network_interface_specsдобавьте идентификатор подсети, созданной ранее. -
Если у вас группа ВМ с ручным масштабированием, в секции
scale_policyукажите размер группы, достаточный для размещения во всех выбранных зонах доступности.Вернуть изначальное количество ВМ можно будет после воссоздания всех ВМ группы в новой зоне доступности и удаления всех ВМ в старой.
-
Если у вас автоматически масштабируемая группа ВМ с ручной (
OPPORTUNISTIC) стратегией остановки, в секцииdeploy_policyизмените стратегию на автоматическую (PROACTIVE).Вернуть ручную стратегию остановки можно будет после воссоздания всех ВМ группы в новой зоне доступности и удаления всех ВМ в старой.
-
-
Посмотрите описание команды CLI для изменения группы ВМ:
yc compute instance-group update --help -
Получите список всех групп ВМ в каталоге по умолчанию:
yc compute instance-group listРезультат:
+----------------------+---------------------------------+--------+--------+ | ID | NAME | STATUS | SIZE | +----------------------+---------------------------------+--------+--------+ | cl15sjqilrei******** | first-fixed-group-with-balancer | ACTIVE | 3 | | cl19s7dmihgm******** | test-group | ACTIVE | 2 | +----------------------+---------------------------------+--------+--------+ -
Измените группу ВМ:
yc compute instance-group update \ --id <идентификатор_группы_ВМ> \ --file <файл_со_спецификацией_ВМ>Где:
--id— идентификатор группы ВМ.--file— путь к файлу со спецификацией группы ВМ.
Результат:
id: cl15sjqilrei******** ... allocation_policy: zones: - zone_id: <старая_зона_доступности> - zone_id: <новая_зона_доступности> ...
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Откройте файл конфигурации Terraform для группы виртуальных машин и добавьте в блоке
allocation_policyновую зону доступности, а в блокеnetwork_interfaceидентификатор подсети, созданной ранее.... network_interface { subnet_ids = [ "<идентификатор_подсети_в_старой_зоне_доступности>", "<идентификатор_подсети_в_новой_зоне_доступности>" ] } ... allocation_policy { zones = [ "<старая_зона_доступности>", "<новая_зона_доступности>" ] } ...Где:
zones— зоны доступности, в которых будет размещена группа ВМ — новая и старая.subnet_ids— идентификаторы подсетей в зонах доступности, в которых будет размещена группа ВМ.
Если у вас группа ВМ с ручным масштабированием, в секции
scale_policyукажите размер группы, достаточный для размещения во всех выбранных зонах доступности.... scale_policy { fixed_scale { size = <количество_ВМ_в_группе> } } ...Вернуть изначальное количество ВМ можно будет после воссоздания всех ВМ группы в новой зоне доступности и удаления всех ВМ в старой.
Если у вас автоматически масштабируемая группа ВМ с ручной (
OPPORTUNISTIC) стратегией остановки, измените стратегию на автоматическую (PROACTIVE):... deploy_policy { strategy = "proactive" } ...Вернуть ручную стратегию остановки можно будет после воссоздания всех ВМ группы в новой зоне доступности и удаления всех ВМ в старой.
Более подробную информацию о параметрах ресурсов в Terraform см. в документации провайдера.
-
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
Добавится новая зона доступности для группы ВМ. Проверить изменения можно в консоли управления
или с помощью команды CLI:yc compute instance-group get <имя_группы_ВМ> -
Воспользуйтесь методом REST API update для ресурса InstanceGroup или вызовом gRPC API InstanceGroupService/Update.
Если у вас группа ВМ с ручным масштабированием, задайте размер группы, достаточный для размещения ВМ во всех выбранных зонах доступности. Вернуть изначальное количество ВМ можно будет после воссоздания всех ВМ группы в новой зоне доступности и удаления всех ВМ в старой.
Если у вас автоматически масштабируемая группа ВМ с ручной (
OPPORTUNISTIC) стратегией остановки, измените стратегию на автоматическую (PROACTIVE). Вернуть ручную стратегию остановки можно будет после воссоздания всех ВМ группы в новой зоне доступности и удаления всех ВМ в старой.Дождитесь пока ВМ создадутся в новой зоне доступности и перейдут в статус
Running Actual. -
-
Удалите ВМ группы из старой зоны доступности:
Консоль управленияCLITerraformAPI- В консоли управления
откройте каталог, в котором находится нужная группа виртуальных машин. - Выберите сервис Compute Cloud.
- На панели слева выберите
Группы виртуальных машин. - Выберите группу ВМ, которую хотите изменить.
- В правом верхнем углу нажмите
Редактировать. - В блоке Распределение отключите старую зону доступности.
- Нажмите Сохранить.
-
Откройте файл со спецификацией группы виртуальных машин и измените шаблон ВМ:
- В секции
allocation_policyудалите старую зону доступности. - В секции
network_interface_specsудалите идентификатор подсети в старой зоне доступности.
- В секции
-
Измените группу ВМ:
yc compute instance-group update \ --id <идентификатор_группы_ВМ> \ --file <файл_со_спецификацией_ВМ>Где:
--id— идентификатор группы ВМ.--file— путь к файлу со спецификацией группы ВМ.
Результат:
id: cl15sjqilrei******** ... allocation_policy: zones: - zone_id: <новая_зона_доступности> ...
-
Откройте файл конфигурации Terraform для группы виртуальных машин и удалите в блоке
allocation_policyстарую зону доступности, а в блокеnetwork_interfaceидентификатор подсети в старой зоне:... network_interface { subnet_ids = ["<идентификатор_подсети_в_новой_зоне_доступности>"] } ... allocation_policy { zones = ["<новая_зона_доступности>"] } ...Где:
zones— зона доступности, в которую вы хотите переместить группу ВМ. Можно указать несколько зон.subnet_ids— идентификатор подсети в той зоне доступности, в которую вы хотите перенести группу ВМ.
Более подробную информацию о параметрах ресурсов в Terraform см. в документации провайдера.
-
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
ВМ группы будут удалены в старой зоне доступности. Проверить изменения можно в консоли управления
или с помощью команды CLI:yc compute instance-group get <имя_группы_ВМ> -
Воспользуйтесь методом REST API update для ресурса InstanceGroup или вызовом gRPC API InstanceGroupService/Update.
- В консоли управления