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
    • Публикация обновлений для игр с помощью Cloud CDN
    • Интеграция 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
    • Распознавание архива изображений в Vision
  • Тестовая среда
    • Все руководства
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых ВМ
    • Эмуляция множества IoT-устройств
    • Нагрузочное тестирование gRPC-сервиса
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
    • Нагрузочное тестирование с нескольких агентов
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Миграция в Yandex Cloud с помощью Hystax Acura
    • Защита от сбоев с помощью Hystax Acura
    • Настройка синхронизации часов с помощью NTP
    • Работа с группой ВМ с автомасштабированием
    • Масштабирование группы ВМ по расписанию
    • Автомасштабирование группы ВМ для обработки сообщений из очереди Message Queue
    • Обновление группы ВМ под нагрузкой
    • Передача логов с ВМ в Cloud Logging
    • Резервное копирование ВМ с помощью Hystax Acura Backup
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
    • Настройка локального кеширующего DNS-резолвера
    • Миграция DNS-зон из Яндекс 360 в Cloud DNS
    • Интеграция Cloud DNS и корпоративного сервиса DNS
    • Создание веб-хука резолвера ACME для ответов на DNS01-проверки
    • Запись логов балансировщика в PostgreSQL
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
  • Построение Data Platform
    • Все руководства
    • Миграция БД из стороннего кластера Apache Kafka® в Managed Service for Apache Kafka®
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Перенос данных между кластерами Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for YDB с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Настройка Kafka Connect для работы с кластером Managed Service for Apache Kafka®
    • Управление схемами данных в Managed Service for Apache Kafka®
    • Использование Managed Schema Registry с Managed Service for Apache Kafka®
    • Использование Confluent Schema Registry с Managed Service for Apache Kafka®
    • Миграция базы данных из MySQL в ClickHouse с помощью Data Transfer
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Настройка Managed Service for ClickHouse для Graphite
    • Получение данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Получение данных из RabbitMQ в Managed Service for ClickHouse
    • Сохранение потока данных Data Streams в Managed Service for ClickHouse
    • Использование гибридного хранилища в Managed Service for ClickHouse
    • Шардирование таблиц Managed Service for ClickHouse
    • Настройка Cloud DNS для доступа к кластерам управляемых баз данных из других облачных сетей
    • Настройка Cloud DNS для доступа к кластеру Managed Service for ClickHouse из других облачных сетей
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Использование скриптов инициализации для настройки GeeseFS в Data Proc
    • Миграция данных из стороннего кластера Elasticsearch в Managed Service for Elasticsearch с помощью Reindex API
    • Миграция коллекций из стороннего кластера MongoDB в Managed Service for MongoDB
    • Миграция данных в Managed Service for MongoDB
    • Шардирование коллекций MongoDB
    • Анализ производительности и оптимизация MongoDB
    • Миграция БД из стороннего кластера MySQL в кластер Managed Service for MySQL
    • Анализ производительности и оптимизация Managed Service for MySQL
    • Синхронизация данных из стороннего кластера MySQL в Managed Service for MySQL с помощью Data Transfer
    • Миграция БД из Managed Service for MySQL в сторонний кластер MySQL
    • Миграция БД из Managed Service for MySQL в Object Storage с помощью Data Transfer
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Миграция БД из Managed Service for MySQL в Managed Service for YDB с помощью Data Transfer
    • Создание кластера PostgreSQL для «1С:Предприятия»
    • Анализ производительности и оптимизация Managed Service for PostgreSQL
    • Миграция БД из Managed Service for PostgreSQL
    • Миграция БД из стороннего кластера PostgreSQL в Managed Service for PostgreSQL
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for YDB с помощью Data Transfer
    • Миграция БД из Managed Service for PostgreSQL в Object Storage
    • Миграция БД из Greenplum® в ClickHouse
    • Миграция БД из Greenplum® в PostgreSQL
    • Миграция БД из стороннего кластера Redis в 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 в режиме межсетевого экрана
    • Настройка сети для Data Proc
  • Визуализация и анализ данных
    • Все руководства
    • Визуализация данных из файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse и Cloud Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью QL-чарта
    • Анализ customer journey мобильного приложения на данных AppMetrica
    • Анализ логов Object Storage при помощи DataLens
  • Интернет вещей
    • Руководства по работе с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Разработка навыка Алисы и сайта с авторизацией
  1. Тестовая среда
  2. HTTPS-тест с постоянной нагрузкой с помощью Phantom

HTTPS-тест с постоянной нагрузкой с помощью Phantom

Статья создана
Yandex Cloud
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Подготовьте цель тестирования
  • Подготовьте инфраструктуру
    • Создайте сервисный аккаунт
    • Настройте сеть
    • Настройте группы безопасности
  • Создайте агент тестирования
  • Подготовьте файл с тестовыми данными
  • Запустите тест
  • Как удалить созданные ресурсы

Yandex Load Testing можно использовать для тестирования сервиса с постоянной нагрузкой по протоколу HTTPS с помощью генератора нагрузки Phantom.

Чтобы провести нагрузочное тестирование:

  1. Подготовьте облако к работе.
  2. Подготовьте цель тестирования.
  3. Подготовьте инфраструктуру.
  4. Создайте агент.
  5. Подготовьте файл с тестовыми данными.
  6. Запустите тест.

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

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

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

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

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

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

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

Если агент размещается на платформе Yandex Cloud, взимается плата за вычислительные ресурсы (см. тарифы Yandex Compute Cloud).

На стадии Preview использование сервиса Load Testing не тарифицируется.

Подготовьте цель тестирования

В этом примере будет тестироваться сервис с внутренним IP-адресом 172.17.0.10 в той же подсети, где будет размещен агент.

Убедитесь, что для доступа к сервису по протоколу HTTPS используется порт по умолчанию — 443.

Load Testing также можно использовать для нагрузочного тестирования сервиса, доступного публично или находящегося в другой подсети и группе безопасности относительно агента.

Для сервиса, доступного публично, разрешите входящий HTTPS-трафик на порт 443.

Для сервиса, находящегося в другой подсети и группе безопасности относительно агента, создайте правило для входящего HTTPS-трафика на порт 443 в группе безопасности, где размещается цель тестирования.

Подготовьте инфраструктуру

Создайте сервисный аккаунт

  1. Создайте сервисный аккаунт sa-loadtest в каталоге, где будет размещаться агент, с которого будет подаваться нагрузка.
  2. Назначьте сервисному аккаунту роль loadtesting.generatorClient.

Настройте сеть

Создайте и настройте NAT-шлюз в подсети, где размещается цель тестирования и будет размещен агент. Это обеспечит доступ агента к сервису Load Testing.

Настройте группы безопасности

  1. Настройте группу безопасности агента тестирования:

    1. Создайте группу безопасности агента agent-sg.
    2. Добавьте правила:
      1. Правило для исходящего HTTPS-трафика к публичному API Yandex Load Testing:

        • диапазон портов: 443;
        • протокол: TCP;
        • тип источника: CIDR;
        • назначение: 0.0.0.0/0.

        Это позволит подключить агент к сервису Load Testing, чтобы управлять тестами из интерфейса и получать результаты тестирования.

      2. Правило для входящего SSH-трафика:

        • диапазон портов: 22;
        • протокол: TCP;
        • тип источника: CIDR;
        • назначение: 0.0.0.0/0.

        Это позволит подключаться к агенту по протоколу SSH и управлять тестами из консоли или собирать отладочную информацию.

      3. Правило для исходящего трафика при подаче нагрузки к цели тестирования:

        • диапазон портов: 0-65535;
        • протокол: Any;
        • тип источника: Группа безопасности;
        • назначение: Из списка. Укажите группу безопасности, в которой находится нужная цель тестирования.

        Создайте такое правило для каждой цели тестирования с уникальной группой безопасности.

  2. Настройте группу безопасности цели тестирования:

    1. Создайте группу безопасности цели тестирования load-target-sg.

    2. Добавьте правило для входящего трафика при подаче нагрузки к цели тестирования:

      • диапазон портов: 0-65535;
      • протокол: Any;
      • тип источника: Группа безопасности;
      • назначение: Из списка. Укажите группу безопасности, в которой находится агент тестирования.

      Это правило позволит агентам подавать нагрузку на эту цель или подключать дополнительные средства мониторинга.

Создайте агент тестирования

  1. Сгенерируйте пару ключей SSH для подключения к агенту по протоколу SSH.

  2. Создайте агент:

    Консоль управления
    1. В консоли управления выберите каталог, в котором будет создан агент.

    2. В списке сервисов выберите Load Testing.

    3. На панели слева выберите Агенты. Нажмите Создать агент.

    4. Укажите имя агента, например agent-008.

    5. Укажите ту же зону доступности, в которой находится цель тестирования.

    6. В блоке Агент:

      • Выберите подходящий тип агента. Подробнее см. в разделе Производительность агентов.
      • Укажите подсеть, в которой находится цель тестирования.
      • Укажите группу безопасности агента.
    7. В блоке Доступ укажите данные для доступа к агенту:

      • Выберите сервисный аккаунт sa-loadtest.

      • В поле Логин введите имя пользователя.

        Внимание

        Не используйте логин root или другие имена, зарезервированные операционной системой. Для выполнения операций, требующих прав суперпользователя, используйте команду sudo.

      • В поле SSH-ключ вставьте содержимое файла открытого ключа.

    8. Нажмите Создать.

    9. Дождитесь завершения процесса создания виртуальной машины. Статус агента должен смениться на READY_FOR_TEST.

      Примечание

      Процесс создания агента может остановиться на статусе INITIALIZING_CONNECTION, если у агента не будет доступа к loadtesting.api.cloud.yandex.net:443, или у сервисного аккаунта, который назначен агенту, не будет необходимых ролей.

  3. Привяжите публичный IP-адрес к агенту для доступа по протоколу SSH:

    Консоль управления
    1. В консоли управления выберите каталог, в котором размещен агент.
    2. Выберите сервис Compute Cloud.
    3. Выберите виртуальную машину с именем agent-008.
    4. В блоке Сетевой интерфейс в правом верхнем углу нажмите и выберите Добавить публичный IP-адрес.
    5. В открывшемся окне:
      • В поле Публичный адрес выберите получение адреса Автоматически.
      • Нажмите Добавить.

Подготовьте файл с тестовыми данными

  1. Сформируйте тестовые данные в формате URI:

    [Host: 172.17.0.10]
    [Connection: Close]
    / index
    /test?param1=1&param2=2 get_test
    

    Обратите внимание на заголовок Connection: Close — каждое соединение будет закрываться после запроса. Для приложения и генератора такой режим тяжелее. Если не нужно закрывать соединения, то следует указать значение Keep-Alive.

    Также указаны два запроса, отмеченные тегами index и get_test. Генератор будет повторять их по очереди в пределах заданного профиля нагрузки.

  2. Сохраните тестовые данные в файл data.uri.

Запустите тест

  1. В консоли управления выберите сервис Load Testing.

  2. На панели слева выберите Тесты. Нажмите Создать тест.

  3. Выберите способ настройки: Форма или Конфиг.

  4. В зависимости от выбранного способа задайте параметры теста:

    Форма
    Конфиг
    1. В параметре Агент выберите агент agent-008.
    2. В блоке Тестовые данные загрузите файл data.uri в поле Файл с тестовыми данными.
    3. В блоке Настройки генератора нагрузки:
      • В поле Генератор нагрузки выберите генератор PHANTOM.

      • В поле Адрес цели укажите адрес тестируемого сервиса: 172.17.0.10.

      • В поле Порт цели укажите 443 (порт для HTTPS по умолчанию). Разрешите использовать защищенное соединение.

      • В поле Тестирующие потоки укажите значение 5000.

        Это означает, что генератор сможет параллельно обрабатывать 5000 операций: создать 5000 соединений или ждать 5000 ответов от сервиса одновременно.

        Совет

        Для большинства тестов хватит 1000–10000 потоков.

        Использование большего количества потоков задействует больше ресурсов виртуальной машины, на которой запущен агент. Также существует ограничение Compute Cloud на 50000 одновременных соединений с виртуальной машиной.

        Подробнее об организации потоков.

      • Раскройте меню Расписание нагрузки:

        • В поле Тип нагрузки выберите RPS.

        • В меню Профиль нагрузки нажмите Профиль нагрузки и введите описание:

          const(2000,10m)
          

          Это указание генератору обеспечивать нагрузку 2000 запросов в секунду в течение 10 минут.

          Подробнее о профилях нагрузки.

      • В поле Тип запросов выберите URI.

      • В меню Автостоп нажмите Автостоп и введите описание:

        • Тип автостопа: INSTANCES.

        • Критерии автостопа: 90%,60s.

          Этот критерий остановит тест, если в течение 60 секунд будет занято 90% тестирующих потоков, что свидетельствует о возникновении проблем тестирования.

          Подробнее об автостопе.

    4. В блоке Информация о тесте укажите имя, описание и номер тестируемой версии. Это поможет сделать отчет читаемым.
    1. В параметре Агент выберите агент agent-008.

    2. В блоке Тестовые данные загрузите файл data.uri в поле Файл с тестовыми данными.

    3. В поле для ввода конфигурации введите настройки тестирующих потоков в формате yaml:

      phantom:
        enabled: true
        package: yandextank.plugins.Phantom
        address: 172.17.0.10:443    # адрес цели тестирования
        ammo_type: uri
        load_profile:
          load_type: rps
          schedule: const(2000,5m)  # расписание нагрузки: 2000 запросов в секунду в течение 5 минут
        ssl: true
        instances: 5000             # количество потоков
        ammofile: ammo_file
      core: {}
      autostop:                     # автостоп
        enabled: true
        package: yandextank.plugins.Autostop
        autostop:
          - instances(90%,60s)      # завершение теста, если в течение 60 секунд будет занято 90% тестирующих потоков, что свидетельствует о возникновении проблем тестирования
      uploader:
        enabled: true
        package: yandextank.plugins.DataUploader
        job_name: '[example][phantom][const]'
        job_dsc: 'example'
        ver: '0.5.5'
        api_address: loadtesting.api.cloud.yandex.net:443
      

      Подробнее об автостопе.

      Совет

      Посмотрите пример файла конфигурации. Также пример файла конфигурации можно посмотреть в уже имеющихся тестах.

  5. Нажмите Создать. Конфигурация пройдет проверки, и агент начнет нагружать тестируемый сервис.

  6. Чтобы наблюдать за выполнением тестирования, выберите созданный тест и перейдите на вкладку Отчет.

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

Чтобы перестать платить за созданные ресурсы, достаточно удалить агент.

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Подготовьте цель тестирования
  • Подготовьте инфраструктуру
  • Создайте сервисный аккаунт
  • Настройте сеть
  • Настройте группы безопасности
  • Создайте агент тестирования
  • Подготовьте файл с тестовыми данными
  • Запустите тест
  • Как удалить созданные ресурсы