Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Практические руководства
  • Веб-сервис
    • Все руководства
    • Статический сайт в Object Storage
    • Сайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки через Network Load Balancer
    • Отказоустойчивый сайт с балансировкой нагрузки через Application Load Balancer
    • Сайт на базе Joomla с БД PostgreSQL
    • Сайт на WordPress
    • Сайт на WordPress с БД MySQL
    • Перенос WordPress сайта с хостинга в Yandex Cloud
    • Веб-сайт на базе 1С-Битрикс
    • Организация виртуального хостинга
    • Создание балансировщика с защитой от DDoS
    • Публикация обновлений для игр
    • Интеграция L7-балансировщика с Cloud CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Терминирование TLS-соединений
  • Интернет-магазины
    • Все руководства
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на Opencart
  • Архив данных
    • Все руководства
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage с помощью CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage с помощью Bacula
    • Резервное копирование в Object Storage с помощью Veritas Backup Exec
    • Распознавание архива изображений в Yandex Vision
  • Тестовая среда
    • Все руководства
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых виртуальных машинах
    • Эмуляция множества IoT-устройств
    • Нагрузочное тестирование gRPC-сервиса
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
    • Нагрузочное тестирование с нескольких агентов
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Автоматизация сборки образов ВМ с помощью Jenkins
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Миграция в Yandex Cloud с помощью Hystax Acura
    • Защита от сбоев с помощью Hystax Acura
    • Настройка синхронизации времени NTP
    • Работа с группой ВМ с автоматическим масштабированием
    • Автомасштабирование группы ВМ по расписанию
    • Автомасштабирование группы ВМ для обработки сообщений из очереди
    • Обновление группы ВМ под нагрузкой
    • Передача логов с ВМ в Yandex Cloud Logging
    • Резервное копирование ВМ с помощью Hystax Acura Backup
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
    • Настройка локального кеширующего DNS-резолвера
    • Миграция DNS-зон из Яндекс 360
    • Интеграция с корпоративным сервисом DNS
    • Создание веб-хука резолвера ACME для ответов на DNS01-проверки
    • Запись логов балансировщика в PostgreSQL
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
  • Построение Data Platform
    • Все руководства
    • Миграция базы данных из стороннего кластера Apache Kafka® в Yandex Managed Service for Apache Kafka®
    • Поставка данных из Yandex Managed Service for MySQL в Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Поставка данных из Yandex Managed Service for PostgreSQL в Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Поставка данных из Yandex Managed Service for Apache Kafka® в Yandex Managed Service for ClickHouse с помощью Yandex Data Transfer
    • Перенос данных между кластерами Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Поставка данных из Yandex Managed Service for Apache Kafka® в Yandex Managed Service for YDB с помощью Yandex Data Transfer
    • Поставка данных из Yandex Managed Service for MySQL в Yandex Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Yandex Managed Service for PostgreSQL в Yandex Managed Service for Apache Kafka® с помощью Debezium
    • Настройка Kafka Connect для работы с кластером Yandex Managed Service for Apache Kafka®
    • Управление схемами данных в Yandex Managed Service for Apache Kafka®
    • Использование Managed Schema Registry с Yandex Managed Service for Apache Kafka®
    • Использование Confluent Schema Registry с Yandex Managed Service for Apache Kafka®
    • Миграция базы данных из MySQL в ClickHouse с помощью Yandex Data Transfer
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Обмен данными между Yandex Managed Service for ClickHouse и Yandex Data Proc
    • Настройка Yandex Managed Service for ClickHouse для Graphite
    • Получение данных из Yandex Managed Service for Apache Kafka® в Yandex Managed Service for ClickHouse
    • Получение данных из RabbitMQ в Yandex Managed Service for ClickHouse
    • Сохранение потока данных Yandex Data Streams в Yandex Managed Service for ClickHouse
    • Использование гибридного хранилища в Yandex Managed Service for ClickHouse
    • Шардирование таблиц Yandex Managed Service for ClickHouse
    • Настройка Yandex Cloud DNS для доступа к кластерам управляемых баз данных из других облачных сетей
    • Настройка Yandex Cloud DNS для доступа к кластеру Yandex Managed Service for ClickHouse из других облачных сетей
    • Импорт данных из Yandex Managed Service for MySQL в Yandex Data Proc с помощью Sqoop
    • Импорт данных из Yandex Managed Service for PostgreSQL в Yandex Data Proc с помощью Sqoop
    • Использование скриптов инициализации для настройки GeeseFS в Yandex Data Proc
    • Миграция данных из стороннего кластера Elasticsearch в Yandex Managed Service for Elasticsearch с помощью Reindex API
    • Миграция коллекций из стороннего кластера MongoDB в Yandex Managed Service for MongoDB
    • Миграция данных в Yandex Managed Service for MongoDB
    • Шардирование коллекций MongoDB
    • Анализ производительности и оптимизация MongoDB
    • Миграция базы данных из стороннего кластера MySQL в кластер Yandex Managed Service for MySQL
    • Анализ производительности и оптимизация Managed Service for MySQL
    • Синхронизация данных из стороннего кластера MySQL в Yandex Managed Service for MySQL с помощью Yandex Data Transfer
    • Миграция базы данных из Yandex Managed Service for MySQL в сторонний кластер MySQL
    • Миграция базы данных из Yandex Managed Service for MySQL в Yandex Managed Service for YDB с помощью Yandex Data Transfer
    • Миграция базы данных из Yandex Managed Service for MySQL в Yandex Object Storage с помощью Yandex Data Transfer
    • Создание кластера PostgreSQL для 1С
    • Анализ производительности и оптимизация Managed Service for PostgreSQL
    • Миграция базы данных из стороннего кластера PostgreSQL в кластер Yandex Managed Service for PostgreSQL
    • Миграция базы данных из Managed Service for PostgreSQL
    • Поставка данных из Yandex Managed Service for PostgreSQL в Yandex Managed Service for YDB с помощью Yandex Data Transfer
    • Миграция базы данных из Yandex Managed Service for PostgreSQL в Yandex Object Storage
    • Миграция базы данных из Greenplum® в ClickHouse
    • Миграция базы данных из Greenplum® в PostgreSQL
    • Миграция базы данных из стороннего кластера Redis в Yandex Managed Service for Redis
    • Использование кластера Managed Service for Redis в качестве хранилища сессий PHP
  • Продукты Microsoft в Yandex Cloud
    • Все руководства
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Развертывание Remote Desktop Gateway
  • Сетевая инфраструктура
    • Все руководства
    • Архитектура и защита базового интернет-сервиса
    • Настройки DHCP для работы с корпоративным DNS-сервером
    • Маршрутизация с помощью NAT-инстанса
    • Создание туннеля IPSec VPN
    • Установка виртуального роутера Cisco CSR 1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
    • Создание и настройка шлюза UserGate в режиме прокси-сервера
    • Создание и настройка шлюза UserGate в режиме межсетевого экрана
    • Настройка сети для Yandex Data Proc
  • Визуализация и анализ данных
    • Все руководства
    • Визуализация данных из CSV-файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse и Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью SQL-чарта
    • Анализ customer journey мобильного приложения на данных AppMetrica
    • Анализ логов Object Storage при помощи DataLens
  • Интернет вещей
    • Руководства по работе с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Разработка навыка Алисы и сайта с авторизацией
  1. Управление инфраструктурой
  2. Обновление группы ВМ под нагрузкой

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

Статья создана
Yandex Cloud
,
улучшена
Dmitry A.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Подготовьте окружение
  • Создайте группу ВМ с Container Optimized Image
    • Подключите сетевой балансировщик нагрузки к созданной группе виртуальных машин
  • Создайте нагрузку на ВМ
  • Обновите группу ВМ под нагрузкой
  • Остановите нагрузку и получите результаты
  • Как удалить созданные ресурсы

С помощью этого пошагового руководства вы настроите группу ВМ и проверите ее работу при обновлении конфигурации. Для этого:

  1. Подготовьте облако к работе.
  2. Подготовьте окружение.
  3. Создайте группу ВМ с Container Optimized Image.
  4. Создайте нагрузку на ВМ.
  5. Обновите группу ВМ под нагрузкой.
  6. Остановите нагрузку и получите результаты.

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

Подготовьте облако к работе

  1. Если у вас еще нет интерфейса командной строки Yandex Cloud, установите его.

  2. Чтобы скрипты из пошагового руководства работали корректно, скачайте и установите утилиту jq.

  3. Чтобы проверить работу автоматического масштабирования, установите утилиту wrk для проведения нагрузочного тестирования.

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

В стоимость поддержки группы ВМ Yandex Cloud входит плата за:

  • Диски и постоянно запущенные ВМ – тарифы Yandex Compute Cloud.
  • Использование динамического или статического публичного IP-адреса – тарифы Yandex Virtual Private Cloud.

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

  1. Создайте сервисный аккаунт с именем for-load и назначьте ему роль editor:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором вы хотите создать сервисный аккаунт.
    2. Выберите вкладку Сервисные аккаунты.
    3. Нажмите кнопку Создать сервисный аккаунт.
    4. Введите имя for-load.
    5. Чтобы назначить сервисному аккаунту роль на текущий каталог, нажмите Добавить роль и выберите роль editor.
    6. Нажмите кнопку Создать.
    1. Создайте сервисный аккаунт:

      По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

      yc iam service-account create --name for-load
      

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

      id: ajeab0cnib1pdefe21dm
      folder_id: b0g12ga82bcv0cdeferg
      created_at: "2021-02-09T17:31:32.561702Z"
      name: for-load
      
    2. Назначьте роль сервисному аккаунту:

      yc resource-manager folder add-access-binding b0g12ga82bcv0cdeferg \
        --role editor \
        --subject serviceAccount:ajeab0cnib1pdefe21dm
      

    Воспользуйтесь методами:

    1. create для ресурса ServiceAccount, чтобы создать сервисный аккаунт for-load.
    2. setAccessBindings для ресурса Folder, чтобы назначить сервисному аккаунту в текущем каталоге роль editor.
  2. Создайте сеть с именем yc-auto-network и подсети в двух зонах доступности:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором вы хотите создать группу ВМ.
    2. Выберите сервис Virtual Private Cloud.
    3. Нажмите кнопку Создать сеть.
    4. Задайте имя сети yc-auto-network.
    5. Выберите дополнительную опцию Создать подсети.
    6. Нажмите кнопку Создать сеть.
    1. Создайте сеть:

      yc vpc network create --name yc-auto-network
      

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

      id: enpabce123hde4ft1r3t
      folder_id: b0g12ga82bcv0cdeferg
      created_at: "2021-02-09T17:33:32.561702Z"
      name: yc-auto-network
      
    2. Создайте подсеть в зоне ru-central1-a:

      yc vpc subnet create --network-id enpabce123hde4ft1r3t --range 192.168.1.0/24 --zone ru-central1-a
      

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

      id: e1lnabc23r1c9d0efoje
      folder_id: b0g12ga82bcv0cdeferg
      created_at: "2021-02-09T17:34:32.561702Z"
      network_id: enpabce123hde4ft1r3t
      zone_id: ru-central1-a
      v4_cidr_blocks:
      - 192.168.1.0/24
      
    3. Создайте подсеть в зоне ru-central1-b:

      yc vpc subnet create --network-id enpabce123hde4ft1r3t --range 192.168.2.0/24 --zone ru-central1-b
      

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

      id: b1csa2b3clideftjb121
      folder_id: b0g12ga82bcv0cdeferg
      created_at: "2021-02-09T17:35:32.561702Z"
      network_id: enpabce123hde4ft1r3t
      zone_id: ru-central1-b
      v4_cidr_blocks:
      - 192.168.2.0/24
      
    1. Создайте сеть с помощью метода create для ресурса Network.
    2. Создайте подсети в зонах ru-central1-a и ru-central1-b с помощью метода create для ресурса Subnet.

Создайте группу ВМ с Container Optimized Image

  1. Все ВМ группы создаются из образа Container Optimized Image. Каждая ВМ содержит Docker-контейнер с веб-сервером, который эмулирует нагрузку на сервис.

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором вы хотите создать сеть.
    2. Выберите сервис Compute Cloud.
    3. На странице Виртуальные машины перейдите на вкладку Группы виртуальных машин.
    4. Нажмите кнопку Создать группу.
    5. В блоке Базовые параметры:
      • Введите Имя группы group-for-load.
      • Выберите Сервисный аккаунт for-load.
    6. В блоке Распределение выберите Зоны доступности ru-central1-a и ru-central1-b.
    7. В блоке Шаблон виртуальной машины нажмите кнопку Задать:
      • В блоке Выбор образа/загрузочного диска выберите вкладку Container Solution.
      • Нажмите кнопку Настроить.
      • В окне Настройка Docker-контейнера:
        • Введите Имя nginx.
        • В поле Docker-образ нажмите кнопку Укажите ссылку и введите cr.yandex/yc/demo/autoscaling-example-app:v1.
        • Нажмите кнопку Применить.
      • В блоке Диски:
        • Для загрузочного диска укажите Размер 30 ГБ.
      • В блоке Сетевые настройки:
        • Выберите Сеть for-load.
      • В блоке Доступ:
        • Выберите Сервисный аккаунт for-load.
        • В поле Логин укажите имя пользователя, который будет создан на ВМ.
        • В поле SSH-ключ вставьте содержимое файла открытого ключа.
      • Нажмите кнопку Сохранить.
    8. В блоке В процессе создания и обновления разрешено:
      • В поле Уменьшать относительно целевого значения введите 4.
    9. В блоке Масштабирование:
      • Выберите Тип Фиксированный.
      • Введите Размер 6.
    10. В блоке Интеграция с Load Balancer:
      • Включите опцию Создайте целевую группу.
      • Введите Имя целевой группы load-generator.
    11. Нажмите кнопку Создать.
    1. Узнайте идентификатор последней версии публичного образа Container Optimized Image.

      Образ Container Optimized Image в реестре Yandex Container Registry может обновляться и меняться в соответствии с релизами. При этом образ на ВМ не обновится автоматически до последней версии. Чтобы создать группу ВМ с последней версией Container Optimized Image, необходимо самостоятельно проверить ее наличие:

      yc compute image get-latest-from-family container-optimized-image --folder-id standard-images
      

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

      id: fd8iv792kirahcnqnt0q
      folder_id: standard-images
      created_at: "2021-01-29T13:30:22Z"
      ...
      status: READY
      os:
        type: LINUX
      
    2. Сохраните спецификацию группы ВМ с сетевым балансировщиком нагрузки в файл specification.yaml:

      name: group-for-load # Имя группы ВМ, уникальное в рамках каталога.
      service_account_id: ajeab0cnib1pdefe21dm # Идентификатор сервисного аккаунта.
      allocation_policy: # Политика распределения ВМ в группе.
         zones:
           - zone_id: ru-central1-a
           - zone_id: ru-central1-b
      instance_template:
        service_account_id: ajeab0cnib1pdefe21dm # Идентификатор сервисного аккаунта для доступа к приватным Docker-образам.
        platform_id: standard-v1 # Идентификатор платформы.
        resources_spec:
          memory: 2G # Количество памяти (RAM).
          cores: 2 # Количество ядер процессора (vCPU).
        boot_disk_spec:
          mode: READ_WRITE # Режим доступа к диску: чтение и запись.
          disk_spec:
            image_id: <идентификатор последней версии COI>
          type_id: network-ssd # Тип диска.
          size: 30G # Размер диска.
        network_interface_specs:
         - network_id: enplhg4nncc7mctv7kpf # Идентификатор сети.
           subnet_ids:
             - e1lnabc23r1c9d0efoje # Идентификатор подсети.
             - b1csa2b3clideftjb121
           primary_v4_address_spec: {
             one_to_one_nat_spec: {
               ip_version: IPV4 # Спецификация версии интернет-протокола IPv4 для публичного доступа к ВМ.
             }
           }         
        metadata: # Значения, которые будут переданы в метаданные ВМ.
          docker-container-declaration: |- # Ключ в метаданных ВМ, при котором используется Docker Container спецификация.
            spec:
              containers:
                - image: cr.yandex/yc/demo/autoscaling-example-app:v1
                  name: nginx
                  securityContext:
                    privileged: false
                  restartPolicy: Always
                  tty: false
                  stdin: false
          ssh-keys: | # Параметр для передачи SSH-ключа на ВМ.
            yc-user:ssh-ed25519 ABC...d01 user@desktop.ru # Имя пользователя для подключения к ВМ.
      deploy_policy: # Политика развертывания ВМ в группе.
        max_unavailable: 4
      scale_policy: # Политика масштабирования ВМ в группе.
        fixed_scale:
          size: 6
      load_balancer_spec: # Сетевой балансировщик нагрузки.
        target_group_spec:
          name: load-generator
      

      Примечание

      Передать SSH-ключ в метаданных ВМ можно с помощью параметра ssh-keys или в строке с пользовательскими метаданными user-data. В этом руководстве используется первый вариант.

    3. Создайте группу ВМ с именем group-for-load с помощью спецификации specification.yaml:

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

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

      done (2m18s)
      id: cl0kabcquk1gomdefbkk
      folder_id: b0g12ga82bcv0cdeferg
      ...
      service_account_id: ajeab0cnib1pdefe21dm
      status: ACTIVE
      application_load_balancer_state: {}
      

    Воспользуйтесь методами:

    1. getLatestByFamily для ресурса Image, чтобы получить идентификатор последней версии образа container-optimized-image в семействе standard-images;

    2. createFromYaml для ресурса InstanceGroup, чтобы создать группу ВМ по следующей спецификации:

      name: group-for-load # Имя группы ВМ, уникальное в рамках каталога.
      service_account_id: ajeab0cnib1pdefe21dm # Идентификатор сервисного аккаунта.
      allocation_policy: # Политика распределения ВМ в группе.
         zones:
           - zone_id: ru-central1-a
           - zone_id: ru-central1-b
      instance_template:
        service_account_id: ajeab0cnib1pdefe21dm # Идентификатор сервисного аккаунта для доступа к приватным Docker-образам.
        platform_id: standard-v1 # Идентификатор платформы.
        resources_spec:
          memory: 2G # Количество памяти (RAM).
          cores: 2 # Количество ядер процессора (vCPU).
        boot_disk_spec:
          mode: READ_WRITE # Режим доступа к диску: чтение и запись.
          disk_spec:
            image_id: <идентификатор последней версии COI>
          type_id: network-ssd # Тип диска.
          size: 30G # Размер диска.
        network_interface_specs:
         - network_id: enplhg4nncc7mctv7kpf # Идентификатор сети.
           subnet_ids:
             - e1lnabc23r1c9d0efoje # Идентификатор подсети.
             - b1csa2b3clideftjb121
           primary_v4_address_spec: {
             one_to_one_nat_spec: {
               ip_version: IPV4 # Спецификация версии интернет-протокола IPv4 для публичного доступа к ВМ.
             }
           }         
        metadata: # Значения, которые будут переданы в метаданные ВМ.
          docker-container-declaration: |- # Ключ в метаданных ВМ, при котором используется Docker Container спецификация.
            spec:
              containers:
                - image: cr.yandex/yc/demo/autoscaling-example-app:v1
                  name: nginx
                  securityContext:
                    privileged: false
                  restartPolicy: Always
                  tty: false
                  stdin: false
          ssh-keys: | # Параметр для передачи SSH-ключа на ВМ.
            yc-user:ssh-ed25519 ABC...d01 user@desktop.ru # Имя пользователя для подключения к ВМ.
      deploy_policy: # Политика развертывания ВМ в группе.
        max_unavailable: 4
      scale_policy: # Политика масштабирования ВМ в группе.
        fixed_scale:
          size: 6
      load_balancer_spec: # Сетевой балансировщик нагрузки.
        target_group_spec:
          name: load-generator
      
  2. Убедитесь, что группа ВМ создана:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором вы создали группу ВМ.
    2. Выберите сервис Compute Cloud.
    3. Перейдите в раздел Группы виртуальных машин.
    4. Нажмите на имя группы ВМ group-for-load.
    yc compute instance-group list-instances group-for-load
    

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

    +----------------------+---------------------------+-----------------+-------------+----------------------+----------------+
    |     INSTANCE ID      |           NAME            |   EXTERNAL IP   | INTERNAL IP |        STATUS        | STATUS MESSAGE |
    +----------------------+---------------------------+-----------------+-------------+----------------------+----------------+
    ...
    | fhmab0cfsfd125efpvn1 | cl0kabcquk1gomdefbkk-oxig | 178.154.226.108 | 10.130.0.8  | RUNNING_ACTUAL [49m] |                |
    | epdabchpdef0f1e21j14 | cl0kabcquk1gomdefbkk-aqyg | 130.193.40.55   | 10.129.0.20 | RUNNING_ACTUAL [43m] |                |
    +----------------------+---------------------------+-----------------+-------------+----------------------+----------------+
    

    Посмотрите список созданных групп ВМ с помощью метода list для ресурса InstanceGroup.

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

  1. Создайте сетевой балансировщик нагрузки с именем load-generator и подключите его к созданной группе ВМ:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором хотите создать балансировщик.
    2. В списке сервисов выберите Network Load Balancer.
    3. Нажмите кнопку Создать сетевой балансировщик.
    4. Задайте Имя load-generator.
    5. В поле Публичный адрес выберите значение Автоматически.
    6. В блоке Обработчики нажмите кнопку Добавить обработчик:
      • В открывшемся окне введите Имя обработчика http.
      • В поле Порт укажите 80 — на нем балансировщик будет принимать входящий трафик.
      • В поле Целевой порт укажите 80 — на него балансировщик будет направлять трафик.
      • Нажмите кнопку Добавить.
    7. В блоке Целевые группы нажмите кнопку Добавить целевую группу.
    8. В выпадающем списке Целевая группа выберите load-generator.
    9. В блоке целевой группы нажмите кнопку Настроить:
      • В открывшемся окне укажите Путь /hello — по этому пути балансировщик будет отправлять запросы для проверки состояния ВМ из целевой группы.
      • Нажмите кнопку Применить.
    10. Нажмите кнопку Создать.
    1. Получите идентификатор целевой группы load-generator:

      yc load-balancer target-group get load-generator | grep "^id"
      

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

      id: enpsa475ej51enuam897
      
    2. Создайте балансировщик:

      yc load-balancer network-load-balancer create \
        --name load-generator \
        --listener external-ip-version=ipv4,name=http,port=80,protocol=tcp,target-port=80 \
        --target-group healthcheck-http-port=80,healthcheck-http-path=/hello,target-group-id=<ID целевой группы>
      

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

      done (14s)
      id: b0ruab1ccvpd26efgii4
      folder_id: b1csa2b3clideftjb121
      ...
          healthy_threshold: "2"
          http_options:
            port: "80"
            path: /hello
      
    1. Создайте балансировщик нагрузки с помощью метода create для ресурса NetworkLoadBalancer.
    2. Добавьте обработчик к балансировщику с помощью метода addListener для ресурса NetworkLoadBalancer.
    3. Подключите целевую группу к балансировщику с помощью метода attachTargetGroup для ресурса NetworkLoadBalancer.
    4. Подключите балансировщик к группе ВМ с помощью метода addTargets для ресурса TargetGroup.
  2. Убедитесь, что сетевой балансировщик load-generator создан и привязан к группе ВМ:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором вы создали сетевой балансировщик.
    2. Выберите сервис Network Load Balancer.
    3. Нажмите на имя сетевого балансировщика load-generator.
    yc load-balancer network-load-balancer list
    

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

    +----------------------+----------------+-----------------+----------+----------------+------------------------+--------+
    |          ID          |      NAME      |    REGION ID    |   TYPE   | LISTENER COUNT | ATTACHED TARGET GROUPS | STATUS |
    +----------------------+----------------+-----------------+----------+----------------+------------------------+--------+
    | b0ruab1ccvpd26efgii4 | load-generator | ru-central1 | EXTERNAL |              1 | b0r1tabcphde28fj1dd3   | ACTIVE |
    +----------------------+----------------+-----------------+----------+----------------+------------------------+--------+
    

    Воспользуйтесь методом list для ресурса NetworkLoadBalancer.

Создайте нагрузку на ВМ

  1. Получите IP-адрес созданного балансировщика:

    Консоль управления
    CLI
    API
    1. В консоли управления выберите каталог, в котором хотите создать балансировщик.
    2. В списке сервисов выберите Network Load Balancer.
    3. Скопируйте IP-адрес балансировщика.
    yc load-balancer network-load-balancer get load-generator | grep "address"
    

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

      address: 84.252.133.110
    

    Воспользуйтесь методом get для ресурса NetworkLoadBalancer.

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

    wrk -t20 -c20 -d20m --timeout 20s http://<IP-адрес балансировщика>/sleep
    

    Команда запустит утилиту wrk, которая будет отправлять запросы в 20 потоков по 20 подключений к сетевому балансировщику в течение 20 минут. Таймаут запроса 20 секунд. Полученную нагрузку балансировщик распределит между ВМ из группы.

    После запуска wrk на экране появится сообщение о начале тестирования:

    Running 20m test @ http://84.252.133.110/sleep
      20 threads and 20 connections
    

    Переходите к следующему шагу, не дожидаясь окончания выполнения команды.

Обновите группу ВМ под нагрузкой

Консоль управления
CLI
API
  1. В консоли управления выберите каталог, в котором вы создали группу ВМ.
  2. Выберите сервис Compute Cloud.
  3. Перейдите в раздел Группы виртуальных машин.
  4. Нажмите на имя группы ВМ group-for-load.
  5. На странице группы нажмите кнопку Изменить.
  6. В блоке Шаблон виртуальной машины нажмите кнопку и выберите Изменить.
    • В блоке Диски укажите новый размер диска — 35 ГБ.
    • Нажмите кнопку Сохранить.
  7. Нажмите кнопку Сохранить изменения.
  8. В блоке Состояния виртуальных машин поэтапно отобразятся изменения размера диска для всех ВМ группы.
  1. В спецификации specification.yaml укажите новый размер диска — 35 ГБ — и сохраните файл:

    ...
    size: 35G
    ...
    
  2. Обновите группу ВМ:

    yc compute instance-group update --name=group-for-load --file=specification.yaml
    

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

    done (9m24s)
    id: cl10kktrjcn8polprdav
    folder_id: b1g7gvsi89m34qmcm3ke
    ...
       name: load-generator
    service_account_id: ajehbk07uus3s73pcq13
    status: ACTIVE
    
  1. В спецификации укажите новый размер диска — 35 ГБ:

    ...
    size: 35G
    ...
    
  2. Воспользуйтесь методом updateFromYaml для ресурса InstanceGroup, чтобы обновить группу ВМ load-generator по новой спецификации.

Остановите нагрузку и получите результаты

Остановите работу wrk, нажав сочетание клавиш Ctrl + C.

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

  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    10.00s     1.70ms  10.01s    68.21%
    Req/Sec     0.00      0.00     0.00    100.00%
  1148 requests in 17.47m, 211.89KB read
Requests/sec:      1.09
Transfer/sec:     206.94B

Если в результате нет строки об ошибках, например Socket errors, все запросы были обработаны.

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

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

Консоль управления
CLI
API
  1. Удалите балансировщик нагрузки:
    1. Перейдите в корень каталога.
    2. В списке сервисов выберите Network Load Balancer.
    3. Справа в строке балансировщика load-generator нажмите кнопку и выберите Удалить.
    4. В открывшемся окне нажмите кнопку Удалить.
  2. Удалите группу ВМ:
    1. Перейдите в корень каталога.
    2. В списке сервисов выберите Compute Cloud.
    3. Перейдите на вкладку Группы виртуальных машин.
    4. Справа в строке группы load-generator нажмите кнопку и выберите Удалить.
    5. В открывшемся окне нажмите кнопку Удалить.
  3. Удалите сервисный аккаунт:
    1. Перейдите в корень каталога.
    2. Перейдите на вкладку Сервисные аккаунты.
    3. Справа в строке аккаунта yc-auto-sa нажмите кнопку и выберите Удалить.
    4. В открывшемся окне нажмите кнопку Удалить.
  4. Удалите сеть и подсети:
    1. Перейдите в корень каталога.
    2. В списке сервисов выберите Virtual Private Cloud.
    3. Выберите сеть yc-auto-network.
    4. В блоке Подсети:
      1. Справа в строке подсети yc-auto-subnet-1 нажмите кнопку и выберите Удалить.
      2. В открывшемся окне нажмите кнопку Удалить.
      3. Также удалите подсеть yc-auto-subnet-2.
    5. В правом верхнем углу нажмите кнопку Удалить.

Выполните последовательно команды:

yc load-balancer network-load-balancer delete load-generator
yc compute instance-group delete load-generator
yc iam service-account delete yc-auto-sa
yc vpc subnet delete yc-auto-subnet-1
yc vpc subnet delete yc-auto-subnet-2
yc vpc network delete yc-auto-network

Воспользуйтесь методами:

  1. delete для ресурса NetworkLoadBalancer, чтобы удалить балансировщик load-generator.
  2. delete для ресурса InstanceGroup, чтобы удалить группу ВМ load-generator.
  3. delete для ресурса ServiceAccount, чтобы удалить сервисный аккаунт yc-auto-sa.
  4. delete для ресурса Subnet, чтобы удалить подсети yc-auto-subnet-1 и yc-auto-subnet-2.
  5. delete для ресурса Network, чтобы удалить сеть yc-auto-network.

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Подготовьте окружение
  • Создайте группу ВМ с Container Optimized Image
  • Подключите сетевой балансировщик нагрузки к созданной группе виртуальных машин
  • Создайте нагрузку на ВМ
  • Обновите группу ВМ под нагрузкой
  • Остановите нагрузку и получите результаты
  • Как удалить созданные ресурсы