суббота, 11 июня 2011 г.

Оптимизация взаимодействия веб-клиента и сервера - Реверс-прокси

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


Среди "чистых" реверс-прокси, не обремененных сторонней функциональностью, стоит назвать Pound и HAProxy. Рассмотрим особенности их использования в реальных проектах. Начнем с Pound, как более простого:


Pound позволяет распределять нагрузку между множеством Web-серверов, а также имеет встроенную поддержку SSL.

Для небольших проектов Pound будет прекрасным выбором, но при росте проекта может потребоваться его замена. На процессоре уровня Pentium D примерно при 200-300 HTTPS или 600-800 HTTP-запросах в секунду Pound перестает справляться с нагрузкой. Разработчики Pound в ответ на подобные вопросы рекомендуют воспользоваться другими реверс-прокси, пригодными для больших проектов, и это же отражено в документации. Настройка Pound проста и не требует много времени, более того, достаточно прочитать главную страницу проекта, чтобы узнать о его настройке все или почти все. Для небольших и средних проектов стоит выбрать именно его. Плюсом является и встроенная поддержка HTTPS.


Для высоконагруженных проектов прекрасным выбором станет HAProxy:

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


HAProxy один из самых быстрых реверс-прокси. В число проектов, где работает HAProxy, входит Amazon EC2. Настройка нетривиальна и требует внимательного изучения документации, зато настроить можно очень гибко. Начинать знакомство с этим прокси стоит с чтения официальной документации.

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


(C) Alexey Pechnikov aka MBG, mobigroup.ru