Назад | Перейти на главную страницу

Возможен ли HAProxy с местоположением перенаправления раундробина баланса?

Я пытаюсь настроить 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 используется для более сложных настроек.