CDP:Multi Load Balancerパターン
提供:AWS-CloudDesignPattern
複数ロードバランサーの設置
目次 |
解決したい課題
Webアプリケーションをマルチデバイスに対応させる場合、PCや携帯、スマートフォンからのアクセスが行なわれる。その際に、アクセスデバイスごとにSSLやセッション振り分けなどの設定を行なう必要がある場合、EC2インスタンス自体にその設定を行なってしまうと、サーバ台数が増加するにつれて、設定の変更が非常に面倒な作業となる。
クラウドでの解決/パターンの説明
Webアプリケーションをホストしている仮想サーバー群において、設定が異なる複数の仮想ロードバランサーを割り当てることで問題を解決できる。つまり、サーバーに手を入れることなく、各デバイスからのアクセスに対する挙動を仮想ロードバランサー経由で変更することが可能となる。例えば、セッションやヘルスチェック、HTTPSなどの設定がそれに当たる。
実装
一つのEC2に複数のELB(仮想ロードバランサ―)を割り当てる。ELBのSSL Termination機能を用いれば、HTTPS(SSL)の処理を行うこともできる。
- ELBの配下にEC2をぶら下げる。
- セッションやヘルスチェック、HTTPSの設定などが異なるELBを用意し、同一のEC2がぶら下がるようにする。
構造
利点
- 同一のEC2で携帯サイトやPCサイトへの挙動(ロードバランサーレベル)を変更できる。
- 同一のEC2で複数のSSL(HTTPS)を利用する場合も、SSL(HTTPS)ごとにELBを用意することで可能となる。
- 現在、一つのEC2に複数のネットワークインターフェース(ENI)、一つのENIに複数のIPアドレスを利用できるため、Multi Load Balancerパターン を利用しなくても同一のEC2で複数のSSL(HTTPS)を利用することは可能となっている。(Kraken SSLパターン)[関連ブログ 1]
- ワイルドカード証明書が利用できる場合はELBは一つにまとめることができる。場合によっては直下にHAProxyサーバなどを配置しL7での振り分けを行う。[関連ブログ 2]
注意点
- メンテナンスなどで手動でEC2をELBから切り離す場合は、すべてのELBから切り離す必要があるので注意が必要である。
- ELBのSSL Termination機能を用いるとEC2側はHTTPでリクエストを受けることになるのでアプリケーションでのHTTPS接続の判定が難しくなる。[関連ブログ 3]
その他
- Multi-Serverパターンを参照。
関連ブログ
- ↑ log4moto の「1つのインスタンスで240個のSSLサイトをホストしてみた」( http://d.hatena.ne.jp/j3tm0t0/20121204/1354621074 )
- ↑ suz-lab - blog の「(ELBとからめて)Hostヘッダでの振り分けをHAProxyでやってみる」( http://blog.suz-lab.com/2012/12/elbhosthaproxy.html )
- ↑ suz-lab - blog の「"SSL Termination"(ELB)でアプリ(EC2)がHTTPSのチェックを行えない場合」( http://blog.suz-lab.com/2012/09/ssl-terminationelbec2https_17.html )