「AWSのELBについて概要が知りたい。ELBとは?概要、ELBのセッティング方法について知りたい」
このような疑問に対して、筆者が業務で使用するためにELBについて調べた内容メモをご紹介いたします。
この記事で分かること
- Elastic Load Balancing とは
- ELBのセッティング方法
- ユースケース
それでは詳しく見ていきましょう
【参考】
>> 【公式】AWS ドキュメント ELB
>> 【公式】AWS ドキュメント Auto Scaling
>> 【公式】AWS ドキュメント RDS
>> 【公式】AWS ドキュメント Dynamo DB
Elastic Load Balancingとは
Elastic Load Balancing とは
- ロードバランサにはDNS名のアクセスポイントが付与されることにより、ユーザーからみてアクセスポイントを一つにすることで、負荷分散させることができる。
- ヘルスチェック機能があることにより、異常なインスタンス(EC2のシャットダウンなど)を認識し、通信を遮断することができる。
- ELBに証明書をふよすることで、SSL通信の終端となる。これにより、HTTPSを復号する処理をロードバランサーが担うことができる。
ELBの主な機能
ヘルスチェック | ・EC2インスタンスの状態を確認して利用するEC2の振り分けを行う 【例】複数のアベイラビリティゾーンにあるEC2インスタンスのヘルスチェックを行い、 1つが止まった場合、別のインスタンスに振り分ける |
負荷分散 | ・配下のEC2の負荷に応じて、複数のAZに跨るEC2インスタンスの 負荷分散を行う。 【例】2台のEC2インスタンストラフィック量を 3:7といったように分散させることが可能 |
SSLサポート | ・ELBではSSL Terminationすることが可能 |
スティッキーセッション | ・セッション中に、同じユーザから来たリクエストを 全て、同じEC2インスタンスに送信する機能 |
Connection Draining | ・インスタンスが登録解除されるなどの異常が発生した場合に、 切り離しを実施し処理中のリクエストは処理を続け、 新規リクエスト送信を中止する |
S3へのログ保管 | ・ELBのアクセスログを指定したS3に自動保管することが可能 |
3つのELBタイプ(簡易版)
- ALB 通常のWEBアプリケーション向けにALBを利用する
- CLB CLBはクラシックタイプのELBで現在は使用することは稀
- NLB NLBは高性能なネットワークが必要であり、非常に高いネットワーク性能が必要で、かつ複雑な設定をする際に利用
3つのELBタイプ(詳細版)
CLB (Classic Load Balancer) | ・初期に提供されたELBであり、標準的なL4/L7における ロードバランシングが可能だったが、 複雑な設定はできない弱点がある ・HTTP/HTTPSとTCP/SSLプロトコルのL4とL7に対応 ・Proxyプロトコルによる発信元IPアドレス識別 ・ELBとバックエンドのEC2インスタンス間で HTTPS/SSL使用時にサーバ証明書認証を実施 ・CLB配下のインスタンスは、 全て同一の機能を持ったインスタンスが必要 ・異なる機能に対してコンテントベースルーティングは出来ない |
ALB(Application Load Balancer) | ・レイヤー7の対応が強化された単一ロードバランサーで、 異なるアプリケーションへリクエストをパスルーティングが可能 ・URLのパスに基いてルーティングが可能な パスベースルーティングが可能 ・WebSocketとHTTP/2のリクエストを受付可能 ・1インスタンスに複数ポートを登録可能 ・EC2インスタンスをターゲットグループに割り当てる際、 複数ポートを個別のターゲットとして登録することが可能なため、 ポートを利用するコンテナをロードバランシング可能 ・ターゲットグループでのヘルスチェックが可能 ・アクセスログの情報追加 ・EC2と同様に削除保護が可能 ・ALB自体が自動的にキャパシティを増減可能 |
NLB(Network Load Balancer) | ・NLBは超低遅延で高スループットを維持しながら 秒間何百万リクエストを捌く様に設計された 最新のロードバランサーです。 高負荷予定されているケースに使用 ・開放型システム間相互接続 (OSI) モデルの 固定IPアドレスを持つL4ロードバランサ ・揮発性ワークロードを処理し、 毎秒数百万のリクエストに対応できる能力 ・VPC外のターゲットを含めたIPアドレスや 静的IPアドレスでの登録可能 ・複数のポートで各インスタンスまたは IPアドレスを同ターゲットグループに登録可能 ・大規模アクセスが予測される際に CLBやALBで必要だったPre-warming申請が不要 ・ALBやCLBはX-Forwarded-Forで アクセス元IPアドレスを判断していたが、 NLBは送信元IPアドレスと送信元ポートの 書き換えを行わないため、 パケットからアクセス元が判断可能 ・NLBはフォルトトレランス機能を内蔵した コネクション処理を持ち、 数カ月から数年のオープンなコネクションを処理できる ・コンテナ化されたアプリケーションのサポート ・各サービスの個別のヘルスステータスのモニタリングのサポート |
様々なユースケース
ユースケース
複数のEC2で構成され、フロントにELBが配置されたWebアプリケーションがある。EC2のヘルスチェックを行うように、ELBの設定を変更した。ヘルスチェックが失敗した場合の挙動は?
ELBはヘルスチェックが失敗したEC2へのトラフィックを停止する
※ヘルスチェックの方法:HTTPのヘルスチェック/HTTP200/EC2がELBのリクエストに応答できない場合、トラフィックは停止される
ユースケース
EC2がデフォルトで終了(terminate)した場合の挙動
EBSボリュームのAMIを使用している場合、OSが入ったもの以外のボリュームは保存される
EBSボリュームのスナップショットはすべて保存される
S3保存タイプのAMIを使用している場合、ローカルの一時データ(ephemeral)は削除される
ユースケース
EC2インスタンスがterminateされた場合の原因追及コマンド
“aws ec2 describe-instance”
ELBのセッティング方法
セッティング方法については、別途記載いたします。
以上となります。
本記事がお役に立てば幸いです。
【関連記事】
>> AWSに関する記事一覧