【AWS】ELBまとめ/ELBとは?概要、ELBのセッティング方法についてのまとめ

【AWS】ELBまとめ/ELBとは?概要、ELBのセッティング方法についてのまとめ

「AWSのELBについて概要が知りたい。ELBとは?概要、ELBのセッティング方法について知りたい」

このような疑問に対して、筆者が業務で使用するためにELBについて調べた内容メモをご紹介いたします。

この記事で分かること

  • Elastic Load Balancing とは
  • ELBのセッティング方法
  • ユースケース

それでは詳しく見ていきましょう

【参考】
>> 【公式】AWS ドキュメント ELB
>> 【公式】AWS ドキュメント Auto Scaling
>> 【公式】AWS ドキュメント RDS
>> 【公式】AWS ドキュメント Dynamo DB

Elastic Load Balancingとは

【参考】
>> 【公式】AWS ドキュメント ELB

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に関する記事一覧