与子域设置Haproxy设置

希望有人可以帮助确认,如果这假设工作? 我试图将3个子域的stream量路由到相同的haproxy主机;

这是我的设置

haproxy具有一个接口IP 10.10.10.100和DNS名称haproxy01.mydomain.com

与之相关的3个CNAMElogging; sub1.mydomain.com,sub2.mydomain.com和sub3.mydomain.com

所有传入的stream量都是443端口。

有两个后端应用程序服务器接受三个端口8081,8082,8083的stream量,假设;

sub1.mydomain.com为8081 sub2.mydomain.com为8082和sub3.mydomain.com为8083

该应用程序需要SSL通过只有端口8081stream量,所以我相信我必须使用TCP模式为8082和8083的其他stream量也是SSL,但它可以在Haproxy终止,但为了testing,我去了所有的TCP模式。

我的configuration部分实现这一点在下面;

#Application Setup frontend mytraffic bind *:443 mode tcp acl host_sub1 hdr(host) -i sub1.mydomain.com acl host_sub2 hdr(host) -i sub2.mydomain.com acl host_sub3 hdr(host) -i sub3.mydomain.com use_backend sub1_nodes if host_sub1 use_backend sub2_nodes if host_sub2 use_backend sub3_nodes if host_sub3 option tcplog backend sub1_nodes mode tcp balance roundrobin stick-table type ip size 200k expire 30m stick on src server node1 10.10.10.101:8081 check server node2 10.10.10.102:8081 check backend sub2_nodes mode tcp balance roundrobin stick-table type ip size 200k expire 30m stick on src server node1 10.10.10.101:8082 check server node2 10.10.10.102:8082 check backend sub3_nodes mode tcp balance roundrobin stick-table type ip size 200k expire 30m stick on src server node1 10.10.10.101:8083 check server node2 10.10.10.102:8083 check # APPLICATION SETUP END 

当我尝试通过HAproxy访问应用程序服务器,例如对于8082stream量,它会抛出这是日志;

localhost haproxy [6097]:xxxx:51241 [20 / Mar / 2015:12:19:38.720] mytraffic mytraffic / -1 / -1 / 0 0 SC 0/0/0/0/0 0/0

赞赏这个设置的一些方向。

PS我不能在这里明确地embedded任何图像,因为这是我的第一篇文章:-(

在TCP模式下,HAProxy将不会解码HTTP请求,因此您的acl行将不会执行任何操作,前端永远无法匹配后端,如您input的日志所示: mytraffic/<NOSRV>表示它不是无法挑选后端或服务器。

你必须把3个子域分成2个不同的前端,每个前端都有自己的IP,因为它们都是443端口连接的。一个用于传递,另一个用于SSL终止和使用mode http内容切换。 这里需要注意的是,如果您要添加第四个子域名(sub4.mydomain.com),并且还需要传递,那么您需要第三个前端和IP。

您还需要在DNS中创build不同的CNAME或Alogging,以便正确的子域指向正确的IP。

鉴于这个DNSconfiguration:

 10.10.10.100 A haproxy01-cs.mydomain.com 10.10.10.101 A haproxy01-pt1.mydomain.com 10.10.10.102 A haproxy01-pt2.mydomain.com sub1.mydomain.com CNAME haproxy01-pt1.mydomain.com sub2.mydomain.com CNAME haproxy01-cs.mydomain.com sub3.mydomain.com CNAME haproxy01-cs.mydomain.com sub4.mydomain.com CNAME haproxy01-pt2.mydomain.com 

HAproxyconfiguration看起来像这样:

 #Application Setup frontend ContentSwitching bind 10.10.10.100:443 mode http option httplog acl host_sub2 hdr(host) -i sub2.mydomain.com acl host_sub3 hdr(host) -i sub3.mydomain.com use_backend sub2_nodes if host_sub2 use_backend sub3_nodes if host_sub3 frontend PassThrough1 bind 10.10.10.101:443 mode tcp option tcplog use_backend sub1_nodes frontend PassThrough2 bind 10.10.10.102:443 mode tcp option tcplog use_backend sub4_nodes backend sub1_nodes mode tcp balance roundrobin stick-table type ip size 200k expire 30m stick on src server node1 10.10.10.101:8081 check server node2 10.10.10.102:8081 check backend sub2_nodes mode http balance roundrobin stick-table type ip size 200k expire 30m stick on src server node1 10.10.10.101:8082 check server node2 10.10.10.102:8082 check backend sub3_nodes mode http balance roundrobin stick-table type ip size 200k expire 30m stick on src server node1 10.10.10.101:8083 check server node2 10.10.10.102:8083 check backend sub4_nodes mode tcp balance roundrobin stick-table type ip size 200k expire 30m stick on src server node1 10.10.10.101:8084 check server node2 10.10.10.102:8084 check