Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Compute Cloud
    • Все инструкции
      • Создать группу ВМ фиксированного размера
      • Создать группу ВМ фиксированного размера с сетевым балансировщиком
      • Создать группу ВМ фиксированного размера с L7-балансировщиком
      • Создать автоматически масштабируемую группу ВМ
      • Создать группу ВМ с Container Optimized Image
      • Создать группу ВМ по YAML-спецификации
      • Создать группу ВМ в группе размещения
      • Создать группу ВМ с фиксированными IP-адресами
      • Создать группу ВМ с подключением к файловому хранилищу
      • Создать группу ВМ с подключением к Object Storage
    • Посмотреть операции с ресурсами сервиса
  • Yandex Container Solution
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы
  1. Пошаговые инструкции
  2. Создание группы виртуальных машин
  3. Создать группу ВМ с подключением к файловому хранилищу

Создать группу виртуальных машин с подключением к файловому хранилищу

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 21 апреля 2025 г.

Одним из способов работы со Stateful-нагрузкой является сохранение состояния приложения в независимом от группы ВМ файловом хранилище.

Чтобы создать группу ВМ, в которой к каждой ВМ будет автоматически подключаться общее файловое хранилище:

  1. По умолчанию все операции в Instance Groups выполняются от имени сервисного аккаунта. Если сервисного аккаунта нет, создайте его.

  2. Если у вас нет файлового хранилища, создайте его.

  3. Чтобы иметь возможность создавать, обновлять и удалять ВМ в группе назначьте сервисному аккаунту роль compute.editor.

  4. Создайте группу ВМ:

    CLI
    Terraform
    API

    Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

    По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

    1. Посмотрите описание команды CLI для создания группы ВМ:

      yc compute instance-group create --help
      
    2. Проверьте, есть ли в каталоге сети:

      yc vpc network list
      

      Если ни одной сети нет, создайте ее.

    3. Выберите один из публичных образов Yandex Cloud Marketplace (например, Ubuntu 22.04 LTS).

      Чтобы получить список доступных образов с помощью 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 — образ в процессе удаления.
    4. Подготовьте файл с YAML-спецификацией группы ВМ с произвольным именем, например specification.yaml.

      Для того чтобы привязать файловое хранилище к виртуальным машинам группы, добавьте в спецификацию:

      • В поле instance_template — вложенное поле filesystem_specs с описанием файлового хранилища:

        instance_template:
          ...
          filesystem_specs:
            - mode: READ_WRITE
              device_name: <имя_устройства_ВМ>
              filesystem_id: <идентификатор_файлового_хранилища>
        

        Где:

        • mode — режим доступа к файловому хранилищу: READ_WRITE (чтение и запись).
        • device_name — имя устройства, под которым файловое хранилище будет подключено к ВМ. Например: sample-fs. Имя может содержать строчные буквы латинского алфавита, цифры и дефисы. Первый символ должен быть буквой. Последний символ не может быть дефисом. Максимальная длина имени — 63 символа.
        • filesystem_id — идентификатор файлового хранилища. Посмотреть идентификатор можно в консоли управления или с помощью команды CLI yc compute filesystem list.
      • В секцию #cloud-config поля instance_template.metadata.user-data — набор команд для монтирования файлового хранилища на ВМ:

        instance_template:
          ...
          metadata:
            user-data: |-
              #cloud-config
              ...
              runcmd:
                - mkdir <точка_монтирования_на_ВМ>
                - mount -t virtiofs <имя_устройства_ВМ> <точка_монтирования_на_ВМ>
                - echo "test-fs <точка_монтирования_на_ВМ> virtiofs    rw    0   0" | tee -a /etc/fstab
        

        Где:

        • <точка_монтирования_на_ВМ> — директория на ВМ, в которую будет смонтировано подключенное файловое хранилище. Например: /mnt/vfs0.
        • <имя_устройства_ВМ> — имя устройства, под которым файловое хранилище будет подключено к ВМ. Значение должно соответствовать значению, указанному ранее в поле instance_template.filesystem_specs.device_name.

      Пример YAML-спецификации:

      name: my-vm-group-with-fs
      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: fd8dlvgiatiqd8tt2qke
            type_id: network-hdd
            size: 32g
        network_interface_specs:
          - network_id: enp9mji1m7b3********
            primary_v4_address_spec: {
              one_to_one_nat_spec: {
                ip_version: IPV4
              }
            }
            security_group_ids:
              - enpuatgvejtn********
        filesystem_specs:
          - mode: READ_WRITE
            device_name: sample-fs
            filesystem_id: epdccsrlalon********
        metadata:
          user-data: |-
            #cloud-config
            datasource:
             Ec2:
              strict_id: false
            ssh_pwauth: no
            users:
            - name: my-user
              sudo: ALL=(ALL) NOPASSWD:ALL
              shell: /bin/bash
              ssh_authorized_keys:
              - <публичный_SSH-ключ>
            runcmd:
            - mkdir /mnt/vfs0
            - mount -t virtiofs sample-fs /mnt/vfs0
            - echo "sample-fs /mnt/vfs0 virtiofs    rw    0   0" | tee -a /etc/fstab
      deploy_policy:
        max_unavailable: 1
        max_expansion: 0
      scale_policy:
        fixed_scale:
          size: 2
      allocation_policy:
        zones:
          - zone_id: ru-central1-a
            instance_tags_pool:
            - first
            - second
      

      В данном примере приведена спецификация для создания группы ВМ фиксированного размера с подключенным к виртуальным машинам файловым хранилищем.

      Подробнее о параметрах спецификации группы ВМ см. в разделе Спецификация группы виртуальных машин в формате YAML.

    5. Создайте группу ВМ в каталоге по умолчанию:

      yc compute instance-group create --file specification.yaml
      

      Данная команда создаст группу из двух однотипных ВМ со следующими характеристиками:

      • С именем my-vm-group-with-fs.
      • С OC Ubuntu 22.04 LTS.
      • В зоне доступности ru-central1-a.
      • С 2 vCPU и 2 ГБ RAM.
      • С сетевым HDD-диском объемом 32 ГБ.
      • С подключенным файловым хранилищем. Файловое хранилище будет смонтировано в директорию /mnt/vfs0 виртуальных машин группы.
      • К каждой ВМ группы будет привязан публичный IP-адрес. Это сделано для удобства подключения по SSH к ВМ группы при проверке результата.

        Если вы создадите группу ВМ без публичных IP-адресов, вы по-прежнему сможете подключаться по SSH к ВМ группы, указывая внутренний IP-адрес или FQDN виртуальной машины вместо публичного IP-адреса. Но такое подключение можно выполнить только с другой виртуальной машины, имеющей публичный IP-адрес и расположенной в той же облачной сети Yandex Cloud, что и ВМ группы.

    Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

    1. Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:

      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}"
        depends_on = [
          yandex_iam_service_account.ig-sa,
        ]
      }
      
      resource "yandex_compute_instance_group" "ig-1" {
        name                = "fixed-ig"
        folder_id           = "<идентификатор_каталога>"
        service_account_id  = "${yandex_iam_service_account.ig-sa.id}"
        deletion_protection = "<защита_от_удаления>"
        depends_on          = [yandex_resourcemanager_folder_iam_member.compute_editor]
        instance_template {
          platform_id = "standard-v3"
          resources {
            memory = <объем_RAM_ГБ>
            cores  = <количество_ядер_vCPU>
          }
      
          boot_disk {
            mode = "READ_WRITE"
            initialize_params {
              image_id = "<идентификатор_образа>"
            }
          }
      
          filesystem {
            mode = "READ_WRITE"
            device_name = "<имя_устройства_ВМ>"
            filesystem_id = "<идентификатор_файлового_хранилища>"
          }
      
          network_interface {
            network_id         = "${yandex_vpc_network.network-1.id}"
            subnet_ids         = ["${yandex_vpc_subnet.subnet-1.id}"]
            security_group_ids = ["<список_идентификаторов_групп_безопасности>"]
            nat                = true
          }
      
          metadata = {
            user-data = "#cloud-config\n  datasource:\n   Ec2:\n    strict_id: false\n  ssh_pwauth: no\n  users:\n  - name: <имя_пользователя_ВМ>\n    sudo: ALL=(ALL) NOPASSWD:ALL\n    shell: /bin/bash\n    ssh_authorized_keys:\n    - <публичный_SSH-ключ>\n  runcmd:\n    - mkdir <точка_монтирования_на_ВМ>\n    - mount -t virtiofs <имя_устройства_ВМ> <точка_монтирования_на_ВМ>\n    - echo \"sample-fs <точка_монтирования_на_ВМ> virtiofs    rw    0   0\" | tee -a /etc/fstab"
          }
        }
      
        scale_policy {
          fixed_scale {
            size = <количество_ВМ_в_группе>
          }
        }
      
        allocation_policy {
          zones = ["ru-central1-a"]
        }
      
        deploy_policy {
          max_unavailable = 1
          max_expansion   = 0
        }
      }
      
      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 — описание прав доступа к каталогу, которому принадлежит сервисный аккаунт. Чтобы иметь возможность создавать, обновлять и удалять ВМ в группе, назначьте сервисному аккаунту роль compute.editor.

      • yandex_compute_instance_group — описание группы ВМ:

        • Общая информация о группе ВМ:
          • name — имя группы ВМ.
          • folder_id — идентификатор каталога.
          • service_account_id — идентификатор сервисного аккаунта.
          • deletion_protection — защита группы ВМ от удаления: true или false. Пока опция включена, группу ВМ удалить невозможно. Значение по умолчанию false.
        • Шаблон ВМ:
          • platform_id — платформа.

          • resources — количество ядер vCPU и объем RAM, доступные ВМ. Значения должны соответствовать выбранной платформе.

          • boot_disk — настройки загрузочного диска.

            • mode — режим доступа к диску: READ_ONLY (чтение) или READ_WRITE (чтение и запись).
            • image_id — идентификатор выбранного образа. Вы можете получить идентификатор образа из списка публичных образов.
          • filesystem — настройки файлового хранилища.

            • mode — режим доступа к файловому хранилищу: READ_WRITE (чтение и запись).
            • device_name — имя устройства, под которым файловое хранилище будет подключено к ВМ. Например: sample-fs. Имя может содержать строчные буквы латинского алфавита, цифры и дефисы. Первый символ должен быть буквой. Последний символ не может быть дефисом. Максимальная длина имени — 63 символа.
            • filesystem_id — идентификатор файлового хранилища. Посмотреть идентификатор можно в консоли управления или с помощью команды CLI yc compute filesystem list.
          • network_interface — настройка сети. Укажите идентификаторы сети, подсети и групп безопасности.

          • metadata — в метаданных необходимо передать:

            • Имя пользователя ВМ и открытый ключ для SSH-доступа этого пользователя на ВМ.
            • Точку монтирования файлового хранилища на ВМ — директорию на ВМ, в которую будет смонтировано подключенное файловое хранилище. Например: /mnt/vfs0.
            • Имя устройства на ВМ — имя устройства, под которым файловое хранилище будет подключено к ВМ. Значение должно соответствовать значению, указанному ранее в поле device_name секции filesystem.

            Подробнее см. в разделе Метаданные виртуальной машины.

        • Политики:
          • deploy_policy — политика развертывания ВМ в группе.
          • scale_policy — политика масштабирования ВМ в группе.
          • allocation_policy — политика распределения ВМ по зонам доступности и регионам.
      • yandex_vpc_network — описание облачной сети.

      • yandex_vpc_subnet — описание подсети, к которой будет подключена группа ВМ.

        Примечание

        Если у вас уже есть подходящие ресурсы (сервисный аккаунт, облачная сеть и подсеть), описывать их повторно не нужно. Используйте их имена и идентификаторы в соответствующих параметрах.

      Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.

    2. Создайте ресурсы:

      1. В терминале перейдите в папку, где вы отредактировали конфигурационный файл.

      2. Проверьте корректность конфигурационного файла с помощью команды:

        terraform validate
        

        Если конфигурация является корректной, появится сообщение:

        Success! The configuration is valid.
        
      3. Выполните команду:

        terraform plan
        

        В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.

      4. Примените изменения конфигурации:

        terraform apply
        
      5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

      После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

      К каждой ВМ группы будет привязан публичный IP-адрес. Это сделано для удобства подключения по SSH к ВМ группы при проверке результата.

      Если вы создадите группу ВМ без публичных IP-адресов, вы по-прежнему сможете подключаться по SSH к ВМ группы, указывая внутренний IP-адрес или FQDN виртуальной машины вместо публичного IP-адреса. Но такое подключение можно выполнить только с другой виртуальной машины, имеющей публичный IP-адрес и расположенной в той же облачной сети Yandex Cloud, что и ВМ группы.

    Воспользуйтесь методом REST API create для ресурса InstanceGroup или вызовом gRPC API InstanceGroupService/Create.

Убедитесь, что файловое хранилище подключено к виртуальным машинам группы. Для этого подключитесь к ВМ по SSH и перейдите в директорию, которую вы указали в качестве точки монтирования.

Была ли статья полезна?

Предыдущая
Создать группу ВМ с фиксированными IP-адресами
Следующая
Создать группу ВМ с подключением к Object Storage
Проект Яндекса
© 2025 ООО «Яндекс.Облако»