Создать группу виртуальных машин фиксированного размера с сетевым балансировщиком
Вы можете создать группу виртуальных машин фиксированного размера совместно с сетевым балансировщиком, который будет равномерно распределять нагрузку по облачным ресурсам. Подробнее читайте в разделе Сетевой балансировщик нагрузки документации сервиса Yandex Network Load Balancer.
Внимание
Создавая группы ВМ, учитывайте лимиты. Чтобы не нарушить работу компонента Instance Groups, не изменяйте и не удаляйте вручную созданные им ресурсы: целевую группу Network Load Balancer, ВМ и диски. Вместо этого измените или удалите группу полностью.
По умолчанию все операции в Instance Groups выполняются от имени сервисного аккаунта. Если сервисного аккаунта нет, создайте его.
Чтобы создать группу виртуальных машин с сетевым балансировщиком нагрузки:
- В консоли управления выберите каталог, в котором будет создана группа виртуальных машин.
- В списке сервисов выберите Compute Cloud.
- На панели слева выберите Группы виртуальных машин.
- Нажмите кнопку Создать группу.
- В блоке Базовые параметры:
-
Введите Имя и Описание группы ВМ. Требования к имени:
- Длина — от 3 до 63 символов.
- Может содержать строчные буквы латинского алфавита, цифры и дефисы.
- Первый символ — буква. Последний символ — не дефис.
Примечание
Имя виртуальной машины используется для генерации внутреннего FQDN единожды — при создании ВМ. Если для вас важен внутренний FQDN, учитывайте это и задавайте нужное имя ВМ при создании.
-
Выберите сервисный аккаунт из списка или создайте новый. Чтобы иметь возможность создавать, обновлять и удалять виртуальные машины в группе, назначьте сервисному аккаунту роль
editor
. По умолчанию все операции в Instance Groups выполняются от имени сервисного аккаунта. -
Включите опцию Защита от удаления при необходимости. Пока опция включена, невозможно удалить группу.
-
- В блоке Распределение выберите нужные Зоны доступности. Виртуальные машины группы могут находиться в разных зонах и регионах доступности. Подробнее о географии Yandex Cloud.
- В блоке Шаблон виртуальной машины нажмите кнопку Задать, чтобы задать конфигурацию базовой виртуальной машины:
- В блоке Базовые параметры введите Описание шаблона.
- В блоке Выбор образа/загрузочного диска выберите, какую систему развернуть на загрузочном диске ВМ.
- В блоке Диски:
- Выберите тип диска.
- Укажите Размер диска.
- Чтобы добавить дополнительные диски, нажмите Добавить диск.
- В блоке Вычислительные ресурсы:
- Выберите платформу.
- Укажите необходимое количество vCPU, гарантированную долю vCPU и объем RAM.
-
При необходимости сделайте виртуальную машину Прерываемой.
Создавая группу прерываемых машин, учитывайте, что виртуальные машины будут останавливаться спустя 24 часа непрерывной работы, а могут быть остановлены еще раньше. При этом возможна ситуация, что Instance Groups не сможет сразу перезапустить их из-за нехватки ресурсов. Это может произойти, если резко возрастет потребление вычислительных ресурсов в Yandex Cloud.
- В блоке Сетевые настройки:
- Выберите облачную сеть из списка или укажите ее идентификатор. Если сети нет, нажмите кнопку Создать новую сеть и создайте ее:
- В открывшемся окне укажите имя новой сети и выберите, к какой Подсети в зоне необходимо подключить виртуальную машину. У каждой сети должна быть как минимум одна подсеть (если подсети нет, создайте ее).
- В поле Публичный адрес выберите способ назначения адреса:
- Автоматически — чтобы назначить случайный IP-адрес из пула адресов Yandex Cloud.
- Без адреса — чтобы не назначать публичный IP-адрес.
- Выберите подходящие группы безопасности (если соответствующего поля нет, для виртуальной машины будет разрешен любой входящий и исходящий трафик).
- (опционально) Создайте запись для ВМ в зоне DNS. Разверните блок Настройки DNS для внутренних адресов и укажите зону, FQDN и время жизни записи. Подробнее см. Интеграция Cloud DNS с Compute Cloud.
- Выберите облачную сеть из списка или укажите ее идентификатор. Если сети нет, нажмите кнопку Создать новую сеть и создайте ее:
- В блоке Доступ укажите данные для доступа на виртуальную машину:
- Укажите Сервисный аккаунт, который следует привязать к виртуальной машине.
- Если выбран образ на основе Linux, заполните поля Логин и SSH-ключ. В качестве ключа укажите содержимое файла открытого ключа.
- Если выбран образ на основе Windows, укажите Пароль пользователя
Administrator
. - При необходимости Разрешите доступ к серийной консоли.
- Нажмите кнопку Сохранить.
- В блоке В процессе создания и обновления разрешено:
- В поле Добавлять выше целевого значения укажите, на какое количество виртуальных машин можно превышать размер группы.
- В поле Уменьшать относительно целевого значения укажите, на какое количество виртуальных машин можно уменьшать размер группы.
- В поле Одновременно создавать укажите, сколько виртуальных машин можно одновременно создавать.
- В поле Время запуска укажите срок, после которого ВМ начнет получать нагрузку.
- В поле Одновременно останавливать укажите, сколько виртуальных машин можно одновременно останавливать.
- В поле Останавливать машины по стратегии укажите одну из стратегий:
- Принудительная — Instance Groups самостоятельно выбирает, какие ВМ остановить при обновлении или уменьшении группы.
- Деликатная — Instance Groups ожидает, когда ВМ остановятся самостоятельно или будут остановлены пользователем.
- В блоке Масштабирование:
- Выберите Фиксированный тип масштабирования.
- Укажите размер группы.
- В блоке Интеграция с Network Load Balancer включите опцию Создать целевую группу.
- Введите Имя целевой группы и Описание целевой группы.
- При необходимости активируйте Проверку состояний для получения сведений о состоянии виртуальных машин и их автоматического восстановления в случае сбоя.
- В поле Тип выберите протокол проверок состояния: HTTP или TCP.
- В поле Путь (для типа HTTP) укажите URL‐путь запроса, на который Instance Groups будет отправлять запросы проверки для HTTP.
- В поле Порт укажите номер порта от 1 до 32767, на который Instance Groups будет отправлять запросы проверки.
- В поле Время ожидания, с укажите время ожидания ответа от 1 до 60 секунд.
- В поле Интервал, c укажите интервал между повторными проверками от 1 до 60 секунд. Интервал должен быть больше времени ожидания минимум на 1 секунду.
- В поле Порог работоспособности укажите количество успешных проверок, после которого ВМ будет считаться работающей нормально.
- В поле Порог неработоспособности укажите количество неудачных проверок, после которого ВМ будет считаться неработающей.
- В блоке Пользовательские переменные при необходимости укажите пары Ключ-Значение.
- Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания группы виртуальных машин:
yc compute instance-group create --help
-
Проверьте, есть ли в каталоге сети:
yc vpc network list
Если ни одной сети нет, создайте ее.
-
Выберите один из публичных образов (например, CentOS 7).
Чтобы получить список доступных образов, выполните следующую команду:
yc compute image list --folder-id standard-images
Результат выполнения команды:
+----------------------+-------------------------------------+--------------------------+----------------------+--------+ | ID | NAME | FAMILY | PRODUCT IDS | STATUS | +----------------------+-------------------------------------+--------------------------+----------------------+--------+ ... | fdvk34al8k5nltb58shr | centos-7-1549279494 | centos-7 | dqni65lfhvv2den5gtv9 | READY | | fdv7ooobjfl3ts9gqp0q | windows-2016-gvlk-1548913814 | windows-2016-gvlk | dqnnc72gj2ist3ktjj1p | READY | | fdv4f5kv5cvf3ohu4flt | ubuntu-1604-lts-1549457823 | ubuntu-1604-lts | dqnnb6dc7640c5i968ro | READY | ... +----------------------+-------------------------------------+--------------------------+----------------------+--------+
-
Создайте YAML-файл с произвольным именем, например
specification.yaml
. -
Опишите в созданном файле:
-
Общую информацию о группе:
name: first-fixed-group-with-balancer service_account_id: <ID> description: "This instance group was created from YAML config."
Ключи:
Ключ Значение 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: fdvk34al8k5nltb58shr type_id: network-hdd size: 32g network_interface_specs: - network_id: c64mknqgnd8avp6edhbt primary_v4_address_spec: {} scheduling_policy: preemptible: false
По умолчанию размер диска указывается в байтах. Вы можете указать другую единицу измерения с помощью соответствующего суффикса.
Суффикс Приставка и множитель Пример 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
Идентификатор публичного образа. type_id
Тип диска. size
Размер диска. network_id
Идентификатор сети default-net
.primary_v4_address_spec
Спецификация версии интернет протокола IPv4. Вы можете предоставить публичный доступ к виртуальным машинам группы, указав версию IP для публичного IP-адреса. Подробнее читайте в разделе Описание шаблона в YAML-файле. scheduling_policy
Конфигурация политики планирования. preemptible
Флаг, указывающий создавать прерываемые виртуальные машины. Если значение true
— будет создана прерываемая, еслиfalse
(по умолчанию) — обычная.
Создавая группу прерываемых машин учитывайте, что виртуальные машины будут останавливаться спустя 24 часа непрерывной работ, а могут быть остановлены еще раньше. При этом возможна ситуация, что Instance Groups не сможет сразу перезапустить их из-за нехватки ресурсов. Это может произойти, если резко возрастет потребление вычислительных ресурсов в Yandex Cloud. -
deploy_policy: max_unavailable: 1 max_expansion: 0 scale_policy: fixed_scale: size: 3 allocation_policy: zones: - zone_id: ru-central1-a
Ключи:
Ключ Значение deploy_policy
Политика развертывания виртуальных машин в группе. scale_policy
Политика масштабирования виртуальных машин в группе. allocation_policy
Политика распределения виртуальных машин по зонам и регионам. -
Целевую группу Network Load Balancer:
load_balancer_spec: target_group_spec: name: first-target-group
Ключи:
Ключ Значение target_group_spec
Спецификация целевой группы Network Load Balancer, связанной с группой виртуальных машин. name
Произвольное имя целевой группы Network Load Balancer. Имя должно быть уникальным в рамках каталога. Имя может содержать строчные буквы латинского алфавита, цифры и дефисы. Первый символ должен быть буквой. Последний символ не может быть дефисом. Максимальная длина имени — 63 символа. Полный код файла
specification.yaml
:name: first-fixed-group-with-balancer service_account_id: <ID> description: "This instance group was created from YAML config." instance_template: platform_id: standard-v3 resources_spec: memory: 2g cores: 2 boot_disk_spec: mode: READ_WRITE disk_spec: image_id: fdvk34al8k5nltb58shr type_id: network-hdd size: 32g network_interface_specs: - network_id: c64mknqgnd8avp6edhbt primary_v4_address_spec: {} deploy_policy: max_unavailable: 1 max_expansion: 0 scale_policy: fixed_scale: size: 3 allocation_policy: zones: - zone_id: ru-central1-a 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
.
Воспользуйтесь методом API create.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
Примечание
Если у вас уже есть подходящие ресурсы (сервисный аккаунт, облачная сеть и подсеть), описывать их повторно не нужно. Используйте их имена и идентификаторы в соответствующих параметрах.
-
yandex_iam_service_account
— описание сервисного аккаунта. Все операции в Instance Groups выполняются от имени сервисного аккаунта. -
yandex_resourcemanager_folder_iam_binding
— описание прав доступа к каталогу, которому принадлежит сервисный аккаунт. Чтобы иметь возможность создавать, обновлять и удалять виртуальные машины в группе, назначьте сервисному аккаунту рольeditor
. -
yandex_compute_instance_group
— описание группы виртуальных машин:-
Общая информация о группе:
Поле Описание name
Имя группы виртуальных машин. folder_id
Идентификатор каталога. service_account_id
Идентификатор сервисного аккаунта. -
Поле Описание 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.
-
-
yandex_vpc_network
— описание облачной сети. -
yandex_vpc_subnet
— описание подсети, к которой будет подключена группа виртуальных машин.
Пример структуры конфигурационного файла:
resource "yandex_iam_service_account" "ig-sa" { name = "ig-sa" description = "service account to manage IG" } resource "yandex_resourcemanager_folder_iam_binding" "editor" { folder_id = "<идентификатор каталога>" role = "editor" members = [ "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}" 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}"] } 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 = "load balancer target group" } } 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"] }
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.
-
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.
-