share facebook facebook2 twitter menu hatena pocket slack

2013.01.24 THU

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

鈴木 宏康

WRITTEN BY鈴木 宏康

本記事の構成はELBのIPアドレスが変更になった場合に問題が発生する可能性があるので
対策しておく必要があります。
HAProxyをDNS名で指定したバックエンドのIPアドレスが変わったらリロードするの記事が
参考になるかもしれません。

直接ではありませんが、Cloud Design Pattern(CDP)の「Multi Load Balancerパターン」に関する記事です。

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

同一のEC2で複数のSSL(HTTPS)を利用する場合も、SSL(HTTPS)ごとに
ELBを用意することで可能となる。

図にすると下記のようになります。

上図は下記のように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に…

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。