DEV Community

kaede
kaede

Posted on

AWS 基礎 Part 9 -- ALB で EC2 サーバーたちをロードバランスする

ALB (App Load Blancer) と他の ELB との違い


ELB とは

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/introduction.html

ELB とは、アクセスを各サーバーに分散して転送するもの。

  • 転送先のサーバーが一つダウンしたら転送をやめる
  • 内部(サブネット?転送先?)の CPU の状態をモニターする

他にもこれらの機能がある。

また、ELB は ALB を含む大きな括りであり。ALB 以外もある。
ELB には ALB の他に

  • Network Load Balancer
  • Gateway Load Balancer
  • Classic Load Balancer

これら 3 つがある。


NLB, ALB, CLB の違い

https://qiita.com/suzuki-navi/items/a8f4e21d75e685df51e9

違いとしては

  • NLB: IP 固定と急激な負荷への対応
  • ALB: リクエスト元によって向き先を変える、ログを取る
  • CLB: キャッシュを受け取る、カスタムセキュリティポリシーの作成

これらの特徴があるようだ。

Gateway Load Blancer は情報が少ないので、主流ではないと予想して調べなかった。


ALB の詳しい機能

https://qiita.com/suzuki-navi/items/a8f4e21d75e685df51e9#alb

同じく suzuki-nabi さんの記事を参考にして

ターゲットは

  • Lambda 関数
  • EC2 インスタンス ID
  • IP アドレス

この 3 つで指定できるようだ。

ECS コンテナに繋げたい時は、ECS で private IP を出して、そこに IP アドレス指定するようだ。

  • ターゲットからのリクエストは転送される
  • クライアントからは直接ターゲットを向いているように見える

このように書いてあったので、リクエストのクエリやペイロードなどを改めて渡し直す処理は書かなくてもできると解釈した



ALB の構築


前提条件

https://dev.to/kaede_io/aws-ji-chu-part-5-ta-mitai-toben-fan-yong-no-ec2-insutansuwozuo-cheng-suru-e53

この記事で作った VPC サブネットに構築する。

https://youtu.be/Y-Mc2OenReA?t=2556

クラインさんの動画を参考にする。

  • 基本情報
  • 領域(AZ)
  • セキュリティグループ
  • ターゲットグループ
  • ターゲット

これらを設定して作成することができる。


基本情報

  • 名前: klein-alb
  • スキーマ: インターネット直面
  • IP タイプ: ipv4
  • リスナー: HTTP 80

領域(AZ)

  • VPC: vpc-elb-ec2
  • サブネット: klein-public-1a
  • サブネット: klein-public-1c

VPC とサブネットは接続先の EC2 が入っているものである必要があると考える。


セキュリティグループ

ALB がどこからアクセスできるかの設定。

  • 名前: klein-alb-sg
  • カスタムTCP 80
  • ソース 0.0.0.0

ルーティングのターゲットグループ

ALB がどうやってアクセスするかの設定

  • 名前: klein-alb-sg
  • ターゲットの種類: インスタンス
  • プロトコル: HTTP
  • ポート: 80
  • ソース 0.0.0.0

ターゲットの登録

ALB がどこにアクセスするかの設定。

インスタンスにこれらを指定。

  • elb-ec2-test-A
  • elb-ec2-test-B

ロードバランサーの完成

上記を全てを設定すると、ロードバランサーが作成できる。

アクセスする

ロードバランサーの詳細ページから Public IP を確認してアクセスする。

Image description

これで、アクセスするたびに
private サーバーA
private サーバーB

これらを均等に割り振ってくれるようになった。

Top comments (0)