web-dev-qa-db-ja.com

サブドメインのセットアップを伴うHaproxyのセットアップ

誰かがこれがうまくいくかどうか確認するのを手伝ってくれることを願っていますか? 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

このセットアップに関するいくつかの方向性に感謝します。

追伸私の最初の投稿なので、ここではわかりやすくするために画像を埋め込むことはできません:-(

8
Global Learning

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
11
GregL