Я подумываю о внедрении балансировщика нагрузки в существующую инфраструктуру сайта, чтобы помочь с увеличением трафика и обеспечить уровень защиты от сбоев.
Сайт, на котором я работаю, использует SSL-сертификаты для раздела входа в систему, и мне нужно будет продолжить использование этой функции. Бэкэнд-серверы должны будут знать исходный IP-адрес, поэтому я не могу использовать функцию балансировки нагрузки TCP, и мне понадобится завершение SSL на балансировщике нагрузки, чтобы я мог вставить
X-Forwarded-For
Заголовок. Я видел несколько способов реализации функции дешифрования SSL: один с помощью stunnel, а другой с помощью Pound. Я осмотрелся, но я не уверен, какие плюсы / минусы использования одного по сравнению с другим. Кто-нибудь имеет в этом опыт и дает свои рекомендации?
Спасибо
Сейчас это старый вопрос, но HaProxy теперь имеет встроенную поддержку SSL, что значительно упрощает настройку и использование с SSL / TLS.
посмотреть здесь http://blog.exceliance.fr/2012/09/10/how-to-get-ssl-with-haproxy-getting-rid-of-stunnel-stud-nginx-or-pound/
Я не использовал stunnel с HAProxy, но я давно пользуюсь Pound в нескольких разных средах.
Паунд хорошо справляется с SSL. Его очень легко настроить, он использует стандартные сертификаты PEM и передает достаточно данных SSL обратно на веб-сервер, чтобы ваши приложения знали, с чем они имеют дело. В дополнении к X-Forwarded-For
, ты получаешь X-Forwarded-Proto
, поэтому, если вы используете обе версии сайта с http и https, вы можете дать своим обратным вызовам AJAX / XHR URL, который не вызовет предупреждений безопасности. Pound также поддерживает сертификаты на стороне клиента, сертификаты с подстановочными знаками и SNI. Так что с этим ничего не поделаешь.
Кроме того, я с некоторым недоверием отношусь к развертыванию производственных сервисов с использованием инструментов, требующих стороннего патча для обеспечения критически важной функциональности. Что происходит, когда обнаруживается уязвимость stunnel, и изменение ломает ваш патч? Будете ли вы какое-то время работать в небезопасном режиме или какое-то время работать без заголовков X-Forwarded-IP?
У меня никогда не было крушения Паунда. За исключением странной ошибки, связанной с брандмауэром, которую исправили еще в 2005 году, для меня он всегда работал безупречно. Одна из вещей, которые мне нравятся в нем, - это программа внешнего управления, с которой он поставляется, которая позволяет мне отключать / включать службы и бэкенды или просматривать текущий список липких сопоставлений сеансов и т. Д. Насколько я знаю, haproxy не делает этого. у меня есть что-то вроде фунта poundctl.
Я использую Pound не только для балансировки нагрузки кластера из пяти веб-серверов, но и на своем личном сервере. Там я запускаю веб-серверы на виртуальных машинах, которые используют частные IP-адреса (Тюрьмы FreeBSD). Нагрузка нескольких виртуальных веб-серверов сбалансирована за Pound, работающим на физическом хосте. Я предполагаю, что вы можете сделать то же самое с stunnel + HAProxy, но опять же, я предпочитаю устанавливать программное обеспечение с полной поддержкой сообщества, без нестандартных патчей.
Я не уверен насчет Pound, но мне удалось заставить работать Stunnel + HAProxy, включая установку исходного IP-адреса в качестве заголовка X-Forwarded-For. Хитрость заключается в том, чтобы использовать Stunnel с патчем X-Forwarded-For. Вот пакет, который работает в Ubuntu 10.04: https://launchpad.net/~szelcsanyi-gabor/+archive/stunnel4
Nginx также отлично подходит в качестве внешнего интерфейса SSL для HAProxy, особенно для загрузки эндер-голов. Я использую 4-х ядерный процессор для SSL.