Привет еще раз! У меня есть серьезная исследовательская задача, и я хочу поделиться своими результатами с сообществом.
Суть задачи — определить лучший вариант развертывания NGINX на AWS EC2/VPC. Он должен быть лучшим во многих отношениях, особенно с точки зрения высокой доступности и скорости отклика.
Особенно важным фактором является скорость обработки SSL-запросов, поэтому были проведены тесты производительности SSL. Все инстансы расположены в одной сети VPC, ELB также поднимается в той же сети.
Рассматривалось несколько вариантов развертывания, но выбор пал на 2 основные конфигурации, на которых я и тестировал.
Конфигурация 1.ELB
Преимущества:
- Общий дизайн для многих приложений.
ELB стоит перед двумя или более экземплярами NGINX, пропускает трафик, тем самым делая конфигурацию высоконадежной (HA).
Если один из узлов выйдет из строя, трафик на него не пойдет.
- Легко масштабируемая схема.
- Плюс один прыжок в сеть.
- Не под контролем.
Конфигурация 2. NGINX
Преимущества:
- Прямой доступ к балансировщику без сторонних прокси.
- Полный контроль над инфраструктурой.
- Настройка высокой надежности осложняется использованием проверок пульса и связи между серверами.
- Трудно масштабировать
Тестирование
Тестирование проводилось на инстансах m1.medium (3,75 ГиБ памяти, 2 вычислительных модуля EC2 (1 виртуальное ядро с 2 вычислительными модулями EC2)).В качестве веб-сервера использовался Nginx со страницей по умолчанию.
Тест проводился из другого региона AWS с использованием Apache Bench: 6 конкурирующих пользователей запросили страницу 400 раз.
В каждом случае тест повторялся 100 раз.
Итак, было проведено 4 испытания.
Обе конфигурации отвечали на запросы http и https.
Без SSL
Испытания направлены на выявление влияния ELB на скорость срабатывания конструкции.Ожидается, что конфигурации с ELB будут вызываться медленнее, поскольку в сети имеется дополнительный узел.
Но также нужно учитывать, что за ELB может находиться более одного (в нашем случае 2) инстанса NGINX, что может оказаться более производительным, чем один.
График среднего времени ответа
Средний результат всех ответов (в мс): ЭЛБ: 209.586 НГИНКС: 207.934
выводы
Как видите, результаты практически одинаковы.Хотя на графике конфигурация NGINX стабильно быстрее ELB, разница в 1-2% абсолютно приемлема.
А поскольку конфигурация ELB намного проще в настройке, более стабильна и имеет практически такое же время отклика, как и NGINX, мы можем отдать ей свое предпочтение.
SSL
Тесты направлены на определение производительности конфигураций, касающихся SSL-шифрования.
В конфигурации ELB шифрование SSL выполняется ELB; в конфигурации NGINX это выполняет один балансировщик NGINX.
График среднего времени ответа
Средний результат всех ответов (в мс): ЭЛБ: 455.921 НГИНКС: 437.745
выводы
В начале тестирования ELB существенно отставал в ответе.Но после 30-го запроса мы видим прирост производительности.
Это оправдано тем фактом, что ELB имеет вертикальное масштабирование.
После увеличения вычислительной мощности производительность стала практически такой же, как видно из графика.
Как вы знаете, ELB — это экземпляр m1.micro, который можно масштабировать по вертикали, если он не справляется с поставленными задачами.
Это никак не контролируется и делается автоматически.
Но благодаря партнерству с AWS можно установить минимальную форму для ELB, и, например, ELB никогда не будет меньше m1.medium. Это сделано для того, чтобы максимально ускорить работу инфраструктуры.
Если вы используете этот корпоративный вариант, выбор места для SSL-шифрования зависит от простоты настройки и других факторов.
Эти проблемы пока не решены, но результаты испытаний показали, что обе конфигурации примерно эквивалентны.
Послесловие
Тесты производительности проводились в конфигурациях с ELB и без него на AWS EC2/VPC. Индикаторы показывают, что наличие ELB очень незначительно влияет на время отклика, хотя и упрощает настройку решений высокой доступности.Кроме того, при использовании дополнительных опций AWS не имеет особого значения, где выполняется обработка SSL. В остальных случаях при достаточной мощности ( по крайней мере не t1.micro ), на ELB его проводить не следует. Если у вас есть другие интересные идеи о том, как сравнить эти конфигурации, я открыт для них.
Теперь все работает, и вы можете легко запустить еще несколько тестов.
УПД Тесты проводились для HAproxy. Как и ожидалось, HAproxy немного быстрее, чем NGINX. Среднее время запроса:
- HАпрокси: 203.345 РС
- ELB через HAProxy: 204.97 РС
Теги: #Nginx #тестирование #aws #Amazon Web Services #elb
-
Просмотр 3D-Фильмов Дома
19 Oct, 24 -
Программа Базового Обучения Интернету
19 Oct, 24 -
Алгоритмы Сжатия Изображений
19 Oct, 24 -
Отчет Европитона 2008
19 Oct, 24