HAProxy与平衡roundrobinredirect的位置可能吗?

我试图build立一个HAProxy,它将监听80端口,并将任何stream量的位置redirect到两个服务器,同时进行健康check

服务器具有不同的URL,所以afaik我不能使用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。

谢谢

我不认为你可以平衡redirect。 如果此部署的目的是将所有stream量从httpredirect到这些服务器,您将需要监听两个单独的IP,并相应地进行redirect。 这意味着用户必须提前知道子域名。

你试图做什么罢工我不是很好。 用户将打到您的前端url,并被redirect到两个子域中的一个。 如果他们返回,他们可能会被redirect到另一个子域。 作为一个用户,我觉得这非常尴尬。

负载平衡的目的是模糊集群中有多less台服务器和什么服务器的实现细节,并提供统一的前端。

我会build议一些沿着以下几点:

 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 

但是,您需要在所有3台主机上安装HA代理(除非上述任何后端共享主机并具有多个NIC)。

如果您使用Apache作为后端,您可以非常简单地实现httpsredirect,不应该使用HA Proxy进行pipe理。

我想我得到你想要的,但不是100%肯定。 我认为你需要将“听”节改写成两个单独的“前端”和“后端”节。 这样,你应该可以添加一个检查到后端,但仍然有你的redirect/urlmangle。

看看一些haproxy的例子,“listen”用于简短和完整的规则集,但后端+前端用于更复杂的设置。