누군가가 이것이 작동하는지 확인하는 데 도움이되기를 바랍니다. 3 개의 하위 도메인 트래픽을 동일한 haproxy 호스트로 라우팅하려고합니다.
여기 내 설정입니다
하나의 인터페이스 IP 10.10.10.100 및 DNS 이름 haproxy01.mydomain.com을 사용하는 haproxy
연관된 CNAME 레코드 3 개; sub1.mydomain.com, sub2.mydomain.com 및 sub3.mydomain.com
들어오는 모든 트래픽은 포트 443에 대한 것입니다.
3 개의 포트 8081, 8082, 8083에서 트래픽을 허용하는 2 개의 백엔드 애플리케이션 서버가 있습니다.
8081의 경우 sub1.mydomain.com 8082의 경우 sub2.mydomain.com 및 8083의 경우 sub3.mydomain.com
이 응용 프로그램은 포트 8081 트래픽에만 SSL 통과가 필요하므로 tcp 모드를 사용해야한다고 생각합니다 .8082 및 8083의 다른 트래픽도 SSL이지만 Haproxy에서 종료 될 수 있지만 테스트를 위해 모든 TCP를 사용했습니다. 방법.
이를 달성하기위한 구성 섹션은 다음과 같습니다.
#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
예를 들어 8082 트래픽과 같은 HAproxy를 통해 어플리 케이 션 서버에 액세스하려고하면 이것이 로그가됩니다.
localhost haproxy [6097] : xxxx : 51241 [20 / Mar / 2015 : 12 : 19 : 38.720] mytraffic mytraffic / -1 / -1 / 0 SC 0/0/0/0/0 0/0
이 설정에 대한 몇 가지 지침에 감사드립니다.
추신 : 첫 번째 게시물이므로 명확성을 위해 이미지를 포함 할 수 없습니다 🙁
답변
TCP 모드를 사용하면 HAProxy는 HTTP 요청을 디코딩하지 않으므로 acl
하지 않으므로 입력 한 로그에 표시된 것처럼 회선이 아무것도 수행하지 않으며 프런트 엔드는 백엔드와 일치 mytraffic/<NOSRV>
하지 않습니다. 백엔드 또는 서버.
3 개의 하위 도메인을 포트 443에서 모두 연결하기 때문에 각각 고유 한 IP를 갖는 2 개의 서로 다른 프런트 엔드로 분할해야합니다. 하나는 패스 스루, 다른 하나는 SSL 종료 및 mode http
됩니다. 여기서 통과 할 필요가있는 네 번째 하위 도메인 (sub4.mydomain.com)을 추가하려면 세 번째 프런트 엔드와 IP가 필요하다는 점에주의해야합니다.
또한 올바른 하위 도메인이 올바른 IP를 가리 키도록 DNS에서 다른 CNAME 또는 A 레코드를 만들어야합니다.
이 DNS 구성이 주어지면 :
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
HAproxy 구성은 다음과 같습니다.
#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