Создать группу виртуальных машин фиксированного размера с L7-балансировщиком
Вы можете создать группу ВМ фиксированного размера, интегрированную с сервисом балансировки нагрузки Yandex Application Load Balancer. Вместе с группой ВМ будет автоматически создана целевая группа Application Load Balancer, которую можно привязать к балансировщику и распределять нагрузку между ВМ в группе на прикладном уровне. Подробнее см. в разделе Интеграция группы ВМ с Network Load Balancer или Application Load Balancer.
Внимание
Создавая группы ВМ, учитывайте лимиты. Чтобы не нарушить работу компонента Instance Groups, не изменяйте и не удаляйте вручную созданные им ресурсы: целевую группу Application Load Balancer, ВМ и диски. Вместо этого измените или удалите группу полностью.
По умолчанию все операции в Instance Groups выполняются от имени сервисного аккаунта. Если сервисного аккаунта нет, создайте его.
Чтобы иметь возможность создавать, обновлять и удалять ВМ в группе, а также интегрировать группу с L7-балансировщиком Application Load Balancer, назначьте сервисному аккаунту роли compute.editor и alb.editor.
Если вы используете образ на основе Windows, сбросьте пароль после создания ВМ.
Чтобы создать группу ВМ с L7-балансировщиком нагрузки:
- В консоли управления
выберите каталог, в котором будет создана группа ВМ. - Перейдите в сервис Compute Cloud.
- На панели слева выберите
Группы виртуальных машин. - Нажмите кнопку Создать группу виртуальных машин.
- В блоке Базовые параметры:
-
Введите имя и описание группы ВМ. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Примечание
Имя виртуальной машины используется для генерации внутреннего FQDN единожды — при создании ВМ. Если для вас важен внутренний FQDN, учитывайте это и задавайте нужное имя ВМ при создании.
-
Выберите сервисный аккаунт из списка или создайте новый. Чтобы иметь возможность создавать, обновлять и удалять ВМ в группе, а также интегрировать группу с L7-балансировщиком Application Load Balancer, назначьте сервисному аккаунту роли compute.editor и alb.editor. По умолчанию все операции с группой ВМ выполняются от имени сервисного аккаунта.
Сервисный аккаунт нельзя удалить, пока он связан с группой виртуальных машин.
-
При необходимости включите опцию Защита от удаления. Пока опция включена, группу удалить невозможно.
-
- В блоке Распределение в поле Зона доступности выберите нужные. ВМ группы могут находиться в разных зонах доступности.
- В блоке Шаблон виртуальной машины нажмите кнопку Задать, чтобы задать конфигурацию базовой ВМ:
-
В блоке Общая информация введите описание шаблона.
-
В блоке Образ загрузочного диска выберите, какую систему развернуть на загрузочном диске ВМ.
-
В блоке Диски и файловые хранилища:
- Выберите тип диска.
- Укажите размер диска.
- Чтобы добавить дополнительные диски, нажмите Добавить диск.
-
В блоке Вычислительные ресурсы:
- Выберите платформу.
- Укажите необходимое количество vCPU, гарантированную долю vCPU и объем RAM.
-
При необходимости сделайте виртуальную машину Прерываемой.
Создавая группу прерываемых машин, учитывайте, что виртуальные машины будут останавливаться спустя 24 часа непрерывной работы, а могут быть остановлены еще раньше. При этом возможна ситуация, что Instance Groups не сможет сразу перезапустить их из-за нехватки ресурсов. Это может произойти, если резко возрастет потребление вычислительных ресурсов в Yandex Cloud.
- (опционально) Включите программно-ускоренную сеть.
-
В блоке Сетевые настройки:
-
Укажите идентификатор подсети или выберите облачную сеть из списка.
Если сети нет, нажмите Создать сеть и создайте ее:- В открывшемся окне укажите имя сети.
- (Опционально) Для автоматического создания подсетей выберите опцию Создать подсети.
- Нажмите Создать сеть.
У каждой сети должна быть как минимум одна подсеть. Если подсети нет, создайте ее, выбрав Создать подсеть.
-
В поле Публичный адрес выберите способ назначения адреса:
Автоматически— чтобы назначить случайный IP-адрес из пула адресов Yandex Cloud.Без адреса— чтобы не назначать публичный IP-адрес.
-
Выберите подходящие группы безопасности.
-
(опционально) Создайте записи для ВМ в зоне DNS:
- Разверните блок Настройки DNS для внутренних адресов и нажмите кнопку Добавить запись.
- Укажите зону, FQDN и время жизни записи. При указании FQDN для зоны доступна опция
Определять автоматически.
Вы можете добавить несколько записей во внутренние зоны DNS. Подробнее см. Интеграция Cloud DNS с Compute Cloud.
-
-
В блоке Доступ укажите данные для доступа на ВМ:
- Выберите сервисный аккаунт, который следует привязать к ВМ.
- Если выбран образ на основе Linux, заполните поля Логин и SSH-ключ. В качестве ключа укажите содержимое файла открытого ключа.
- При необходимости выберите опцию
Доступ к серийной консоли.
-
Нажмите кнопку Сохранить.
-
- В блоке В процессе создания и обновления разрешено:
-
В поле Добавлять выше целевого значения укажите, на какое количество ВМ можно превышать размер группы.
При приведении количества ВМ в группе к целевому значению, созданные сверх целевого размера по квоте
max_expansionвиртуальные машины могут остаться в группе, в то время как ВМ, существовавшие в группе до этого, могут быть удалены. -
В поле Уменьшать относительно целевого значения укажите, на какое количество ВМ можно уменьшать размер группы.
-
В поле Одновременно создавать укажите, сколько ВМ можно одновременно создавать.
-
В поле Время запуска укажите срок, после которого ВМ начнет получать нагрузку.
-
В поле Одновременно останавливать укажите, сколько ВМ можно одновременно останавливать.
-
В поле Останавливать машины по стратегии укажите одну из стратегий:
Автоматическая— Instance Groups самостоятельно выбирает, какие ВМ остановить при обновлении или уменьшении группы.Ручная— Instance Groups ожидает, когда ВМ остановятся самостоятельно или будут остановлены пользователем.
-
- В блоке Масштабирование:
- Выберите
Фиксированныйтип масштабирования. - Укажите размер группы ВМ.
- Выберите
- В блоке Интеграция с Application Load Balancer включите опцию Создать целевую группу.
- Укажите настройки целевой группы. Подробнее см. в разделе Настройки интеграции с Application Load Balancer.
- При необходимости активируйте опцию Проверка состояний для получения сведений о состоянии ВМ и их автоматического восстановления в случае сбоя.
- В поле Тип выберите протокол проверок состояния:
HTTPилиTCP. - В поле Путь (для типа HTTP) укажите URL‐путь запроса, на который Instance Groups будет отправлять запросы проверки для HTTP.
- В поле Порт укажите номер порта от 1 до 32767, на который Instance Groups будет отправлять запросы проверки.
- В поле Время ожидания, c укажите время ожидания ответа от 1 до 60 секунд.
- В поле Интервал, c укажите интервал между повторными проверками от 1 до 60 секунд. Интервал должен быть больше времени ожидания минимум на 1 секунду.
- В поле Порог работоспособности укажите количество успешных проверок, после которого ВМ будет считаться работающей нормально.
- В поле Порог неработоспособности укажите количество неудачных проверок, после которого ВМ будет считаться неработающей.
- В поле Тип выберите протокол проверок состояния:
- В блоке Пользовательские переменные при необходимости укажите пары
Ключ-Значение. - Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Посмотрите описание команды CLI для создания группы ВМ:
yc compute instance-group create --help -
Проверьте, есть ли в каталоге сети:
yc vpc network listЕсли ни одной сети нет, создайте ее.
-
Выберите один из публичных образов Yandex Cloud Marketplace (например, CentOS 7).
Чтобы получить список доступных образов с помощью CLI, выполните команду:
yc compute image list --folder-id standard-imagesРезультат:
+----------------------+-------------------------------------+--------------------------+----------------------+--------+ | ID | NAME | FAMILY | PRODUCT IDS | STATUS | +----------------------+-------------------------------------+--------------------------+----------------------+--------+ ... | fdvk34al8k5n******** | centos-7-1549279494 | centos-7 | dqni65lfhvv2******** | READY | | fdv7ooobjfl3******** | windows-2016-gvlk-1548913814 | windows-2016-gvlk | dqnnc72gj2is******** | READY | | fdv4f5kv5cvf******** | ubuntu-1604-lts-1549457823 | ubuntu-1604-lts | dqnnb6dc7640******** | READY | ... +----------------------+-------------------------------------+--------------------------+----------------------+--------+Где:
-
ID— идентификатор образа. -
NAME— имя образа. -
FAMILY— идентификатор семейства образов, к которому относится образ. -
PRODUCT IDS— идентификаторы продуктов Yandex Cloud Marketplace, связанных с образом. -
STATUS— текущий статус образа. Может принимать одно из значений:STATUS_UNSPECIFIED— статус образа не определен.CREATING— образ в процессе создания.READY— образ готов к использованию.ERROR— образ нельзя использовать из-за возникшей с ним проблемы.DELETING— образ в процессе удаления.
-
-
Создайте YAML-файл с произвольным именем, например
specification.yaml. -
Опишите в созданном файле:
-
Общую информацию о группе ВМ:
name: first-fixed-group-with-l7-balancer service_account_id: <идентификатор_сервисного_аккаунта> description: "Эта группа ВМ создана с помощью YAML-файла конфигурации."Где:
-
name— произвольное имя группы ВМ. Имя должно быть уникальным в рамках каталога. Имя может содержать строчные буквы латинского алфавита, цифры и дефисы. Первый символ должен быть буквой. Последний символ не может быть дефисом. Максимальная длина имени — 63 символа. -
service_account_id— идентификатор сервисного аккаунта.Чтобы иметь возможность создавать, обновлять и удалять ВМ в группе, а также интегрировать группу с L7-балансировщиком Application Load Balancer, назначьте сервисному аккаунту роли compute.editor и alb.editor. По умолчанию все операции с группой ВМ выполняются от имени сервисного аккаунта.
Сервисный аккаунт нельзя удалить, пока он связан с группой виртуальных машин.
-
description— произвольное описание группы ВМ.
-
-
Шаблон ВМ, например:
instance_template: platform_id: standard-v3 resources_spec: memory: 2g cores: 2 boot_disk_spec: mode: READ_WRITE disk_spec: image_id: fdvk34al8k5n******** type_id: network-hdd size: 32g network_interface_specs: - network_id: c64mknqgnd8a******** primary_v4_address_spec: {} security_group_ids: - enps0ar5s3ti******** placement_policy: placement_group_id: rmppvhrgm77g******** scheduling_policy: preemptible: falseПо умолчанию размер диска указывается в байтах. Вы можете указать другую единицу измерения с помощью соответствующего суффикса.
Суффикс Приставка и множитель Пример kкило- (210) 640k= 640 × 210 =655360mмега- (220) 48m= 48 × 220 =50331648gгига- (230) 10g= 10 × 230 =10737418240tтера- (240) 4t= 4 × 240 =4398046511104pпета- (250) 2p= 2 × 250 =2251799813685248Где:
-
platform_id— идентификатор платформы. -
memory— количество памяти (RAM). -
cores— количество ядер процессора (vCPU). -
mode— режим доступа к диску.READ_ONLY— доступ на чтение.READ_WRITE— доступ на чтение и запись.
-
image_id— идентификатор публичного образа. Идентификаторы образа можно посмотреть в консоли управления при создании ВМ или в Cloud Marketplace на странице образа в блоке Идентификаторы продукта. -
type_id— тип диска. -
size— размер диска. -
network_id— идентификатор сетиdefault-net. -
primary_v4_address_spec— спецификация версии интернет протокола IPv4. Вы можете предоставить публичный доступ к ВМ группы, указав версию IP для публичного IP-адреса. Подробнее читайте в разделе Описание шаблона в YAML-файле. -
security_group_ids— список идентификаторов групп безопасности. -
scheduling_policy— конфигурация политики планирования. -
preemptible— флаг, указывающий создавать прерываемые ВМ.true— будет создана прерываемая ВМ.false(по умолчанию) — обычная.
Создавая группу прерываемых ВМ учитывайте, что ВМ будут останавливаться спустя 24 часа непрерывной работы, а могут быть остановлены еще раньше. При этом возможна ситуация, что Instance Groups не сможет сразу перезапустить их из-за нехватки ресурсов. Это может произойти, если резко возрастет потребление вычислительных ресурсов в Yandex Cloud.
-
placement_policy— (опционально) параметры группы размещения ВМ:placement_group_id— идентификатор группы размещения.
-
-
deploy_policy: max_unavailable: 1 max_expansion: 0 scale_policy: fixed_scale: size: 3 allocation_policy: zones: - zone_id: ru-central1-a instance_tags_pool: - first - second - thirdГде:
deploy_policy— политика развертывания ВМ в группе.scale_policy— политика масштабирования ВМ в группе.allocation_policy— политика распределения ВМ по зонам доступности.
-
Целевую группу Yandex Application Load Balancer:
application_load_balancer_spec: target_group_spec: name: first-target-groupГде:
target_group_spec— спецификация целевой группы Application Load Balancer, связанной с группой ВМ.name— произвольное имя целевой группы Application Load Balancer. Имя должно быть уникальным в рамках каталога. Имя может содержать строчные буквы латинского алфавита, цифры и дефисы. Первый символ должен быть буквой. Последний символ не может быть дефисом. Максимальная длина имени — 63 символа.
Подробнее о настройках целевой группы см. в разделе Настройки интеграции с Application Load Balancer.
Полный код файла
specification.yaml:name: first-fixed-group-with-l7-balancer service_account_id: <идентификатор_сервисного_аккаунта> description: "Эта группа ВМ создана с помощью YAML-файла конфигурации." instance_template: platform_id: standard-v3 resources_spec: memory: 2g cores: 2 boot_disk_spec: mode: READ_WRITE disk_spec: image_id: fdvk34al8k5n******** type_id: network-hdd size: 32g network_interface_specs: - network_id: c64mknqgnd8a******** primary_v4_address_spec: {} security_group_ids: - enps0ar5s3ti******** placement_policy: placement_group_id: rmppvhrgm77g******** deploy_policy: max_unavailable: 1 max_expansion: 0 scale_policy: fixed_scale: size: 3 allocation_policy: zones: - zone_id: ru-central1-a instance_tags_pool: - first - second - third application_load_balancer_spec: target_group_spec: name: first-target-group -
-
Создайте группу ВМ в каталоге по умолчанию:
yc compute instance-group create --file specification.yamlДанная команда создаст группу из трех однотипных ВМ со следующими характеристиками:
- С именем
first-fixed-group-with-l7-balancer. - С OC CentOS 7.
- В сети
default-net. - В зоне доступности
ru-central1-a. - С 2 vCPU и 2 ГБ RAM.
- С сетевым HDD-диском объемом 32 ГБ.
- С целевой группой
first-target-group.
- С именем
После этого вы можете добавить целевую группу first-target-group к новой или существующей группе бэкендов Application Load Balancer, группу бэкендов — к новому или существующему HTTP-роутеру, а роутер — к новому или существующему L7-балансировщику.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
resource "yandex_iam_service_account" "ig-sa" { name = "ig-sa" description = "Сервисный аккаунт для управления группой ВМ." } resource "yandex_resourcemanager_folder_iam_member" "compute_editor" { folder_id = "<идентификатор_каталога>" role = "compute.editor" member = "serviceAccount:${yandex_iam_service_account.ig-sa.id}" } resource "yandex_resourcemanager_folder_iam_member" "load-balancer-editor" { folder_id = "<идентификатор_каталога>" role = "alb.editor" member = "serviceAccount:${yandex_iam_service_account.ig-sa.id}" } resource "yandex_compute_instance_group" "ig-1" { name = "fixed-ig-with-balancer" folder_id = "<идентификатор_каталога>" service_account_id = "${yandex_iam_service_account.ig-sa.id}" deletion_protection = "<защита_от_удаления>" instance_template { platform_id = "standard-v3" resources { memory = <объем_RAM_ГБ> cores = <количество_ядер_vCPU> } boot_disk { mode = "READ_WRITE" initialize_params { image_id = "<идентификатор_образа>" } } network_interface { network_id = "${yandex_vpc_network.network-1.id}" subnet_ids = ["${yandex_vpc_subnet.subnet-1.id}"] security_group_ids = ["<список_идентификаторов_групп_безопасности>"] } metadata = { ssh-keys = "<имя_пользователя>:<содержимое_SSH-ключа>" } } scale_policy { fixed_scale { size = <количество_ВМ_в_группе> } } allocation_policy { zones = ["ru-central1-a"] } deploy_policy { max_unavailable = 1 max_expansion = 0 } application_load_balancer { target_group_name = "target-group" target_group_description = "Целевая группа Network Load Balancer" } } resource "yandex_vpc_network" "network-1" { name = "network1" } resource "yandex_vpc_subnet" "subnet-1" { name = "subnet1" zone = "ru-central1-a" network_id = "${yandex_vpc_network.network-1.id}" v4_cidr_blocks = ["192.168.10.0/24"] }Где:
-
yandex_iam_service_account— описание сервисного аккаунта. Все операции в Instance Groups выполняются от имени сервисного аккаунта.Сервисный аккаунт нельзя удалить, пока он связан с группой виртуальных машин.
-
yandex_resourcemanager_folder_iam_member— описание прав доступа сервисного аккаунта к каталогу, где:role = "compute.editor"— назначение сервисному аккаунту роли compute.editor для создания, обновления и удаления ВМ в группе.role = "alb.editor"— назначение сервисному аккаунту роли alb.editor для интеграции группы ВМ с балансировщиком Application Load Balancer.
-
yandex_compute_instance_group— описание группы ВМ:- Общая информация о группе ВМ:
name— имя группы ВМ.folder_id— идентификатор каталога.service_account_id— идентификатор сервисного аккаунта.deletion_protection— защита группы ВМ от удаления:trueилиfalse. Пока опция включена, группу ВМ удалить невозможно. Значение по умолчаниюfalse.
- Шаблон ВМ:
platform_id— платформа.resources— количество ядер vCPU и объем RAM, доступные ВМ. Значения должны соответствовать выбранной платформе.boot_disk— настройки загрузочного диска.- Идентификатор выбранного образа. Вы можете получить идентификатор образа из списка публичных образов.
- Режим доступа к диску:
READ_ONLY(чтение) илиREAD_WRITE(чтение и запись).
network_interface— настройка сети. Укажите идентификаторы сети, подсети и групп безопасности.metadata— в метаданных необходимо передать открытый ключ для SSH-доступа на ВМ. Подробнее в разделе Метаданные виртуальной машины.
- Политики:
deploy_policy— политика развертывания ВМ в группе.scale_policy— политика масштабирования ВМ в группе.allocation_policy— политика распределения ВМ по зонам доступности.
- Целевая группа Yandex Application Load Balancer:
target_group_name— имя целевой группы.target_group_description— описание целевой группы.
Подробнее о настройках целевой группы см. в разделе Настройки интеграции с Application Load Balancer.
- Общая информация о группе ВМ:
-
yandex_vpc_network— описание облачной сети. -
yandex_vpc_subnet— описание подсети, к которой будет подключена группа ВМ.
Примечание
Если у вас уже есть подходящие ресурсы (сервисный аккаунт, облачная сеть и подсеть), описывать их повторно не нужно. Используйте их имена и идентификаторы в соответствующих параметрах.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.
-
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Воспользуйтесь методом REST API create для ресурса InstanceGroup или вызовом gRPC API InstanceGroupService/Create.