はじめに
業務でAWSにてインフラ構築をした際、大まかに以下のフローでWebサーバーの負荷分散を実施しました。今回はその経験をもとに、簡単なサンプル構成を作成してみました。
Network Load Balancer (NLB) → Application Load Balancer (ALB) → EC2 (Apache)
【進む前に!】
AWS上で複数台のWebサーバーが構築されており(別々のサブネット上)、それぞれにHTTP
アクセスできる状態であることを前提に実施していきます。
【セキュリティグループの設定について】(2025/5/1追記)
本記事ではNLB, ALBのセキュリティグループに、VPCのデフォルトセキュリティグループを使用しています。混乱を招かないためにも、それぞれ別の新規セキュリティグループの使用をお勧めします。以下記事に詳細を記載しています。
おさらい
- ALB:レイヤー7 (アプリケーション層)で動作するロードバランサー
※主な用途:HTTP
/HTTPS
トラフィックの負荷分散 - NLB:レイヤー4 (トランスポート層)で動作するロードバランサー
※主な用途:TCP
/UDP
/TLS
トラフィックの負荷分散
実施内容
- ALB の作成
- NLB の作成
- 負荷分散試験
ロードバランサーの作成順序は、ALB → NLB としています。
※ALBからEC2へ正常にアクセスできるかを確認した後、NLBを作成します。
ALB作成
1. ターゲットグループの作成 (ALB用)
以下を設定し、ターゲットグループ(以下、ALB用ターゲットグループ)を作成します。
・ステップ1:「グループの詳細の指定」
ステップ1では中項目として「基本的な設定」、「ヘルスチェック」があります。
設定項目 | 設定値 |
---|---|
ターゲットタイプの選択 | インスタンス |
ターゲットグループ名 | ※任意のお名前 |
プロトコル/ ポート | HTTP/ 80 |
IPアドレスタイプ | IPv4 |
VPC | ※対象EC2が存在するVPCを選択 |
プロトコルバージョン | HTTP1 |
設定項目 | 設定値 |
---|---|
ヘルスチェックプロトコル | インスタンス |
ヘルスチェックパス | / |
・ステップ2:「ターゲットを登録」
対象のEC2を選択し、「保留中として以下を含める」を押下してターゲットに登録します。
※EC2が停止している場合は、"使用可能なインスタンス"として表示されません。
2. ALBの作成
以下を設定し、ALBを作成します。
設定する中項目は以下の4項目です。
設定項目 | 設定値 |
---|---|
ロードバランサ―名 | ※任意のお名前 |
スキーム | インターネット向け |
設定項目 | 設定値 |
---|---|
VPC | ※対象EC2が存在するVPCを選択 |
アベイラビリティーゾーンとサブネット | ※対象EC2が存在するサブネットを選択 |
設定項目 | 設定値 |
---|---|
セキュリティグループ | ※VPCのdefaultセキュリティグループ を選択 |
設定項目 | 設定値 |
---|---|
プロトコル/ ポート | HTTP/ 80 |
デフォルトアクション | ※ALB用ターゲットグループ を選択 |
defaultセキュリティグループへ、HTTP
アクセスを許可するインバウンドルールの追加を忘れずに!
・プロトコル:HTTP
・ソース:※接続元のグローバルipアドレス
3. 接続確認
ALBのDNS名でWebサーバーへアクセスできれば成功です。
ページを更新すると、アクセスが2号機へ振られていることも確認できました。
NLB作成
1. ターゲットグループの作成 (NLB用)
以下を設定し、ターゲットグループ(以下、NLB用ターゲットグループ)を作成します。
・ステップ1「グループの詳細の指定」
設定項目 | 設定値 |
---|---|
ターゲットタイプの選択 | ALB |
ターゲットグループ名 | ※任意のお名前 |
プロトコル/ ポート | TCP/ 80 |
VPC | ※対象EC2が存在するVPCを選択 |
設定項目 | 設定値 |
---|---|
ヘルスチェックプロトコル | HTTP |
ヘルスチェックパス | / |
・ステップ2「ターゲットを登録」
ALBの登録で、先ほど作成したALBを選択します。
2. NLBの作成
以下を設定し、NLBを作成します。
※ターゲットグループの選択以外は、基本的に同じです。
※NLBに割り振られるパブリックIPを、「自動割り振りのもの」 or 「固定IP」から選択する必要があります。(2025/4/28追記)
設定項目 | 設定値 |
---|---|
ロードバランサ―名 | ※任意のお名前 |
スキーム | インターネット向け |
ロードバランサーのIPアドレスタイプ | IPv4 |
設定項目 | 設定値 |
---|---|
VPC | ※対象EC2が存在するVPCを選択インスタンス |
アベイラビリティーゾーンとサブネット | ※対象EC2が存在するサブネットを選択 |
設定項目 | 設定値 |
---|---|
セキュリティグループ | ※VPCのdefaultセキュリティグループ を選択 |
設定項目 | 設定値 |
---|---|
プロトコル/ ポート | HTTP/ 80 |
デフォルトアクション | ※NLB用ターゲットグループ を選択 |
NLB作成後、ALBへのTCP: 80転送が設定されていることが確認できます。
負荷分散試験
【進む前に!】
NLB、ALBのリソースマップで異常なターゲットマップが無いかを確認します。
※異常がある場合は、ターゲットの登録漏れや Webサーバーの状態を要確認!
お疲れ様でした。