четверг, 6 декабря 2012 г.

Контроллеры доставки приложений (ADC) - новое прочтение

Балансировка нагрузки
Контроллеры доставки приложений (Application Delivery Controllers) или балансировщики нагрузки стали обязательным пунктом в задачах связанных с построением ЦОД. Редкий проект обходится без использования этих устройств, но не всегда заказчики ясно понимают для чего им нужны балансировщики и как сделать правильный выбор. Ранее я приводил критерии выбора балансировщиков нагрузки, Гартнер тоже не остается в стороне и выпустил очередной отчет на эту тему, в котором на "ста пятидесяти" листах доходчиво объясняет разницу одних и других. Можно легко потеряться в объеме информации которые вендоры вываливают на заказчика пытаясь превзойти друг друга по поддерживаемым фичам и параметрам производительности. Недавно мне попалась интересная статья, которую вы можете прочитать в оригинале, где Joshua Bixby президент компании Strangeloop, занимающейся веб-оптимизацией приводит результаты их тестов контроллеров ADC и их пользы относительно того или иного функционала.
Не буду приводить все выкладки, но в целом получается что многие задачи которые заявлены производителями как достоинства ADC-контроллеров, на самом деле с тем же успехом выполнятся самими серверами и выгоды от использования контроллеров для улучшения сервиса в сторону клиентов по некоторым параметрам - ноль.
Это касается следующих задач:
  1. Кэширование - не будьте наивными, мощный сервер сделает это лучше и быстрее балансировщика, с его ограниченным и занятым на другие задачи ресурсом. По большому счету "кэширование" вообще не задача балансировщика нагрузки и эту фичу анонсируют только производители ADC базирующихся на традиционной серверной архитектуре, где в основе сидит юниксовое ядро и есть диски куда можно за одним скидывать кэш. В общем это те устройства где кэширование является бесплатным дополнением к ОС, а раз есть почему бы не использовать...
  2. Компрессия - ну не справляется одно устройство с тем что должна делать серверная ферма, тем более когда алгоритмы компрессии уже встроены в протокол HTTP. Комрессия на ADC это пережиток прошлого, когда под эту задачу всегда нужно было ставить специализированные устройства.
  3. TCP multiplexing - результаты тестирования с отключенным и запущенным функционалом не показали разницы в задержках оклика на запросы. Этот функционал может потребоваться только в случае возникновения взрывных нагрузок на ферму серверов. В нормальной жизни мультиплексирование не дает какого либо ощутимого эффекта.
В итоге автор исследования высказывает скепсис по поводу использования ADC для кэширования и оптимизации трафика приложений, и это абсолютно верно, так как главная задача контроллеров в другом. Балансировщики нагрузки должны распределять трафик на сервера и обеспечивать доступность сервиса, в не зависимости от того что происходит с одиночными фронт-энд серверами в фабрике. ADC должен уметь балансировать и маршрутизировать трафик на седьмом уровне и обеспечивать достаточную производительность в таком режиме. Все остальное от лукавого...

Комментариев нет:

Отправить комментарий