Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

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

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

  • Создайте для себя новый каталог, сеть, сабнеты в каждой зоне доступности и сервисный аккаунт. Для этого запустите скрипт init_common.sh

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

Создайте группу инстансов, которая интегрируется с балансировщиком сетевой нагрузки:

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

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

  3. Выберите раздел Группы виртуальных машин.

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

  5. В блоке Базовые параметры:

    • Введите имя группы: load-generator

    • Выберите сервисный аккаунт. Название сервисного аккаунта совпадает с названием каталога.

  6. В блоке Распределение выберите ru-central1-b и ru-central1-c

  7. В блоке Шаблон виртуальной машины создайте шаблон:

    • В блоке Базовые параметры выберите сервисный аккаунт. Название сервисного аккаунта совпадает с названием каталога.

    • В блоке Диски выберите тип диска SSD.

    • В блоке Публичные образы выберите Container Optimized Image

    • В блоке Вычислительные ресурсы выберите гарантированную долю vCPU 100%

    • В блоке Доступ:

      • Введите логин: yc-user

      • Введите SSH-ключ, взятый из файла ~/.ssh/id_rsa.pub

    • В блоке Настройка Docker-контейнера:

      • Введите имя Docker-контейнера: nginx

      • Введите имя используемого Docker-образа: cr.yandex/yc/demo/nginx-hostname:ui

    • Нажмите кнопку Добавить

  8. В блоке В процессе создания и обновления разрешено:

    • Установите поле Уменьшать относительно целевого значения в значение "4"
  9. В блоке Масштабирование выберите тип Фиксированный и размер 6.

  10. В блоке Интеграция с Load Balancer:

    • Создайте целевую группу

    • Введите имя целевой группы: load-generator

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

Вы можете наблюдать за процессом создания через консоль управления. Для этого зайдите в ваш фолдер, далее выберите Сompute и перейдите в раздел "Группы виртуальных машин" и посмотрите на созданную вами группу.

По окончанию развертывания будет создана группа однотипных виртуальных машин, каждая из которых будет создана из Container Optimized образа. При старте ВМ будет скачиваться Docker-контейнер cr.yandex/yc/demo/load-generator, основанный на openresty из публичного репозитория в Container Registry. Данный Docker-образ содержит nginx и дополнительные модули, благодаря которым мы можем эмулировать процесс обработки запроса, "засыпая" на 10 секунд на каждое обращение. Таким образом, мы сможем увидеть, что все запросы обработаны, несмотря на то, что группа ВМ будет обновлена.

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

  1. В списке сервисов выберите Load Balancer.

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

  3. Введите имя балансировщика: load-generator.

  4. В блоке Обработчики добавьте обработчик с именем "http" и портом 80.

  5. Включите целевые группы.

  6. В блоке Проверка состояния:

    • Введите имя проверки: healthcheck

    • Выберите тип HTTP

    • Введите номер порта: 80

    • Введите путь: /

  7. Нажмите кнопку Создать балансировщик.

  8. Дождитесь выполнения команды.

Проверка запущенного веб-сервиса

Команды ниже сделают 5 HTTP запросов на адрес балансировщика. Веб-сервера за балансировщиком ответят своими FQDN.

EXTERNAL_IP=$(yc load-balancer network-load-balancer get load-generator --format=json | jq -r ".listeners[0].address")

for i in {1..5}
do
  curl --silent $EXTERNAL_IP/host | jq -r .fqdn
done

Обновление группы под нагрузкой

Запустим в фоне утилиту, которая будет отправлять запросы на созданный балансировщик в 20 потоков

EXTERNAL_IP=$(yc load-balancer network-load-balancer get load-generator --format=json | jq -r .listeners[0].address)

wrk -t20 -c20 -d1h --timeout 20s http://$EXTERNAL_IP/sleep 

Изменим спецификацию группы:

  1. На странице группы нажмите кнопку Изменить.

  2. В блоке Шаблон виртуальной машины откройте меню и нажмите кнопку Изменить.

    • В блоке Диски измените размер диска на 20 ГБ.

    • Нажмите кнопку Сохранить.

  3. Нажмите кнопку Сохранить изменения.

Дождитесь выполнения команды.

Вы можете наблюдать за процессом создания через консоль управления. Для этого зайдите в ваш фолдер, далее выберите Сompute и перейдите в раздел "Группы виртуальных машин" и посмотрите на созданную вами группу.

По окончании обновления группы, проверим, что ни одного запроса не было потеряно. Для этого остановим выполнение wrk которая генерировала нагрузку, нажав Ctrl-C: В консоль будет выведена информация о ее работе - кол-ве выполненных запросов и их результатах.

 Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    51.12ms   20.99ms 131.32ms   76.41%
    Req/Sec    18.71      6.65    30.00     57.14%
  544 requests in 1.44s, 253.94KB read
Requests/sec:    377.74
Transfer/sec:    176.33KB

Удаление инфраструктуры

Удалим балансировщик и группу виртуальных машин:

  1. В списке сервисов выберите Load Balancer.

  2. Выберите созданный балансировщик.

  3. Нажмите кнопку Удалить.

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

  5. Выберите раздел Группы виртуальных машин.

  6. Выберите созданную виртуальную машину.

  7. Нажмите кнопку Удалить.