■ はじめに
* AWSのロードバランササービスである ELB (Elastic Load Balancing) を扱う
目次
【1】ELB (Elastic Load Balancing) 【2】ELBの種類
【1】ELB (Elastic Load Balancing)
* Elastic : しなやかな、融通性のある * ロードバランサ => 複数の EC2 インスタンスを、自動的に負荷分散してくれる
【2】ELBの種類
1)ALB (Application Load Balancer) 2)CLB (Classic Load Balancer)
ALB / CLB との比較
機能
http://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/userguide/what-is-load-balancing.html
* ALB の方が豊富
例
* パスベースのルーティング
料金
https://aws.amazon.com/jp/elasticloadbalancing/classicloadbalancer/pricing/
https://aws.amazon.com/jp/elasticloadbalancing/applicationloadbalancer/pricing/
* ALB の方が若干安い
補足
* じゃー、ALBでいいじゃんってなるが、 スティッキーセッション の場合、 「アプリケーションによって生成された Cookie の維持を有効化」がなくなっている => 個人的には困る。 * まずは、「ALB」を使ってみて、様子を見るって感じでいいのかと
1)ALB (Application Load Balancer)
* 詳細は以下の公式ページを参照。
https://aws.amazon.com/jp/elasticloadbalancing/applicationloadbalancer/
動画
* 古いけど、大体の流れが把握できる
http://dotinstall.com/lessons/basic_aws/9514
ターゲットグループの作成
http://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/create-target-group.html
ターゲットグループの設定(EC2をロードバランサに紐付ける)
http://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/target-group-register-targets.html
[1] AWSログイン後に 「ロードバランシング」配下の[ターゲットグループ]を選択 [2] [ターゲット]-[編集]を選択 [3] 該当の対象EC2インスタンスをチェックを付け、「登録済みに追加」ボタン押下 [4] 「保存」ボタン押下
スティッキーセッション の設定
[1] AWSログイン後に [EC2]を選択 [2] [ロードバランサ]-[説明]-[属性の説明]を選択 [3] 「ロードバランサーによって生成されたCookieの維持を有効か」を選択し、「保存」 => 通信ログから、クッキー値「AWSLAB」が付加されることが確認できる
* デフォルトは無効(AWSマネジメントコンソールから簡単に有効化可能)
アクセスログに対する追加料金はありません。 Amazon S3 のストレージコストは発生しますが、Amazon S3 にログファイルを送信するために Elastic Load Balancing が使用する帯域については料金は発生しません。 ストレージコストの詳細については、Amazon S3 料金表を参照してください。
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/
使用上の注意
* ヘルスチェックについて * ロードバランサに紐付けた後に、ロードバランサは対象の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
エフェメラル ポートについて
https://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_ACLs.html#VPC_ACLs_Ephemeral_Ports
より抜粋 ~~~~~~~ Elastic Load Balancing が送信元のリクエストは、ポート 1024~65535 を使用します ~~~~~~~
その他のトラブルシューティング
* 以下の公式サイト参照
* 以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2018/01/13/212430
参考文献
http://qiita.com/papix/items/2b9949a61924c02628c9
関連記事
ELB ~ 基本編 / パスベースのルーティング ~
https://dk521123.hatenablog.com/entry/2017/02/27/234919
ELB ~ 基本編 / Auto Scaling ~
https://dk521123.hatenablog.com/entry/2019/10/19/212241
ELB に関するトラブル
https://dk521123.hatenablog.com/entry/2018/01/13/212430