ELBにおけるマルチAZ構成について

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、 「どうやって直すのか?」 という具体的な修復手順(コンソール、AWS CLI、Terraformなど)まで、分かりやすく解説します。

この記事では、Elastic Load Balancer(ELB)がマルチアベイラビリティーゾーン構成となっていない場合のリスクと、高可用性を実現するための対策を解説します。

問題の概要

Elastic Load Balancer(ELB)が複数のアベイラビリティーゾーン(AZ)にまたがって構成されていない場合、単一のAZ障害によってサービス全体が停止する重大なリスクがあります。AWSのWell-Architected Frameworkの信頼性の柱では、高可用性のベストプラクティスとして、ELBを複数のAZにまたがって配置することを強く推奨しています。

ALB(Application Load Balancer)およびNLB(Network Load Balancer)では、作成時に最低2つのAZへの配置が必須要件となっており、これを満たさない場合はロードバランサー自体が作成できません。一方、CLB(Classic Load Balancer)は単一AZでも作成可能ですが、これは推奨されない構成です。

修復方法

コンソールでの修復手順(ALB/NLBの場合)

  1. AWSマネジメントコンソールにログインし、EC2サービスに移動します
  2. 左側のナビゲーションペインから「Load Balancers」を選択します
  3. 対象のELBを選択し、詳細画面を開きます
  4. 「Description」タブで現在の「Availability Zones」設定を確認します
  5. 「Network mapping」セクションで「Edit subnets」をクリックします
  6. ダイアログボックスで以下を設定:
    • 最低2つ以上のAZを選択(推奨は3つ以上)
    • 各AZで適切なサブネットを選択(パブリック/プライベートを正しく選択)
    • IPv6のサポートが必要な場合は、IPv6 CIDRブロックを持つサブネットを選択
    • 各サブネットに十分な空きIPアドレスがあることを確認
  7. 「Save changes」をクリックして設定を適用します
  8. ステータスが「Active」になるまで待機します(通常1-2分)

Terraformでの修復手順

ALBのマルチAZ構成(推奨)

# ALBをマルチAZ構成で作成
resource "aws_lb" "application" {
  >>> Skip
  # リスト形式で全てのサブネットを指定する
  subnets            = aws_subnet.public[*].id  

  # 削除保護を有効化(本番環境推奨)
  enable_deletion_protection = var.enable_deletion_protection

  # クロスゾーン負荷分散を有効化
  enable_cross_zone_load_balancing = true

  # HTTP/2を有効化(パフォーマンス向上)
  enable_http2 = true

  # drop_invalid_header_fieldsを有効化(セキュリティ向上)
  drop_invalid_header_fields = true

  # アイドルタイムアウト設定
  idle_timeout = 60

  # アクセスログの設定(コンプライアンス要件)
  access_logs {
    bucket  = aws_s3_bucket.alb_logs.bucket
    prefix  = "alb-logs"
    enabled = true
  }

  tags = {
    Name        = "${var.environment}-alb"
    Environment = var.environment
    ManagedBy   = "Terraform"
    MultiAZ     = "true"
  }

  # 依存関係の明示
  depends_on = [aws_internet_gateway.main]
}


 

最後に

この記事では、Elastic Load Balancerがマルチアベイラビリティーゾーン構成となっていない場合のリスクと、各ELBタイプに応じた修復方法を詳しく解説しました。マルチAZ構成は、AWSの高可用性アーキテクチャの基本であり、ビジネスクリティカルなアプリケーションには必須の要件です。

特に重要なポイント:

  • ALB/NLBでは最低2つのAZ配置が必須(推奨は3つ以上)
  • CLBは早期にALB/NLBへの移行を検討すべき
  • クロスゾーン負荷分散の設定はトラフィックパターンに応じて最適化
  • 定期的なAZ障害テストによる可用性の検証が重要

この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理することが可能です。 自動的な設定チェックと継続的なコンプライアンス監視により、運用負荷を大幅に削減できます。 ぜひ興味がある方はお問い合わせをお待ちしております。

最後までお読みいただきありがとうございました。この記事が皆さんの高可用性システム構築の一助となれば幸いです。

参考情報

AWS公式ドキュメント

この記事をシェアする

クラウドセキュリティ対策実践集一覧へ戻る

貴社の利用状況に合わせた見積もりを作成します。

料金プランを詳しく見る