Компания dotCloud открыла пол лицензией MIT код высокопроизводительного прокси-сервера Hipache, оптимизированного для построения распределённой сети web-акселераторов, поддерживающих обработку обращений клиентов по протоколам HTTP и WebSocket. При этом поддержка WebSocket является ключевой особенностью Hipache, который стал первым промышленным решением для высокопроизводительного проксирования WebSocket-трафика. Код проекта написан на языке JavaScript, базируется на библиотеке node-http-proxy и работает под управлением серверной JavaScript-платформы Node.js.
Hipache был разработан для обеспечения перенаправления больших объемов трафика от десятков тысяч облачных приложений (вирутальных хостов), функционирующих в PaaS-сервисе dotCloud. Изначально подобные задачи решались с использованием nginx, использование которого не устроило отсутствием поддержки WebSocket и средств адаптации перенаправления трафика в сети с динамической топологией, в которой новые бэкенды создаются и удаляются с интенсивностью несколько раз в секунду.
Основные особенности Hipache:
- Поддержка балансировки нагрузки между несколькими бэкендами;
- Динамическое изменение конфигурации. Конфигурация задаётся в формате JSON и может быть сохранена в БД Redis (достаточно просто поменять параметры конфигурации в Redis и они сразу отразятся в работе прокси);
- Декларативное описание маршрутизации перенаправления запросов;
- Масштабирумость через создание многопроцессных обработчиков;
- Встроенные средства мониторинга состояния бэкендов с поддержкой горячего переключения на запасной бэкенд в случае сбоя и исключения проблемных бэкендов из списка активных обработчиков в пуле балансировки нагрузки;
- Автоматическое отслеживание потребления памяти. В случае превышения заданного лимита вследствии утечки памяти, проблемный процесс перезапускается;
- Поддержка проксирования SSL-трафика (при установке на стороне прокси валидных SSL-ключей и сертификатов, используемых на основном сервере).