ELB
EC2はマネージド型の負荷分散サービスで、受信したトラフィックをELB配下に配置された複数のEC2インスタンスに分散します。
ELBには次のような機能があります。
ELBの機能
-
複数のAZにまたがる負荷分散
ELBでは受信したトラフィックを複数のAZにまたがって負荷分散することができます。
これにより複数のAZにEC2インスタンスを冗長てきに配置し、可用性の高いシステムを構築することができます。 -
EC2インスタンスのヘルスチェック
ELBは配下に配置されているEC2インスタンスのヘルスチェックを定期的に実行しています。
異常を検知するとそのインスタンスに対してはトラフィックの分散をやめ、残りの正常なインスタンスにのみトラフィックを分散します。 -
ELB自体の自動スケーリング
ELBは受信するトラフィックの流量に合わせて、自動的にその実体を増減させます。
ELBを作成するとDNS名が作られ、ELBの実体がもつIPアドレスと名前解決されます。
トラフィックの流量に合わせELBの実体が増減した際は新たなIPアドレスとの名前解決や関連付け削除が実施されます。
そのため、ELBを利用したシステムではELBの実体のIPアドレスが分かったとしてもIPアドレスは使わずにDNS名を使用します。
※ELBの実体に割り当てられるIPアドレスはVPCのサブネット内のIPアドレスとなる -
SSLのオフロード
クライアントとAWS上のシステムの間でSSL通信したい場合、SSL証明書は各EC2インスタンスに配置するのではなく、ELBに配置して一元管理することができます。 -
Connection Draining
ELB配下のEC2インスタンスの登録解除をするときに、新規のリクエストについてはそのインスタンスへのトラフィックの送信を停止し、
登録解除前にそのインスタンスで処理中だったリクエストについては完了まで待つようにする機能です。
Connection Drainingを有効にしておけば、EC2インスタンスをメンテナンスのためにELBの配下から登録解除する際にクライアントのリクエスト処理が中断されてしまうことがなくなります。 -
アクセスログ記録
ELBにはアクセスログ収集機能があり、ELBに送信されたアクセスログをS3に保存することでアクセスログを一元管理することができます。 -
スティッキーセッション
システムにアクセスしているクライアントを特定のEC2インスタンスに紐付けできる機能です。
ELB配下に複数のインスタンスが紐づけられている場合に、一つのインスタンスでは認証が済んでいるのに、
次のリクエストではまだ認証が済んでいないインスタンスにリクエストが送信され再度認証を要求されることを防ぐことができます。
先に認証が済んでいるインスタンスとクライアントとを紐付け、以降のリクエストもそのインスタンスに送信されます。
※新たなインスタンスが追加されても、各クライアントが特定のインスタンスと紐付いており、適切に負荷分散が行われないため注意が必要