Статьи

Тестирование эффективности балансировки нагрузки NGINX с помощью ApacheBench

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

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

С помощью Jelastic легко настроить кластер приложений — просто добавьте еще несколько экземпляров сервера приложений в свою среду с  помощью мастера топологии . Кроме того, вы автоматически включите сервер балансировки NGINX перед вашим проектом. Он будет отвечать за равномерное распределение нагрузки между указанным числом узлов сервера приложений, выполняемое благодаря  балансировке нагрузки HTTP . Сервер-Diagram_2Таким образом, производительность вашего приложения значительно возрастает, увеличивая количество запросов, которые могут быть обработаны за один раз. В качестве приятного бонуса вы уменьшаете риски недоступности приложения, поскольку в случае сбоя одного сервера все остальные продолжают работать.

Чтобы доказать, что эта схема настолько эффективна, мы покажем вам, как выполнить тестирование балансировки нагрузки с помощью  инструмента ApacheBench (ab)  . Он предоставляет ряд возможностей для проверки способности серверов справляться с растущей и изменчивой нагрузкой. Хотя ab был разработан для тестирования установок Apache, его можно использовать для тестирования любого HTTP-сервера.

Итак, начнем и проверим это в режиме реального времени.

Создайте среду и разверните приложение

1. Войдите в Jelastic Platform и нажмите кнопку Создать среду в верхнем левом углу панели инструментов.

Создать env

2. Диалоговое окно топологии среды появится сразу. Здесь вы можете выбрать нужный язык программирования, приложение / веб-сервер и базу данных.

Поскольку мы собираемся протестировать загрузку сервера ApachePHP, выберите его и задайте пределы использования ресурсов с помощью ползунков облачности. Затем присоедините публичный IP-адрес для этого сервера и введите имя новой среды (например,  балансировщик ). Нажмите Создать.

Env Wizard

3. Через минуту ваше окружение появится на приборной панели.

env создан

4. После того, как среда успешно создана, вы можете развернуть в ней свое приложение. Здесь мы будем использовать пакет HelloWorld.zip по умолчанию, поэтому вам просто нужно развернуть его в желаемой среде с помощью соответствующей кнопки и подтвердить развертывание в открытом фрейме.

Развернуть в

Контрольная точка тестирования

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

Как было упомянуто выше, мы будем использовать инструмент ApacheBench (ab) для этих целей. Он может генерировать однопотоковую загрузку, отправляя указанное количество одновременных запросов на сервер.

Следуйте инструкциям ниже.

1. ApacheBench является частью стандартного дистрибутива исходного кода Apache, поэтому, если у вас его еще нет, выполните следующую команду через свой терминал (или пропустите этот шаг, если он у вас есть).

apt-get install apache2-utils

Подробную информацию обо всех дальнейших используемых командах ab можно найти по
этой ссылке .

2. Введите следующую строку в терминале:

ab -n 500  -c 10 -g res1.tsv {URL_to_your_env}

Замените часть  {URL_to_your_env}  ссылкой на ваше окружение (например, http://balancer.jelastic.com/  в нашем случае). Чтобы получить его, нажмите кнопку «Открыть в браузере» рядом с вашей средой и скопируйте соответствующий URL из адресной строки браузера.

Открыть в браузере

Указанная команда отправит общее количество 500 запросов в указанную среду, которые разделены на пакеты по 10 одновременных запросов одновременно. Все результаты будут сохранены в   файле res1.tsv в вашей  домашней  папке (или введите полный путь к нужному каталогу, если вы хотите изменить местоположение файла).

Кроме того, вы можете указать свои пользовательские параметры для вышеупомянутой команды, если хотите.

T1-2

Этот тест может занять некоторое время в зависимости от установленных параметров, поэтому наберитесь терпения.

3. Созданный файл с результатами должен выглядеть следующим образом:

res1

Изменить конфигурацию среды

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

1. Вернитесь на панель управления Jelastic и нажмите Изменить топологию среды для своей  среды балансировки .

изменить топологию

2. В открытой рамке топологии среды добавьте больше серверов приложений (например, еще один экземпляр Apache) — для этого используйте кнопку + в разделе   мастера горизонтального масштабирования .

Узел балансировки NGINX будет автоматически добавлен в вашу среду как точка входа вашего приложения. Включите Public IP для своего балансировщика нагрузки и укажите ограничения ресурсов. Нажмите Применить, чтобы продолжить.

топология env

3. Когда все необходимые изменения будут успешно применены, вы должны отключить липкие сессии для сервера балансировки. В противном случае все запросы с одного IP-адреса будут перенаправлены на один и тот же экземпляр сервера приложений.

Поэтому нажмите кнопку Config рядом с узлом Nginx.

конфиг

4. Перейдите к файлу conf> nginx-jelastic.conf. Он недоступен для редактирования, поэтому скопируйте все его содержимое и вставьте его в файл nginx.conf (расположенный в той же папке) вместо  include /etc/nginx/nginx-jelastic.conf; линия (обведено на следующем изображении).

nginxconf

5. Затем найдите  в коде два упоминания о параметре  sticky path (в  разделах DEFAULT UPSTREAM  и  UPSTREAMS LIST  ) и прокомментируйте их, как показано ниже.

nginxconf 2-2


Примечание: не пропускайте закрывающие фигурные скобки после этих 
 строк с
липкой дорожкой , они не должны комментироваться.

6. Сохраните внесенные изменения и перезапустите сервер NGINX.

перезапустить узел

Тестирование Balancer и сравнение результатов

Теперь перейдем непосредственно к тестированию балансировки нагрузки.

1. Вернитесь к своему терминалу и  снова запустите  ab- тестирование с теми же параметрами (кроме файла с результатами — укажите для него другое имя, например,  res2.tsv ).

ab -n 500  -c 10 -g res2.tsv {URL_to_your_env}

image13

2. Чтобы уточнить полученные результаты, мы будем использовать свободно распространяемую утилиту gnuplot graphs. Установите его (если вы еще этого не сделали) и войдите в его оболочку с помощью   команды gnuplot .

Gnuplot

3. После этого вам нужно настроить параметры для нашего будущего графика:

set size 1, 1
set title “Benchmark testing”
set key left top
set grid y
set xlabel ‘requests’
set ylabel “response time (ms)”
set datafile separator ‘\t’

установить гнуплот

4. Теперь вы готовы составить график:

plot “/home/res1.tsv” every ::2 using 5 title ‘single server’ with lines, “/home/res2.tsv” every ::2 using 5 title ‘two servers with LB’ with lines

Эта  команда plot  строит 2 графика (разделенных запятой в теле команды). Рассмотрим используемые параметры более подробно:

  • «/Home/resN.tsv»  представляет пути к файлам с результатами вашего тестирования
  • Каждый  оператор :: 2 определяет, что gnuplot начнет сборку со второй строки (т.е. первая строка с заголовками будет пропущена)
  • использование 5  означает, что пятый  столбец ttime  (общее время отклика) будет использоваться для построения графика
  • Параметр title ‘N’  устанавливает конкретное имя графика для более простого разделения результатов теста.
  • с линиями  используется для нашего графика, чтобы быть сплошной линией

участок 2

Вы получите автоматически созданное и открытое изображение, похожее на следующее:

gnuplot10-2 2

Благодаря указанным параметрам красный график показывает производительность одного сервера Apacheserver без балансировщика (результаты тестирования контрольных точек) и зеленый — двух серверов с балансировщиком нагрузки NGINX (результаты второго этапа тестирования).

Обратите внимание: полученные результаты тестирования (время ответа на каждый отправленный запрос) отображаются в порядке возрастания, то есть не в хронологическом порядке.

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

Зарегистрируйтесь сейчас  и попробуйте сами. Наслаждайтесь всеми преимуществами Jelastic Cloud!