Создать группу виртуальных машин фиксированного размера с сетевым балансировщиком нагрузки
Вы можете создать группу ВМ фиксированного размера, интегрированную с сервисом балансировки нагрузки Yandex Network Load Balancer. Вместе с группой ВМ будет автоматически создана целевая группа Network Load Balancer, которую можно привязать к сетевому балансировщику и распределять нагрузку между ВМ в группе на сетевом уровне. Подробнее см. в разделе Интеграция группы ВМ с Network Load Balancer или Application Load Balancer.
Внимание
Создавая группы ВМ, учитывайте лимиты. Чтобы не нарушить работу компонента Instance Groups, не изменяйте и не удаляйте вручную созданные им ресурсы: целевую группу Network Load Balancer, ВМ и диски. Вместо этого измените или удалите группу полностью.
По умолчанию все операции в Instance Groups выполняются от имени сервисного аккаунта. Если сервисного аккаунта нет, создайте его.
Если вы используете образ на основе Windows, сбросьте пароль после создания ВМ.
Чтобы создать группу ВМ с сетевым балансировщиком нагрузки:
- В консоли управления
выберите каталог, в котором будет создана группа ВМ. - В списке сервисов выберите Compute Cloud.
- На панели слева выберите
Группы виртуальных машин. - Нажмите кнопку Создать группу виртуальных машин.
- В блоке Базовые параметры:
-
Введите имя и описание группы ВМ. Требования к имени:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Примечание
Имя виртуальной машины используется для генерации внутреннего FQDN единожды — при создании ВМ. Если для вас важен внутренний FQDN, учитывайте это и задавайте нужное имя ВМ при создании.
-
Выберите сервисный аккаунт из списка или создайте новый. Чтобы иметь возможность создавать, обновлять и удалять ВМ в группе, назначьте сервисному аккаунту роль
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
виртуальные машины могут остаться в группе, в то время как ВМ, существовавшие в группе до этого, могут быть удалены. -
В поле Уменьшать относительно целевого значения укажите, на какое количество ВМ можно уменьшать размер группы.
-
В поле Одновременно создавать укажите, сколько ВМ можно одновременно создавать.
-
В поле Время запуска укажите срок, после которого ВМ начнет получать нагрузку.
-
В поле Одновременно останавливать укажите, сколько ВМ можно одновременно останавливать.
-
В поле Останавливать машины по стратегии укажите одну из стратегий:
Автоматическая
— Compute Cloud самостоятельно выбирает, какие ВМ остановить при обновлении или уменьшении группы.Ручная
— Compute Cloud ожидает, когда ВМ остановятся самостоятельно или будут остановлены пользователем.
-
- В блоке Масштабирование:
- Выберите
Фиксированный
тип масштабирования. - Укажите размер группы ВМ.
- Выберите
- В блоке Интеграция с Network Load Balancer включите опцию Создать целевую группу.
- Укажите настройки целевой группы. Подробнее см. в разделе Настройки интеграции с Network Load Balancer.
- При необходимости активируйте опцию Проверка состояний для получения сведений о состоянии ВМ и их автоматического восстановления в случае сбоя.
- В поле Тип выберите протокол проверок состояния:
HTTP
илиTCP
. - В поле Путь (для типа HTTP) укажите URL‐путь запроса, на который группа ВМ будет отправлять запросы проверки для HTTP.
- В поле Порт укажите номер порта от 1 до 32767, на который группа ВМ будет отправлять запросы проверки.
- В поле Время ожидания, c укажите время ожидания ответа от 1 до 60 секунд.
- В поле Интервал, c укажите интервал между повторными проверками от 1 до 60 секунд. Интервал должен быть больше времени ожидания минимум на 1 секунду.
- В поле Порог работоспособности укажите количество успешных проверок, после которого ВМ будет считаться работающей нормально.
- В поле Порог неработоспособности укажите количество неудачных проверок, после которого ВМ будет считаться неработающей.
- В поле Тип выберите протокол проверок состояния:
- В блоке Пользовательские переменные при необходимости укажите пары
Ключ
-Значение
. - Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --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 | ... +----------------------+-------------------------------------+--------------------------+----------------------+--------+
-
Создайте YAML-файл с произвольным именем, например
specification.yaml
. -
Опишите в созданном файле:
-
Общую информацию о группе ВМ:
name: first-fixed-group-with-balancer service_account_id: <идентификатор_сервисного_аккаунта> description: "Эта группа ВМ создана с помощью YAML-файла конфигурации."
Где:
-
name
— произвольное имя группы ВМ. Имя должно быть уникальным в рамках каталога. Имя может содержать строчные буквы латинского алфавита, цифры и дефисы. Первый символ должен быть буквой. Последний символ не может быть дефисом. Максимальная длина имени — 63 символа. -
service_account_id
— идентификатор сервисного аккаунта.Сервисный аккаунт нельзя удалить, пока он связан с группой виртуальных машин.
-
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******** scheduling_policy: preemptible: false placement_policy: placement_group_id: rmppvhrgm77g********
По умолчанию размер диска указывается в байтах. Вы можете указать другую единицу измерения с помощью соответствующего суффикса.
Суффикс Приставка и множитель Пример k
кило- (210) 640k
= 640 × 210 =655360
m
мега- (220) 48m
= 48 × 220 =50331648
g
гига- (230) 10g
= 10 × 230 =10737418240
t
тера- (240) 4t
= 4 × 240 =4398046511104
p
пета- (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 часа непрерывной работы, а могут быть остановлены еще раньше. При этом возможна ситуация, что ВМ не смогут сразу перезапуститься их из-за нехватки ресурсов. Это может произойти, если резко возрастет потребление вычислительных ресурсов в 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
— политика распределения ВМ по зонам доступности.
-
Целевую группу Network Load Balancer:
load_balancer_spec: target_group_spec: name: first-target-group
Где:
target_group_spec
— cпецификация целевой группы Network Load Balancer, связанной с группой ВМ.name
— произвольное имя целевой группы Network Load Balancer. Имя должно быть уникальным в рамках каталога. Имя может содержать строчные буквы латинского алфавита, цифры и дефисы. Первый символ должен быть буквой. Последний символ не может быть дефисом. Максимальная длина имени — 63 символа.
Подробнее о настройках целевой группы см. в разделе Настройки интеграции с Network Load Balancer.
Полный код файла
specification.yaml
:name: first-fixed-group-with-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 load_balancer_spec: target_group_spec: name: first-target-group
-
-
Создайте группу ВМ в каталоге по умолчанию:
yc compute instance-group create --file specification.yaml
Данная команда создаст группу из трех однотипных ВМ со следующими характеристиками:
- С именем
first-fixed-group-with-balancer
. - С OC CentOS 7.
- В сети
default-net
. - В зоне доступности
ru-central1-a
. - С 2 vCPU и 2 ГБ RAM.
- С сетевым HDD-диском объемом 32 ГБ.
- С целевой группой
first-target-group
.
- С именем
-
Создайте сетевой балансировщик нагрузки и добавьте к нему целевую группу
first-target-group
.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
resource "yandex_iam_service_account" "ig-sa" { name = "ig-sa" description = "Сервисный аккаунт для управления группой ВМ." } resource "yandex_resourcemanager_folder_iam_member" "editor" { folder_id = "<идентификатор_каталога>" role = "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 } load_balancer { target_group_name = "target-group" target_group_description = "Целевая группа Network Load Balancer" } } resource "yandex_lb_network_load_balancer" "lb-1" { name = "network-load-balancer-1" listener { name = "network-load-balancer-1-listener" port = 80 external_address_spec { ip_version = "ipv4" } } attached_target_group { target_group_id = yandex_compute_instance_group.ig-1.load_balancer.0.target_group_id healthcheck { name = "http" http_options { port = 80 path = "/index.html" } } } } 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
— описание сервисного аккаунта. Все операции с группой ВМ выполняются от имени сервисного аккаунта.Сервисный аккаунт нельзя удалить, пока он связан с группой виртуальных машин.
-
yandex_resourcemanager_folder_iam_member
— описание прав доступа к каталогу, которому принадлежит сервисный аккаунт. Чтобы иметь возможность создавать, обновлять и удалять ВМ в группе, назначьте сервисному аккаунту рольeditor
. -
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
— политика распределения ВМ по зонам доступности.
- Целевая группа Network Load Balancer:
target_group_name
— имя целевой группы Network Load Balancer.target_group_description
— описание целевой группы Network Load Balancer.
Подробнее о настройках целевой группы см. в разделе Настройки интеграции с Network Load Balancer.
- Общая информация о группе ВМ:
-
yandex_vpc_network
— описание облачной сети. -
yandex_vpc_subnet
— описание подсети, к которой будет подключена группа ВМ. -
yandex_lb_network_load_balancer
— описание сетевого балансировщика Network Load Balancer, к которому будет подключена целевая группа.
Примечание
Если у вас уже есть подходящие ресурсы (сервисный аккаунт, облачная сеть, подсеть и сетевой балансировщик), описывать их повторно не нужно. Используйте их имена и идентификаторы в соответствующих параметрах.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Воспользуйтесь методом REST API create для ресурса InstanceGroup или вызовом gRPC API InstanceGroupService/Create.