【AWS】ELB / ALB ~ 入門編 ~

 ■ はじめに

 * AWSのロードバランササービスである
 ELB (Elastic Load Balancing) のALB (Application Load Balancer)を扱う

目次

【1】ELB (Elastic Load Balancing)
【2】ELBの種類
 1)ALB / CLB との比較
【3】ALB (Application Load Balancer)
 1)ターゲットグループの作成
 2)ターゲットグループの設定
 3)スティッキーセッション の設定
 4)アクセスログ
 5)料金
 6)Cloud Watchでの確認/監視

 【1】ELB (Elastic Load Balancing)

* Elastic : しなやかな、融通性のある 
* ロードバランサ
 => 複数の EC2 インスタンスを、自動的に負荷分散してくれる

 【2】ELBの種類

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/userguide/what-is-load-balancing.html#elb-features

略語 正式名 Memo
ALB Application Load Balancer 今回のテーマ
NLB Network Load Balancer
GLB Gateway Load Balancer
CLB Classic Load Balancer すでにレガシーで非推奨

1)ALB / CLB との比較

* 以下の比較を見ると、ALBでいいじゃんってなるが、スティッキーセッション の場合、
 「アプリケーションによって生成された Cookie の維持を有効化」がなくなっている
 => 個人的には困る。
 
* まずは、「ALB」を使ってみて、様子を見るって感じでいいのかと
項目 結果 補足
機能面 ALB の方が豊富 パスベースのルーティング
料金 ALB の方が若干安い

機能面に関するドキュメント
http://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/userguide/what-is-load-balancing.html
料金に関するドキュメント
https://aws.amazon.com/jp/elasticloadbalancing/classicloadbalancer/pricing/
https://aws.amazon.com/jp/elasticloadbalancing/applicationloadbalancer/pricing/

【3】ALB (Application Load Balancer)

 * 詳細は以下の公式ページを参照。

https://aws.amazon.com/jp/elasticloadbalancing/applicationloadbalancer/
 動画

 * 古いけど、大体の流れが把握できる

http://dotinstall.com/lessons/basic_aws/9514

 1)ターゲットグループの作成

http://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/create-target-group.html

 2)ターゲットグループの設定

* EC2をロードバランサに紐付ける

http://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/target-group-register-targets.html

 [1] AWSログイン後に 「ロードバランシング」配下の[ターゲットグループ]を選択
 [2] [ターゲット]-[編集]を選択
 [3] 該当の対象EC2インスタンスをチェックを付け、「登録済みに追加」ボタン押下
 [4] 「保存」ボタン押下

 3)スティッキーセッション の設定

 [1] AWSログイン後に [EC2]を選択
 [2] [ロードバランサ]-[説明]-[属性の説明]を選択
 [3] 「ロードバランサーによって生成されたCookieの維持を有効か」を選択し、「保存」
  => 通信ログから、クッキー値「AWSLAB」が付加されることが確認できる

4)アクセスログ

 * デフォルトは無効(AWSマネジメントコンソールから簡単に有効化可能)

5)料金

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-access-logs.html

アクセスログに対する追加料金はありません。

Amazon S3 のストレージコストは発生しますが、
Amazon S3 にログファイルを送信するために
Elastic Load Balancing が使用する帯域については料金は発生しません。

ストレージコストの詳細については、Amazon S3 料金表を参照してください。

 6)Cloud Watchでの確認/監視

 * HealthyHostCount/UnHealthyHostCountなどで確認及び監視可能

https://qiita.com/mechamogera/items/7898331efafc973f9ed8
https://dev.classmethod.jp/cloud/aws/elb-and-cloudwatch-metrics-in-depth/
https://dev.classmethod.jp/cloud/aws/elb-using-cloudwatch-alarm/

 7)使用上の注意

[1] ヘルスチェックについて

* ロードバランサに紐付けた後に、ロードバランサは対象のEC2に対して、
 一定時間、リクエストを送り続け、EC2から コード 200 を返せば、正常と見なされる
=> ヘルスチェック通らないと、割り振られない(502 Bad Gatewayなど)

access.log より

... "-" "ELB-HealthChecker/2.0" "-"

解決策

トップページに index.html(空ファイルでもOK) など を作成しておく必要がある

http://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/target-group-health-checks.html

[2] エフェメラル ポートについて
https://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_ACLs.html#VPC_ACLs_Ephemeral_Ports

より抜粋
~~~~~~~
Elastic Load Balancing が送信元のリクエストは、ポート 1024~65535 を使用します
~~~~~~~

[3] その他のトラブルシューティング

* 以下の公式サイト参照

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html

* 以下の関連記事を参照のこと。

ELB に関するトラブル「HTTP 502: Bad Gateway」が表示
https://dk521123.hatenablog.com/entry/2018/01/13/212430

 参考文献

http://qiita.com/papix/items/2b9949a61924c02628c9

 関連記事

ELB / ALB ~ パスベースのルーティング ~
https://dk521123.hatenablog.com/entry/2017/02/27/234919
ELB / ALB ~ Auto Scaling ~
https://dk521123.hatenablog.com/entry/2019/10/19/212241
ELB / ALB に関するトラブル「HTTP 502: Bad Gateway」が表示
https://dk521123.hatenablog.com/entry/2018/01/13/212430