誰かがこれがうまくいくかどうか確認するのを手伝ってくれることを願っていますか? 3つのサブドメイントラフィックを同じhaproxyホストにルーティングしようとしています。
これが私のセットアップです
1つのインターフェースip 10.10.10.100およびdns名haproxy01.mydomain.comを持つhaproxy
それに関連付けられた3つのCNAMEレコード。 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パススルーを必要とするため、8082および8083の他のトラフィックもSSLであるtcpモードを使用する必要があると思いますが、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 0 SC 0/0/0/0/0 0/0
このセットアップに関するいくつかの方向性に感謝します。
追伸私の最初の投稿なので、ここではわかりやすくするために画像を埋め込むことはできません:-(
TCPモードの場合、HAProxyはHTTPリクエストをデコードしないため、acl
行は何も実行せず、フロントエンドはバックエンドと一致しません。入力したログ:mytraffic/<NOSRV>
は、バックエンドまたはサーバーを選択できなかったことを意味します。
3つのサブドメインを2つの異なるフロントエンドに分割する必要があります。これらはすべてポート443で接続しているため、それぞれ独自のIPを持っています。1つはパススルー用、もう1つはmode http
を使用したSSL終了とコンテンツスイッチング用です。ここでの警告は、パススルーも必要な4番目のサブドメイン(sub4.mydomain.com)を追加する場合、3番目のフロントエンドと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