2012年12月9日日曜日

(ELBとからめて)Hostヘッダでの振り分けをHAProxyでやってみる

スズキです。
本記事の構成はELBのIPアドレスが変わった場合に問題が発生する可能性があるので
対策しておく必要があります。次の記事が参考になるかもしれません。

HAProxyをDNS名で指定したバックエンドのIPアドレスが変わったらリロードする

直接ってわけではありませんが、「Multi Load Balancerパターン」に関わるネタです。


このパターンの「利点」に下記のような複数SSL(HTTPS)に関する記載がありますが、
同一のEC2で複数のSSL(HTTPS)を利用する場合も、SSL(HTTPS)ごとに
ELBを用意することで可能となる。
ワイルドカード証明書を利用する場合は、一つのELBで複数のSSL(HTTPS)さいとを
まとめることも可能です。(図にすると下記のような感じです)


上図は下記のようにDNS名ごとに別々のEC2に振り分けるところまで考えています。
  • https://web.suz-lab.com → elb-web (ELB) → web-a/b (EC2)
  • https://admin.suz-lab.com → elb-admin (ELB) → admin-a/b (EC2)
当然ELBにはHostヘッダで振り分ける機能は無いので、ELB直下にはHAProxyサーバを
用意し、HAProxyがHostヘッダを見て書くEC2に振り分けるようにしています。

実際のHAProxyの設定ファイル(/etc/haproxy/haproxy.cfg)は次の通りです。
frontend proxy
    bind 0.0.0.0:80
    acl host_web      hdr(host)    -i web.suz-lab.com
    acl host_admin    hdr(host)    -i admin.suz-lab.com
    use_backend    web      if host_web
    use_backend    admin    if host_admin
    default_backend    admin

backend web
    balance leastconn
    server    elb-web      internal-elb-web...com:80      check port 80

backend admin
    balance leastconn
    server    elb-admin    internal-elb-admin...com:80    check port 80

あとはHAProxyでログを取得して、FluentdでS3に送って、そこからGlacierに...
--------
http://www.suz-lab.com

0 コメント: