Pound proxy под Windows
Pound это обратный прокси и балансировщик нагрузки для протоколов HTTP и HTTPS. Отличительные способности включают в себя возможность фронтальной обработки SSL и распределения на обслуживающие сервера в виде HTTP, дезинфекция HTTP и HTTPS на предмет неправильно сформированных запросов, балансировка по состоянию сессии и другим параметрам (URL, идентификации (Basic HTTP), кукам (cookies), HTTP headers). Полная поддержка WebDAV. В режиме балансировки он сам определяет, отвалился ли бекэнд и перенаправляет весь трафик на оставшиеся, периодически чекая отвалившейся хост. Как только Backend восстановился, Pound начинает перебрасывать трафик и на него.
Pound имеет встроенный механизм балансировки и проверки работоспособности обслуживающих серверов. Разработчики отмечают что дизайн изначально был спланирован из принципа не вмешиваться в проходящий трафик, исходя из этого не используют методы встраивания “печенек” и т.п. в сессии, довольно таки на прямую намекая на противоположность методам HAProxy. Несмотря на это замечание, может встраивать в хедэры “X-Forwarded-for” для передачи на бэкенд сервера IP адрес пользователя с целью записи в логи и т.п. Изначально проект разрабатывался как фронтэнд для нескольких серверов Zope (ZEO). Считается легковесным и безопасным, т.к. практически не обращается к диску (кроме чтения сертификатов SSL во время загрузки). Встроенных механизмов отказоустойчивости не имеет.
Проект скромен, манией величия не страдает. Установка и настройка не представляют больших сложностей. Существуют неофициальные пакеты под крупные сборки Линукса, на сайте распространяется только в виде сорсов. Официально тестирован на Линуксе, OpenBSD и Solaris. О использующих проект данных не много, но часто упоминается как решение для балансировки HTTPS в связке с другими решениями.
Чтобы скомпилировать Pound под Windows, используйте CygWin со следующими пакетами: coreutils, cygutils, findutils, gcc-core, gcc-g++, m4, openssl, openssl-devel, rebase, tar, w32api. Их необходимо отметить во время установки вот так:
Копируем следующие файлы в папку, например, C:\Apps\Pound:
cygssl-0.9.8.dll
cygcrypto-0.9.8.dll
cygrunsrv.exe
cygwin1.dll
pound.exe
cygz.dll
Запускаем Cygwin Terminal, переходим в папку с исходниками Pound и выполняем команду:
1 |
./configure --without-ssl --build=i686-pc-cygwin |
Затем даем команду
1 |
make |
Чтобы запустить „фунт“ как службу Windows, с ведением логов, используйте следующую команду с утилитой cygrunsrv от CygWin:
1 2 3 |
cygrunsrv --install Pound --path C:\Apps\Pound\pound.exe --args "-f C:\Apps\Pound\pound.cfg" --stdout C:\Apps\Pound\pound.log --stderr C:\Apps\Pound\pound.log |
Пример конфига, показывающий весь широкий функционал Pound:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
## Minimal sample pound.cfg ###################################################################### ## global options: User "www-data" Group "www-data" #RootJail "/chroot/pound" ## Logging: (goes to syslog by default) ## 0 no logging ## 1 normal ## 2 extended ## 3 Apache-style (common log format) LogLevel 1 ## check backend every X secs: Alive 30 ## use hardware-accelleration card supported by openssl(1): #SSLEngine "" ###################################################################### ## listen, redirect and ... to: # Here is a more complex example: assume your static images (GIF/JPEG) are to be served from a single back-end 192.168.0.10. In # addition, 192.168.0.11 is to do the hosting for www.myserver.com with URL-based sessions, and 192.168.0.20 (a 1GHz PIII) and # 192.168.0.21 (800Mhz Duron) are for all other requests (cookie-based sessions). The logging will be done by the back-end servers. # The configuration file may look like this: # Main listening ports ListenHTTP Address 202.54.1.10 Port 80 Client 10 End ListenHTTPS Address 202.54.1.10 Port 443 Cert "/etc/pound/pound.pem" Client 20 End # Image server Service URL ".*.(jpg|gif)" BackEnd Address 192.168.1.10 Port 80 End End # Virtual host www.myserver.com Service URL ".*sessid=.*" HeadRequire "Host:.*www.nixcraft.com.*" BackEnd Address 192.168.1.11 Port 80 End Session Type PARM ID "sessid" TTL 120 End End # Everybody else Service BackEnd Address 192.168.1.20 Port 80 Priority 5 End BackEnd Address 192.168.1.21 Port 80 Priority 4 End Session Type COOKIE ID "userid" TTL 180 End End |
Скачать скомпилированный Pound под Windows:
pound-2.7.exe.cab