Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Практические руководства
  • Веб-сервис
    • Все руководства
    • Cтатический сайт в Object Storage
    • Cайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки через Network Load Balancer
    • Отказоустойчивый сайт с балансировкой нагрузки через Application Load Balancer
    • Сайт на базе Joomla с БД PostgreSQL
    • Сайт на WordPress
    • Сайт на WordPress с БД MySQL
    • Перенос WordPress сайта с хостинга в Yandex Cloud
    • Веб-сайт на базе 1С-Битрикс
    • Интеграция L7-балансировщика с Cloud CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
  • Интернет-магазины
    • Все руководства
    • Интернет-магазин на 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-сервиса
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Автоматизация сборки образов ВМ с помощью Jenkins
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Создание кластера Windows-серверов «1С:Предприятия» с базой данных SQL Server
    • Миграция в Yandex Cloud с помощью Hystax Acura
    • Защита от сбоев с помощью Hystax Acura
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
  • Построение Data Platform
    • Все руководства
    • Синхронизация данных из MySQL с помощью Yandex Data Transfer
    • Миграция базы данных из Yandex Managed Service for MySQL в MySQL
    • Настройка управляемой базы данных в кластере ClickHouse для Graphite
    • Обмен данными между Yandex Managed Service for ClickHouse и Yandex Data Proc
    • Импорт базы данных в Yandex Data Proc с использованием Sqoop
    • Использование Confluent Schema Registry с Yandex Managed Service for Apache Kafka®
    • Поставка данных из Yandex Managed Service for PostgreSQL в Yandex Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Yandex Managed Service for PostgreSQL в Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Миграция данных в Yandex Managed Service for Apache Kafka®
    • Перенос коллекций из MongoDB в Yandex Managed Service for MongoDB
    • Миграция базы данных в Yandex Managed Service for SQL Server
    • Перенос данных из PostgreSQL в ClickHouse с помощью Yandex Data Transfer
    • Настройка Kafka Connect для работы с кластером Yandex Managed Service for Apache Kafka®
    • Настройка Yandex Cloud DNS для доступа к кластерам управляемых баз данных из других облачных сетей
    • Миграция в Yandex Managed Service for Elasticsearch с помощью Reindex API
    • Использование скриптов инициализации для настройки GeeseFS в Yandex Data Proc
  • Windows в Yandex Cloud
    • Все руководства
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Развертывание Remote Desktop Gateway
  • Сетевая маршрутизация
    • Все руководства
    • Маршрутизация с помощью NAT-инстанса
    • Создание VPN-туннеля
    • Установка виртуального роутера Cisco CSR1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
    • Настройка сети для Yandex Data Proc
  • Визуализация и анализ данных
    • Все руководства
    • Визуализация данных из CSV-файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse и Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью SQL-чарта
    • Анализ customer journey мобильного приложения на данных AppMetrica
    • Анализ логов Object Storage при помощи DataLens
  • Интернет вещей
    • Руководства по работе с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
  1. Тестовая среда
  2. Нагрузочное тестирование gRPC-сервиса

Нагрузочное тестирование gRPC-сервиса

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Инструкции по интеграции фреймворка gRPC для разных языков программирования приведены в документации.

  1. Настройте поддержку протокола gRPC Server Reflection. Инструкции по настройке протокола gRPC Server Reflection для разных языков программирования приведены в документации.

    С помощью gRPC Server Reflection, генератор нагрузки на старте опрашивает сервер, собирая информацию о сервисах и их методах, и использует эти данные для формирования корректных gRPC-запросов во время теста.

  2. Установите порт для доступа к gRPC-сервису — 8080.

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

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

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

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

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

  1. Создайте сервисный аккаунт sa-loadtest в каталоге, где будет размещаться агент, с которого будет подаваться нагрузка.
  2. Назначьте роли сервисному аккаунту:
    • loadtesting.generatorClient — позволяет запускать агент, тест на агенте и загружать результаты в хранилище.
    • compute.admin — позволяет управлять виртуальной машиной в Compute Cloud.
    • vpc.user — позволяет подключаться к сетевым ресурсам Virtual Private Cloud и использовать их.

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

Включите 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. В открывшемся окне:
      • В поле Публичный адрес выберите получение адреса Автоматически.
      • Нажмите Добавить.

Проверьте работу протокола gRPC Server Reflection

  1. Подключитесь к агенту по протоколу SSH.

  2. Выполните команду для проверки работы протокола gRPC Server Reflection на gRPC-сервисе:

    TLS-соединение
    Стандартное соединение
    grpcurl 172.17.0.10:8080 list
    
    grpcurl --plaintext 172.17.0.10:8080 list
    

    Результат:

    api.Adder
    grpc.reflection.v1alpha.ServerReflection
    

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

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

    {"tag": "/Add", "call": "api.Adder.Add", "payload": {"x": 21, "y": 12}}
    {"tag": "/Add", "call": "api.Adder.Add", "payload": {"x": 21, "y": 12}}
    {"tag": "/Add2", "call": "api.Adder.Add", "payload": {"x": 210, "y": 120}}
    

    Где:

    • tag — тег запроса для отображения в отчетах.
    • call — вызываемый метод.
    • payload — словарь с парметрами вызова, передаваемый цели тестирования.

    В этом примере две трети запросов будут помечены тегом /Add, а одна треть /Add2.

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

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

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

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

  3. Задайте параметры теста:

    • Способ настройки — выберите Конфиг.
    • Агент — выберите агента agent-008, созданного ранее.
  4. Загрузите файл data.json в поле Файл с тестовыми данными.

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

    pandora:
      enabled: true
      pandora_cmd: /usr/local/bin/pandora
      package: yandextank.plugins.Pandora
      config_content:
        pools:
            - id: GRPC
            gun:
              type: grpc                # протокол
              target: 172.17.0.10:8080  # адрес цели тестирования
              tls: false
            ammo:
              type: grpc/json
              file: ammo_123
            result:
              type: phout
              destination: ./phout.log
            rps:
               - duration: 180s         # время теста
                type: line              # тип нагрузки
                from: 1
                to: 1500
            startup:
               - type: once
                times: 1500             # количество потоков
        log:
          level: debug
        monitoring:
          expvar:
            enabled: true
            port: 1234
    uploader:
      api_address: loadtesting.api.cloud.yandex.net:443
      enabled: true
      job_dsc: grpc test
      job_name: '[pandora][config][grpc]'
      package: yandextank.plugins.DataUploader
      ver: '1.1'
    cloudloader:
      enabled: false
      package: yandextank.plugins.CloudUploader
    

    Совет

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

  6. Нажмите Создать. После этого конфигурация пройдет проверки, и агент начнет нагружать тестируемый gRPC-сервис.

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

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

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

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

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