Я пытаюсь настроить HAProxy, который будет прослушивать порт 80 и перенаправлять местоположение любого трафика на два сервера вместе с выполнением работоспособности check
.
У серверов разные URL-адреса, поэтому я не могу использовать server <name> <ip>:<port> check
строки, как я хочу, чтобы браузер клиента читал https: ///ssl1.blah.com или https://ssl2.blah.com
Вот мой haproxy.cfg:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
#debug
#quiet
user haproxy
group haproxy
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen webfarm *:80
mode http
stats enable
stats auth admin:apassword
balance roundrobin
option forwardfor
redirect location https://ssl1.blah.com/gohere
redirect location https://ssl2.blah.com/gohere
Приветствуются любые указатели. Это мое первое приключение с HAProxy или любым программным обеспечением NLB.
Спасибо
Я не считать вы можете сбалансировать редиректы. Если цель этого развертывания - перенаправить весь трафик на эти серверы с http на https, вам нужно будет прослушивать два отдельных IP-адреса и соответственно перенаправлять. Это будет означать, что пользователь должен заранее знать поддомены.
То, что вы пытаетесь сделать, кажется мне не очень хорошим. Пользователь попадет на ваш URL-адрес внешнего интерфейса и будет перенаправлен на один из двух поддоменов. Если они вернутся, их могут перенаправить на другой поддомен. Мне, как пользователю, это крайне неудобно.
Цель балансировки нагрузки - скрыть детали реализации, указывающие, сколько и какие серверы находятся в кластере, и обеспечить единый интерфейс.
Я бы предложил что-то вроде следующего:
Frontend: 10.80.11.1:80 # http://blah.com/
Backend 1: 10.80.11.5:443
Backend 2: 10.80.11.6:443
В каждом из бэкэндов загрузите страницу по умолчанию на /gohere
вместо того, чтобы пытаться заставить прокси-сервер HA перезаписать URL. Теперь вы можете балансировать нагрузку сколько угодно, скрывая детали от пользователя.
Если вы ДЕЙСТВИТЕЛЬНО хотите добиться перезаписи поддоменов, вы можете попробовать что-то вроде этого:
Frontend: 10.80.11.1:80 # http://blah.com
balance roundrobin
Backend: server 10.80.11.2:80
Backend: server 10.80.11.3:80
Frontend: 10.80.11.2:80 # http://ssl1.blah.com
redirect location https://ss1.blah.com
Frontend: 10.80.11.3:80 # http://ssl2.blah.com
redirect location https://ssl2.blah.com
Однако вам необходимо установить прокси-сервер HA на все 3 хоста (если только какой-либо из вышеперечисленных бэкендов не использует общий хост и не имеет нескольких сетевых адаптеров).
Если вы используете Apache в качестве бэкэнда, вы можете очень просто добиться перенаправления https, и не следует управлять этим с помощью прокси-сервера HA.
Я думаю, что получаю то, что вы хотите, но не уверен на 100%. Я думаю, вам нужно переписать строфу "слушать" как две отдельные строфы "фронтенд" и "бэкэнд". Таким образом, вы сможете добавить проверку к бэкэндам, но при этом сохранить перенаправление / URL-адрес.
Взгляните на некоторые примеры haproxy, "listen" используется для коротких и полных наборов правил, но backend + frontend используется для более сложных настроек.