・ヘルスチェック
ターゲットグループ内の各ターゲットが正常に動作しているかを定期的に確認。ターゲットから正常に応答が返ってくればELBからターゲットへの転送を行い、異常があればターゲットへの転送を停止する。ただし、ELBのヘルスチェックにはターゲットの復旧機能はないので、AWS Auto Scalingにて自動的に復旧させる設計が必要。
ヘルスチェックの主な設定機能
1、正常な閾値ー「非正常」の状態のリソースを「正常」と判断するまでのヘルスチェック連続「成功」回数
2、非正常な閾値ー「正常」の状態のリソースを「非正常」と判断するまでのヘルスチェック連続「失敗」回数
3、タイムアウトーヘルスチェックを失敗とみなす応答がない時間
4、間隔ーヘルスチェックの間隔
・アクセスログ
ELBに送信されるリクエストを記録しログをAmazon S3に保存。記録されたログはトラフィックの分析やコンプライアンスの監査に利用。アクセスログには、クライアントのアクセス日時、接続元IPアドレス、ポート番号、ステータスコードなどクライアントの接続情報が記録。
・ELB自身のスケーリング
ELBにはリクエスト数の増減に応じてELB自身が自動的にスケーリングする機能がある。リクエスト数が増加したらELB自身を自動的にスケールアウト(追加)し、リクエスト数が減少したらスケールイン(削除)して元の状態に戻る。
【ELB経由の暗号化通信】
ELB経由でクライアントとターゲット間の通信を暗号化させるには、暗号化する通信の範囲とサーバー証明書の配置によって3つの方法がある。
1、クライアントとELB間の通信を暗号化する
○ELBにサーバー証明書を導入する
クライアントとELB間で通信を暗号化し、ELBとターゲット間は平文の通信(暗号化されていない通信)を行う方法。クライアントとELB間での通信の暗号化・復号をELBが行うため、ターゲットに暗号化・復号による負荷が発生しません。すべてのELBが対応。
2、クライアントとターゲット間の通信を暗号化する
○ELBとターゲットにサーバー証明書を導入する
クライアントとELB間、ELBとターゲット間で別の暗号化通信を行う方法。暗号化接続はELBが終端となり、ELBから別の暗号化接続を確立して通信。ELB、ターゲットに暗号化・復号による負荷がかかりますが、クライアントからターゲットまでの通信すべてを暗号化できます。ALB、CLBが対応。
3、ターゲットにサーバー証明書を導入
ELBでは暗号化・復号せず、直接クライアントとターゲット間で暗号化通信を行う方法です。ターゲットに暗号化・復号による負荷が発生しますが、ELBによる暗号化・復号の遅延を発生させずに通信全てを暗号できます。NLB、CLBが対応。
SNIを利用したELB経由の暗号化通信
通常のサーバー証明書は、一つのパブリックIPアドレスを持つサーバーに対して一つのドメイン名が紐づく。
例えば「example.com」と「example.co.jp」の2つのドメイン名を持つWebサーバーの場合、ドメイン名ごとに異なるパブリックIPアドレスを取得してサーバー証明書を導入する必要があります。しかしELBからドメイン名を複数持つWebサーバーへ通信を転送しようとすると、クライアントから見たWebサーバーのパブリックIPアドレスは窓口であるELBのパブリックIPアドレスしかないため、通常のサーバー証明書では対応できません。
SNI(Server Name Indication)は、暗号化通信で使用するサーバー証明書をパブリックIPアドレスではなくドメイン名によって判断する技術。SNIに対応したELBに複数のサーバー証明書を導入すると、ELBが宛先ドメイン名から適切なサーバー証明書を判断してサーバーへ通信を転送します。SNIはALBとNLBが対応。