LoginSignup
2
0

More than 1 year has passed since last update.

【AWS】ALBに同じAZから複数のサブネットをアタッチできないのか?

Posted at

結論

「アタッチ」はできないが、「ルーティング先に指定」はできる。

背景

以下の構成でWebアプリケーションを運用していた。
image.png

サービスが軌道に乗り、アクセス数も増えてきたため、EC2をスケールアウトすることにした。

しばらくすると、サブネットに配置できるEC2が限界を迎えてしまったため、
サブネットを追加することにした。1
image.png

サブネットを追加する

ymlテンプレートを更新し、CloudFormationにアップロードすると…

A load balancer cannot be attached to multiple subnets in the same Availability Zone: 'ap-northeast-1a' (Service: AmazonElasticLoadBalancing; Status Code: 400; Error Code: InvalidConfigurationRequest; Request ID: 7fbf2ff1-dbf4-4e8c-8403-0a9f2021426d; Proxy: null)

ALBに同じAZから複数のサブネットをアタッチできないとエラーが出て失敗する。

ブラウザから操作を試みても同様である。
image.png

アベイラビリティーゾーンごとに 1 つだけサブネットを指定できます。

新しいサブネットはALB側ではなくオートスケーリンググループ側の設定で追加する

ALB側のサブネット設定画面ではなく
image.png

オートスケーリンググループ側のサブネット設定画面で、同じAZから複数のサブネットを追加できる。
image.png

ELBのロードバランス先を決めているのはターゲットグループ

仕組みを述べると以下のような整理となる。

  • オートスケーリングによって作成されたEC2は、オートスケーリンググループ側に設定されたいずれかのサブネットに配置される(ここは、同じAZから複数のサブネットを設定できる)。
  • オートスケーリングによって作成されたEC2は、オートスケーリンググループ側に設定されたターゲットグループに所属させられる。
  • ALBとターゲットグループは、リスナーによって対応付けが定義される。
  • ALBへのリクエストは、対応付けられたターゲットグループに所属するいずれかのEC2に負荷分散される。

ALBの負荷分散先はターゲットグループに所属するEC2であり、ロードバランス先のサブネットを追加したいのであれば、ターゲットグループに、追加したいサブネットに所属するEC2を追加してやれば良い。

なお、ターゲットグループ側にサブネットを設定する箇所は無く、任意のサブネットのEC2を追加できる。サブネットを特定したい場合は、オートスケーリング側に設定する。オートスケーリングを利用しない場合は、ターゲットグループに直接、追加したいサブネットに配置している個々のEC2を追加してやれば良い。

なお、VPCはターゲットグループ側にも設定するため、VPC外のEC2をターゲットグループに追加することはできない。

それではALBに設定するサブネットとは何か?

「ALBに設定するサブネット」と「ターゲットグループ内のインスタンスが所属するサブネット」が別概念であるということが分かった。前者は1つのAZから1つのサブネットしかアタッチできない。

前者については、ALBの実体というか、エンドポイントのようなもの(ENIか?)を各AZにつき1つずつ設定しなければならないと理解している。

こちらのサイトの図がイメージしやすいと思う。

まとめ

  • ALB側に設定する「サブネット」は1AZにつき1つしか設定できないが、ALB側に設定していないサブネットにもリクエストを分散させることは可能である。
  • リクエストを分散させたいEC2はターゲットグループに設定する。オートスケーリングを使用しているのであれば、オートスケーリンググループに複数のサブネットを設定し、ターゲットグループに紐づける。
  1. サブネットを増やすのではなく、既存のサブネットのIPアドレスのセグメントを拡張するほうが望ましいが、すでに他のサブシステム等が利用しているサブネットでIPアドレスを確保しているなどの制約があり採用できなかった。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0