Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Compute Cloud
  • Начало работы
    • Обзор
    • Создание виртуальной машины Linux
    • Создание виртуальной машины Windows
    • Создание группы виртуальных машин
  • Пошаговые инструкции
    • Все инструкции
    • Создание виртуальной машины
      • Создать ВМ Linux
      • Создать ВМ Windows
      • Создать ВМ из набора дисков
      • Создать ВМ с дисками из снимков
      • Создать ВМ из пользовательского образа
      • Создать ВМ c GPU
      • Сделать ВМ прерываемой
    • DSVM
      • Обзор
      • Создать ВМ из публичного образа DSVM
    • Группы размещения
      • Создать группу размещения
      • Удалить группу размещения
      • Создать ВМ в группе размещения
      • Добавить ВМ в группу размещения
      • Исключить ВМ из группы размещения
    • Образы с предустановленным ПО
      • Создать ВМ из публичного образа
      • Настроить ПО
      • Работа с ВМ на базе публичного образа
      • Получить список публичных образов
    • Получение информации о виртуальной машине
      • Получить информацию о ВМ
      • Получить вывод последовательного порта
    • Управление виртуальной машиной
      • Остановить и запустить ВМ
      • Сбросить пароль пользователя ВМ
      • Подключить диск к ВМ
      • Отключить диск от ВМ
      • Перенести ВМ в другую зону доступности
      • Перенести ВМ в другой каталог
      • Привязать к ВМ публичный IP-адрес
      • Отвязать от ВМ публичный IP-адрес
      • Сделать публичный IP-адрес ВМ статическим
      • Изменить ВМ
      • Изменить вычислительные ресурсы ВМ
      • Удалить ВМ
    • Работа на виртуальной машине
      • Подключиться к ВМ по SSH
      • Подключиться к ВМ по RDP
      • Подключиться к ВМ через PowerShell
      • Работа с Yandex Cloud изнутри ВМ
      • Установить NVIDIA-драйверы
      • Восстановить доступ к ВМ
    • Управление агентом для сброса паролей
      • Проверить работу агента
      • Установить агент
      • Удалить агент
    • Создание диска
      • Создать пустой диcк
      • Создать пустой диск с блоком большого размера
      • Создать нереплицируемый диск
    • Управление диском
      • Создать снимок диска
      • Изменить диск
      • Перенести диск в другой каталог
      • Удалить диcк
      • Удалить снимок диска
    • Группы размещения дисков
      • Создать группу размещения дисков
      • Удалить диск из группы размещения
    • Создание образа
      • Подготовить образ диска
      • Загрузить свой образ
      • Создать образ из диска
      • Создать образ из снимка диска
      • Создать образ из другого пользовательского образа
    • Управление образом
      • Получить список образов
      • Удалить образ
    • Файловые хранилища
      • Создать файловое хранилище
      • Подключить файловое хранилище к ВМ
      • Отключить файловое хранилище от ВМ
      • Изменить файловое хранилище
      • Удалить файловое хранилище
    • Управление серийной консолью
      • Начало работы
      • Подключиться к серийной консоли по SSH
      • Подключиться к серийной консоли с помощью CLI
      • Запустить командную оболочку в Windows SAC
      • Отключить доступ к серийной консоли
    • Создание группы виртуальных машин
      • Создать группу ВМ фиксированного размера
      • Создать группу ВМ фиксированного размера с сетевым балансировщиком
      • Создать группу ВМ фиксированного размера с L7-балансировщиком
      • Создать автоматически масштабируемую группу ВМ
      • Создать группу ВМ с Container Optimized Image
      • Создать группу ВМ по YAML-спецификации
    • Получение информации о группе виртуальных машин
      • Получить список групп ВМ
      • Получить информацию о группе ВМ
      • Получить список ВМ в группе
    • Управление группой виртуальных машин
      • Изменить группу ВМ
      • Изменить группу ВМ по YAML-спецификации
      • Настроить проверку состояния приложения на ВМ
      • Обновить группу
        • Постепенное обновление
        • Обновление без простоя
      • Приостановить процессы в группе ВМ
      • Возобновить процессы в группе ВМ
      • Остановить группу ВМ
      • Запустить группу ВМ
      • Удалить группу ВМ
    • Выделенные хосты
      • Создать группу выделенных хостов
      • Создать ВМ в группе выделенных хостов
      • Создать ВМ на выделенном хосте
  • Yandex Container Solution
  • Практические руководства
    • Настройка синхронизации времени NTP
    • Работа с группой ВМ с автоматическим масштабированием
    • Автомасштабирование группы ВМ для обработки сообщений из очереди
    • Обновление группы ВМ под нагрузкой
    • Развертывание Remote Desktop Gateway
    • Передача логов с ВМ в Yandex Cloud Logging
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
  • Концепции
    • Взаимосвязь ресурсов
    • Виртуальные машины
      • Обзор
      • Платформы
      • Уровни производительности vCPU
      • Прерываемые виртуальные машины
      • Сеть на виртуальной машине
      • Программно-ускоренная сеть
      • Динамическая миграция
      • Группы размещения
      • Статусы
      • Метаданные
      • Сброс паролей на ВМ Windows
    • Графические ускорители
    • Диски и файловые хранилища
      • Обзор
      • Диски
      • Снимки дисков
      • Группы размещения нереплицируемых дисков
      • Файловые хранилища
      • Операции чтения и записи
    • Образы
    • Группы виртуальных машин
      • Обзор
      • Доступ
      • YAML-спецификация
      • Шаблон виртуальной машины
      • Переменные в шаблоне виртуальной машины
      • Политики
        • Обзор
        • Политика распределения
        • Политика развертывания
        • Политика масштабирования
      • Типы масштабирования
      • Автоматическое восстановление
      • Обновление
        • Обзор
        • Распределение виртуальных машин по зонам
        • Алгоритм развертывания
        • Правила обновления виртуальных машин
        • Изменение дополнительных дисков в шаблоне виртуальной машины
      • Остановка группы и приостановка процессов
      • Статусы
    • Выделенный хост
    • Резервное копирование
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
      • С 1 марта до 1 мая 2019 года
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • DiskPlacementGroupService
      • DiskService
      • DiskTypeService
      • FilesystemService
      • HostGroupService
      • HostTypeService
      • ImageService
      • InstanceService
      • PlacementGroupService
      • SnapshotService
      • ZoneService
      • InstanceGroupService
      • OperationService
    • REST (англ.)
      • Overview
      • DiskPlacementGroup
        • Overview
        • create
        • delete
        • get
        • list
        • listDisks
        • listOperations
        • update
      • Disk
        • Overview
        • create
        • delete
        • get
        • list
        • listOperations
        • move
        • update
      • DiskType
        • Overview
        • get
        • list
      • Filesystem
        • Overview
        • create
        • delete
        • get
        • list
        • listOperations
        • update
      • HostGroup
        • Overview
        • create
        • delete
        • get
        • list
        • listHosts
        • listInstances
        • listOperations
        • update
      • HostType
        • Overview
        • get
        • list
      • Image
        • Overview
        • create
        • delete
        • get
        • getLatestByFamily
        • list
        • listOperations
        • update
      • Instance
        • Overview
        • addOneToOneNat
        • attachDisk
        • attachFilesystem
        • create
        • delete
        • detachDisk
        • detachFilesystem
        • get
        • getSerialPortOutput
        • list
        • listOperations
        • move
        • removeOneToOneNat
        • restart
        • start
        • stop
        • update
        • updateMetadata
        • updateNetworkInterface
      • PlacementGroup
        • Overview
        • create
        • delete
        • get
        • list
        • listInstances
        • listOperations
        • update
      • Snapshot
        • Overview
        • create
        • delete
        • get
        • list
        • listOperations
        • update
      • Zone
        • Overview
        • get
        • list
      • Operation
        • Overview
        • get
      • InstanceGroup
        • Overview
        • list
        • get
        • listLogRecords
        • updateFromYaml
        • updateAccessBindings
        • pauseProcesses
        • stop
        • start
        • delete
        • listInstances
        • createFromYaml
        • update
        • setAccessBindings
        • listOperations
        • create
        • listAccessBindings
        • resumeProcesses
  • Вопросы и ответы
    • Общие вопросы
    • Виртуальные машины
    • Подключение
    • Диски, снимки, образы
    • Аварийное восстановление
    • Мониторинг
    • Лицензирование
    • Все вопросы на одной странице
  1. Практические руководства
  2. Автомасштабирование группы ВМ для обработки сообщений из очереди

Автоматическое масштабирование группы виртуальных машин для обработки сообщений из очереди Yandex Message Queue

Статья создана
Yandex Cloud
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте окружение
    • Создайте вспомогательные ресурсы Yandex Cloud
    • Настройте AWS CLI
  • Создайте очередь в Message Queue
  • Создайте образ с приложением
  • Создайте группу виртуальных машин
  • Проверьте масштабирование группы виртуальных машин
  • Удалите созданные ресурсы

Сценарий описывает интеграцию между сервисами Yandex Compute Cloud, Yandex Message Queue и Yandex Monitoring.

В сценарии создается группа виртуальных машин. Все ВМ в группе обрабатывают сообщения из одной очереди Message Queue (для примера — получают их и через некоторое время удаляют). Количество сообщений в очереди записывается в метрику Yandex Monitoring, и группа ВМ автоматически масштабируется по этой метрике.

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

Чтобы выполнить сценарий:

  1. Подготовьте окружение.
  2. Создайте очередь в Message Queue.
  3. Создайте образ с приложением.
  4. Создайте группу виртуальных машин.
  5. Проверьте масштабирование группы виртуальных машин.

Если созданные ресурсы вам больше не нужны, удалите их.

Перед началом работы

Перед работой нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

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

Подробнее об облаках и каталогах.

В качестве примера в сценарии будет использоваться каталог с именем example-folder.

Необходимые платные ресурсы

В стоимость инфраструктуры входят:

  • плата за использование виртуальных машин и хранение образа (см. тарифы Compute Cloud);
  • плата за использование публичных IP-адресов и исходящий трафик с ВМ (см. тарифы Virtual Private Cloud);
  • плата за запросы к очереди (см. тарифы Message Queue).

Подготовьте окружение

Создайте вспомогательные ресурсы Yandex Cloud

Консоль управления
CLI
API
  1. Создайте сервисный аккаунт queue-autoscale-sa и назначьте ему роль editor в каталоге example-folder:

    1. В консоли управления выберите каталог example-folder.
    2. Перейдите на вкладку Сервисные аккаунты и нажмите кнопку Создать сервисный аккаунт.
    3. Укажите Имя сервисного аккаунта: queue-autoscale-sa.
    4. Нажмите Добавить роль и выберите роль editor.
    5. Нажмите кнопку Создать.
  2. Создайте статический ключ доступа для работы сервисного аккаунта с Message Queue и сохраните его в файл access_key:

    1. В списке сервисных аккаунтов выберите queue-autoscale-sa.

    2. Нажмите кнопку Создать новый ключ.

    3. Выберите пункт Создать статический ключ доступа.

    4. Укажите Описание ключа: Message Queue.

    5. Нажмите кнопку Создать.

    6. Вставьте идентификатор ключа и секретный ключ в файл access_key в следующем формате:

      access_key:
        key_id: <идентификатор ключа>
      secret: <секретный ключ>
      
  3. Создайте облачную сеть queue-autoscale-network:

    1. В консоли управления выберите каталог example-folder.
    2. В списке сервисов выберите Virtual Private Cloud.
    3. Нажмите кнопку Создать сеть.
    4. Укажите Имя сети: queue-autoscale-network.
    5. Отключите опцию Создать подсети.
    6. Нажмите кнопку Создать сеть.
  4. Создайте подсеть queue-autoscale-subnet-b в зоне ru-central1-b:

    1. В списке сетей выберите queue-autoscale-network.

    2. Нажмите кнопку Добавить подсеть.

    3. Укажите параметры подсети:

      • Имя — queue-autoscale-subnet-b.
      • Зона — ru-central1-b.
      • CIDR — 192.168.1.0/24.
    4. Нажмите кнопку Создать подсеть.

  1. Создайте сервисный аккаунт queue-autoscale-sa:

    yc iam service-account create --name queue-autoscale-sa
    
    • --name — имя сервисного аккаунта: queue-autoscale-sa.

    Результат выполнения команды:

    id: aje6brh817ro8o6vo6tv
    folder_id: b0g12ga82bcv0cdeferg
    created_at: "2021-10-04T16:19:10.153346507Z"
    name: queue-autoscale-sa
    
  2. Назначьте сервисному аккаунту роль editor в каталоге example-folder:

    yc resource-manager folder add-access-binding example-folder \
      --service-account-name queue-autoscale-sa \
      --role editor
    
    • --service-account-name — имя сервисного аккаунта, созданного на шаге 1: queue-autoscale-sa.
    • --role — назначаемая роль: editor.

    Результат выполнения команды:

    done (1s)
    
  3. Создайте статический ключ доступа для работы сервисного аккаунта с Message Queue и сохраните его в файл access_key:

    yc iam access-key create \
      --service-account-name queue-autoscale-sa \
      --description "Message Queue" \
    | tee access_key
    
    • --service-account-name — имя сервисного аккаунта, созданного на шаге 1: queue-autoscale-sa.
    • --description — описание ключа.

    Результат выполнения команды:

    access_key:
      id: ajevb6bx51w3wnep9clq
      service_account_id: aje6brh817ro8o6vo6tv
      created_at: "2021-10-04T16:25:19.143847764Z"
      description: Message Queue
      key_id: g3VybpVKdq_YiFEmDIht
    secret: WVUqnwmC4LSUep0GTKGkbcht9K3Xav7VSOeD_mRG
    
  4. Создайте облачную сеть queue-autoscale-network:

    yc vpc network create queue-autoscale-network
    

    Результат выполнения команды:

    id: enpabce123hde4ft1r3t
    folder_id: b0g12ga82bcv0cdeferg
    created_at: "2021-10-04T16:28:15.905337847Z"
    name: queue-autoscale-network
    
  5. Создайте подсеть queue-autoscale-subnet-b в зоне ru-central1-b:

    yc vpc subnet create queue-autoscale-subnet-b \
      --network-name queue-autoscale-network 
      --range 192.168.1.0/24 
      --zone ru-central1-b
    
    • --network-name — имя сети, в которой создается подсеть: queue-autoscale-network.
    • --range — CIDR подсети.
    • --zone — зона доступности, в которой создается подсеть: ru-central1-b.

    Результат выполнения команды:

    id: e1lnabc23r1c9d0efoje
    folder_id: b0g12ga82bcv0cdeferg
    created_at: "2021-10-04T16:29:12.450858436Z"
    name: queue-autoscale-subnet-b
    network_id: enpabce123hde4ft1r3t
    zone_id: ru-central1-b
    v4_cidr_blocks:
    - 192.168.1.0/24
    
  1. Создайте сервисный аккаунт queue-autoscale-sa с помощью вызова gRPC API ServiceAccountService/Create или метода REST API create. В ответных данных будет указан идентификатор сервисного аккаунта.

  2. Назначьте сервисному аккаунту роль editor в каталоге example-folder с помощью вызова gRPC API FolderService/UpdateAccessBindings или метода REST API updateAccessBindings. В теле запроса укажите идентификатор сервисного аккаунта.

  3. Создайте статический ключ доступа для работы сервисного аккаунта с Message Queue и сохраните его в файл access_key:

    1. Используйте вызов gRPC API AccessKeyService/Create или метод REST API create.

    2. Вставьте идентификатор ключа и секретный ключ в файл access_key в следующем формате:

      access_key:
        key_id: <идентификатор ключа>
      secret: <секретный ключ>
      
  4. Создайте облачную сеть queue-autoscale-network с помощью вызова gRPC API NetworkService/Create или метода REST API create. В ответных данных будет указан идентификатор сети.

  5. Создайте подсеть queue-autoscale-subnet-b в зоне ru-central1-b с CIDR 192.168.1.0/24 с помощью вызова gRPC API SubnetService/Create или метода REST API create. В теле запроса укажите идентификатор сети.

Настройте AWS CLI

Примечание

С помощью AWS CLI выполняется последний шаг сценария — проверка масштабирования группы виртуальных машин. Поэтому его нужно установить и настроить, даже если вы не будете использовать его для других шагов.

  1. Скачайте и установите AWS CLI, как описано в его документации.

  2. Настройте AWS CLI для работы с Yandex Cloud:

    1. Создайте в домашнем каталоге файл .aws/credentials и укажите в нем статический ключ доступа, полученный ранее, и его идентификатор:

      [default]
          aws_access_key_id     = <идентификатор ключа>
          aws_secret_access_key = <секретный ключ>
      
    2. Создайте в домашнем каталоге файл .aws/config и укажите в нем регион по умолчанию ru-central1:

      [default]
          region = ru-central1
      

Создайте очередь в Message Queue

Консоль управления
AWS CLI
API
  1. Создайте очередь queue-autoscale-queue:

    1. В консоли управления выберите каталог example-folder.
    2. В списке сервисов выберите Message Queue.
    3. Нажмите кнопку Создать очередь.
    4. Укажите Имя очереди: queue-autoscale-queue.
    5. Нажмите кнопку Создать.
  2. Сохраните URL очереди в файл queue:

    1. В списке очередей выберите queue-autoscale-queue.

    2. Скопируйте URL очереди.

    3. Вставьте URL в файл queue в следующем формате:

      QueueUrl: <URL очереди>
      
  1. Создайте очередь queue-autoscale-queue и сохраните ее URL в файл queue:

    aws sqs create-queue \
      --endpoint https://message-queue.api.cloud.yandex.net \
      --queue-name queue-autoscale-queue \
      --output yaml \
    | tee queue
    
    • --endpoint — корневой URL API Message Queue: https://message-queue.api.cloud.yandex.net.
    • --queue-name — имя очереди: queue-autoscale-queue.

    Результат выполнения команды:

    QueueUrl: https://message-queue.api.cloud.yandex.net/b1gvlrnlei4l5idm9cbj/dj6000000003n58805qi/queue-autoscale-queue
    
  1. Создайте очередь queue-autoscale-queue с помощью метода API CreateQueue. В ответных данных будет указан URL очереди.

  2. Вставьте URL очереди в файл queue в следующем формате:

    QueueUrl: <URL очереди>
    

Создайте образ с приложением

  1. Если у вас еще не установлен Packer, скачайте и установите его по инструкции на официальном сайте.

    Примечание

    Для работы с Yandex Cloud требуется Packer версии не ниже 1.5.

  2. Скачайте архив с файлами для образа (ZIP, 3 КБ) и распакуйте его:

    wget https://storage.yandexcloud.net/doc-files/queue-autoscale-server.zip
    unzip queue-autoscale-server.zip
    
  3. В файле server-packer.json измените объект в массиве builders:

    • В поле service_account_id укажите идентификатор сервисного аккаунта queue-autoscale-sa.

      Как узнать идентификатор сервисного аккаунта
      Консоль управления
      CLI
      API
      1. В консоли управления выберите каталог example-folder.
      2. Перейдите на вкладку Сервисные аккаунты.
      3. В списке сервисных аккаунтов выберите queue-autoscale-sa.
      4. Скопируйте Идентификатор сервисного аккаунта.

      Выполните следующую команду:

      yc iam service-account get queue-autoscale-sa
      

      Результат выполнения команды:

      id: aje6brh817ro8o6vo6tv
      folder_id: b0g12ga82bcv0cdeferg
      created_at: "2021-10-04T16:19:10.153346507Z"
      name: queue-autoscale-sa
      

      Используйте вызов gRPC API ServiceAccountService/List или метод REST API list.

    • В поле folder_id укажите идентификатор каталога в Yandex Cloud.

      Как узнать идентификатор каталога
      Консоль управления
      CLI
      API

      В консоли управления найдите каталог example-folder в списке и скопируйте его Идентификатор.

      Выполните следующую команду:

      yc resource-manager folder get example-folder
      

      Результат выполнения команды:

      id: b1g9hv2loamqfnbul7d9
      cloud_id: b1g2y61sxwqxrtw34qtq
      created_at: "2021-10-04T13:21:32.788067492Z"
      name: example-folder
      status: ACTIVE
      

      Используйте вызов gRPC API FolderService/List или метод REST API list.

    • В поле subnet_id укажите идентификатор подсети queue-autoscale-subnet-b.

      Как узнать идентификатор подсети
      Консоль управления
      CLI
      API
      1. В консоли управления выберите каталог example-folder.
      2. В списке сервисов выберите Virtual Private Cloud.
      3. Перейдите на вкладку Подсети.
      4. В списке подсетей найдите queue-autoscale-subnet-b и скопируйте ее Идентификатор.

      Выполните следующую команду:

      yc vpc subnet get queue-autoscale-subnet-b
      

      Результат выполнения команды:

      id: e1lnabc23r1c9d0efoje
      folder_id: b0g12ga82bcv0cdeferg
      created_at: "2021-10-04T16:29:12.450858436Z"
      name: queue-autoscale-subnet-b
      network_id: enpabce123hde4ft1r3t
      zone_id: ru-central1-b
      v4_cidr_blocks:
      - 192.168.1.0/24
      

      Используйте вызов gRPC API SubnetService/List или метод REST API list.

  4. Получите IAM-токен для работы сервисного аккаунта с Compute Cloud и сохраните его в файл key.json:

    CLI
    yc iam key create \
      --service-account-name queue-autoscale-sa \
      --description "Compute Cloud" \
      --output key.json
    
    • --service-account-name — имя сервисного аккаунта, созданного ранее: queue-autoscale-sa.
    • --description — описание ключа.
    • --output — путь к файлу, в который нужно сохранить ключ: key.json.

    Результат выполнения команды:

    id: ajevh3a0hrqf65scefug
    service_account_id: aje6brh817ro8o6vo6tv
    created_at: "2021-10-04T16:35:19.057777570Z"
    description: Compute Cloud
    key_algorithm: RSA_2048
    
  5. Выполните команду для создания образа:

    packer build server-packer.json
    

    Результат выполнения команды:

    ...
    Build 'builder' finished after 2 minutes 48 seconds.
    
    ==> Wait completed after 2 minutes 48 seconds
    
    ==> Builds finished. The artifacts of successful builds are:
    --> builder: A disk image was created: queue-autoscale-image-v1633354734 (id: fd8hlbuhjc4mssrvknkv) with family name queue-autoscale-image
    

Создайте группу виртуальных машин

Консоль управления
CLI
API
  1. В консоли управления выберите каталог example-folder.

  2. В списке сервисов выберите Compute Cloud.

  3. Перейдите на вкладку Группы виртуальных машин и нажмите кнопку Создать группу.

  4. Укажите Базовые параметры группы ВМ:

    • Имя — queue-autoscale-ig.
    • Сервисный аккаунт — queue-autoscale-sa.
  5. В блоке Распределение выберите зону доступности ru-central1-b.

  6. В блоке Шаблон виртуальной машины нажмите кнопку Задать и настройте шаблон:

    1. В блоке Выбор образа/загрузочного диска перейдите на вкладку Пользовательские и нажмите кнопку Выбрать.

    2. В открывшемся окне выберите созданный образ в качестве загрузочного диска:

      1. Перейдите на вкладку Образ.
      2. Выберите образ, имя которого начинается на queue-autoscale-image.
      3. Нажмите кнопку Применить
    3. В блоке Сетевые настройки:

      • Выберите Сеть queue-autoscale-network. Подсеть queue-autoscale-subnet-b будет выбрана автоматически.
      • В поле Публичный адрес выберите Автоматически, чтобы ВМ имели доступ в интернет и могли получать сообщения из очереди.
    4. В блоке Доступ:

      • Выберите Сервисный аккаунт queue-autoscale-sa.
      • Укажите логин и содержимое открытого ключа для подключения к ВМ.
    5. Нажмите кнопку Сохранить.

  7. В блоке В процессе создания и обновления разрешено укажите следующие значения:

    • Одновременно останавливать — 1.
    • Останавливать машины по стратегии — Деликатная.
  8. В блоке Масштабирование укажите следующие значения:

    • Тип — Автоматический.
    • Тип автомасштабирования — Региональное.
    • Минимальное количество ВМ в зоне — 0.
    • Максимальный размер группы — 5.
    • Промежуток измерения нагрузки — 60 секунд.
    • Время на разогрев ВМ — 0 минут.
    • Период стабилизации — 5 минут.
    • Начальный размер группы — 1.
  9. В блоке Метрики укажите следующие значения:

    • Метрика — Пользовательская.
    • Идентификатор сервиса — message-queue.
    • Имя метрики — queue.messages.stored_count.
    • Метки — ключ queue, значение queue-autoscale-queue.
    • Тип метрики — GAUGE.
    • Тип правила — WORKLOAD.
    • Целевое значение — 5.
  10. Нажмите кнопку Создать.

  1. Получите идентификатор образа, созданного ранее:

    yc compute image get-latest-from-family queue-autoscale-image 
    

    Результат выполнения команды:

    id: fd8hlbuhjc4mssrvknkv
    folder_id: b0g12ga82bcv0cdeferg
    created_at: "2021-10-04T16:38:54.345168059Z"
    name: queue-autoscale-image-v1633354734
    description: Image for autoscaling an instance group based on the size of a queue
    family: queue-autoscale-image
    storage_size: "3858759680"
    min_disk_size: "5368709120"
    product_ids:
    - f2e6fnj3erf1sropamjr
    status: READY
    os:
      type: LINUX
    
  2. Измените файл со спецификацией группы ВМ spec.yaml:

    • В поле folder_id укажите идентификатор каталога в Yandex Cloud.

    • В поле image_id укажите идентификатор созданного образа.

    • В поле network_id укажите идентификатор сети queue-autoscale-network, а в поле subnet_ids — идентификатор подсети queue-autoscale-subnet-b.

      Как узнать идентификатор сети

      • CLI

        Выполните следующую команду:

        yc vpc network get queue-autoscale-network
        

        Результат выполнения команды:

        id: enpabce123hde4ft1r3t
        folder_id: b0g12ga82bcv0cdeferg
        created_at: "2021-10-04T16:28:15.905337847Z"
        name: queue-autoscale-network
        
      • Консоль управления

        1. В консоли управления выберите каталог example-folder.
        2. В списке сервисов выберите Virtual Private Cloud.
        3. В списке сетей найдите queue-autoscale-network и скопируйте ее Идентификатор.
      • API

        Используйте вызов gRPC API NetworkService/List или метод REST API list.

    • В поле service_account_id укажите идентификатор сервисного аккаунта queue-autoscale-sa.

    Как получить идентификаторы ресурсов (кроме образа и сети), см. в шаге 3 раздела Создайте образ с приложением.

  3. Создайте группу ВМ queue-autoscale-ig по спецификации:

    yc compute instance-group create --file spec.yaml
    
    • --file — путь к файлу со спецификацией группы ВМ: spec.yaml.
  1. Получите идентификатор образа из семейства queue-autoscale-image, созданного ранее, с помощью вызова gRPC API ImageService/GetLatestByFamily или метода REST API getLatestByFamily.

  2. Измените файл со спецификацией группы виртуальных spec.yaml:

    • В поле folder_id укажите идентификатор каталога в Yandex Cloud.

    • В поле image_id укажите идентификатор созданного образа.

    • В поле network_id укажите идентификатор сети queue-autoscale-network, а в поле subnet_ids — идентификатор подсети queue-autoscale-subnet-b.

      Как узнать идентификатор сети

      • API

        Используйте вызов gRPC API NetworkService/List или метод REST API list.

      • Консоль управления

        1. В консоли управления выберите каталог example-folder.
        2. В списке сервисов выберите Virtual Private Cloud.
        3. В списке сетей найдите queue-autoscale-network и скопируйте ее Идентификатор.
      • CLI

        Выполните следующую команду:

        yc vpc network get queue-autoscale-network
        

        Результат выполнения команды:

        id: enpabce123hde4ft1r3t
        folder_id: b0g12ga82bcv0cdeferg
        created_at: "2021-10-04T16:28:15.905337847Z"
        name: queue-autoscale-network
        
    • В поле service_account_id укажите идентификатор сервисного аккаунта queue-autoscale-sa.

    Как получить идентификаторы ресурсов (кроме образа и сети), см. в шаге 3 раздела Создайте образ с приложением.

  3. Создайте группу ВМ queue-autoscale-ig по спецификации spec.yaml с помощью вызова gRPC API InstanceGroupService/CreateFromYaml или метода REST API createFromYaml.

Проверьте масштабирование группы виртуальных машин

  1. Измените файл messages.sh: в параметре --queue-url укажите URL очереди из файла queue.

  2. Запустите файл messages.sh. Начнется поочередная отправка 100 сообщений в очередь queue-autoscale-queue.

  3. Откройте дашборды в Yandex Monitoring:

    Консоль управления
    1. Откройте дашборд с информацией о группе ВМ:

      1. В Yandex Monitoring выберите сервисный дашборд Compute — Instance Groups.
      2. В поле Instance Group ID выберите queue-autoscale-ig.
    2. Откройте дашборд с информацией об очереди:

      1. В Yandex Monitoring выберите сервисный дашборд Message Queue.
      2. В поле Queue ID выберите queue-autoscale-queue.
  4. По данным дашбордов убедитесь, что последовательно произошли следующие события:

    1. Очередь queue-autoscale-queue заполнилась 100 сообщениями (дашборд Message Queue, графики Sent messages, count и Messages in queue, count).
    2. ВМ из группы queue-autoscale-ig стали получать сообщения (график Received messages, count) и удалять их из очереди (графики Deleted messages, count и Messages in queue, count).
    3. По мере обработки сообщений группа ВМ увеличилась с одной до пяти машин, а по окончании обработки — стала пустой (дашборд Compute — Instance Groups, график Number of instances in zone B).

Удалите созданные ресурсы

Чтобы остановить работу инфраструктуры и перестать платить за созданные ресурсы:

  1. Удалите группу виртуальных машин queue-autoscale-ig.
  2. Удалите образ из семейства queue-autoscale-image.
  3. Удалите очередь queue-autoscale-queue.
  4. Удалите подсеть queue-autoscale-subnet-b.
  5. Удалите сеть queue-autoscale-network.
  6. Удалите сервисный аккаунт queue-autoscale-sa.

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

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте окружение
  • Создайте вспомогательные ресурсы Yandex Cloud
  • Настройте AWS CLI
  • Создайте очередь в Message Queue
  • Создайте образ с приложением
  • Создайте группу виртуальных машин
  • Проверьте масштабирование группы виртуальных машин
  • Удалите созданные ресурсы