AWS ALB(Application Load Balancer)を使って、複数のEC2インスタンスにトラフィックを振り分ける構成を作りました。今回は学習目的でEC2を2台用意してALBの基本的な動作を確認するまでの手順をまとめます。
ALB(Application Load Balancer)とは
ALBは複数のEC2インスタンスにトラフィックを振り分ける仕組みです。1台が落ちても別の1台が応答するため、サイトが止まりにくくなります。
ユーザー
↓
ALB(ロードバランサー)
↓ ↓
EC2-1 EC2-2
ELBの種類
| 種類 | 用途 |
|---|---|
| ALB(Application Load Balancer) | HTTP/HTTPS・Webアプリ向け(一般的なWebサイトはこれ) |
| NLB(Network Load Balancer) | TCP・超高速通信向け |
| GLB(Gateway Load Balancer) | セキュリティアプライアンス向け |
作業の流れ
- EC2インスタンスを2台用意する
- ターゲットグループを作成してEC2を登録する
- ALBを作成してターゲットグループに紐付ける
- ALB用セキュリティグループを設定する
- 動作確認
ターゲットグループの作成
ALBを作る前に、トラフィックを受け取るEC2インスタンスをまとめた「ターゲットグループ」を先に作成します。
- EC2コンソール → 左メニュー「ターゲットグループ」
- 「ターゲットグループの作成」をクリック
- 以下の通りに設定する
| 項目 | 設定値 |
|---|---|
| ターゲットタイプ | インスタンス |
| ターゲットグループ名 | charakatsu-tg |
| プロトコル | HTTP |
| ポート | 80 |
| VPC | デフォルト |
「次へ」でターゲットの登録画面に進み、2台のEC2インスタンスにチェックを入れて「保留中として以下を含める」→「ターゲットグループの作成」をクリックします。
ALBの作成
- EC2コンソール → 左メニュー「ロードバランサー」
- 「ロードバランサーの作成」→「Application Load Balancer」の「作成」
- 以下の通りに設定する
| 項目 | 設定値 |
|---|---|
| 名前 | charakatsu-alb |
| スキーム | インターネット向け |
| IPアドレスタイプ | IPv4 |
| アベイラビリティーゾーン | ap-northeast-1a・ap-northeast-1c(2つ選択必須) |
| リスナー | HTTP:80 → charakatsu-tg |
ALBは最低2つのアベイラビリティーゾーンを選択する必要があります。1つだけだとエラーになるので注意してください。
ALB用セキュリティグループの作成
デフォルトのセキュリティグループはHTTP/HTTPSのインバウンドルールがないため、ALB専用のセキュリティグループを作成します。
- EC2コンソール → セキュリティグループ → 「セキュリティグループを作成」
- 名前:charakatsu-alb-sg
- インバウンドルールを追加:
| タイプ | プロトコル | ポート | ソース |
|---|---|---|---|
| HTTP | TCP | 80 | 0.0.0.0/0 |
| HTTPS | TCP | 443 | 0.0.0.0/0 |
作成後、ALBのセキュリティタブから「編集」→ defaultを削除してcharakatsu-alb-sgに変更します。
動作確認
ALBのDNS名にブラウザでアクセスして確認します。DNS名はALBの詳細画面に表示されています。
http://[ALBのDNS名].ap-northeast-1.elb.amazonaws.com
サイトが表示されればALBが正常にトラフィックをEC2に振り分けられています。
学習後のインスタンス停止
学習目的で作成したEC2インスタンスは、起動したままにしておくと料金がかかります。使わないインスタンスは停止しておきましょう。
- EC2コンソール → インスタンス一覧
- 停止したいインスタンスにチェック
- 「インスタンスの状態」→「インスタンスを停止」
停止したインスタンスはターゲットグループ上で自動的に「unused」になります。特別な操作は不要です。
実際の運用パターン
ALBを使った実際の運用には主に2つのパターンがあります。
パターンA:常時2台起動(固定冗長化)
2台のEC2を常に起動した状態でALBに登録しておきます。1台が落ちても即座にもう1台が対応するため、ダウンタイムをほぼゼロにできます。コストは2倍かかりますが、本番サイトでよく使われる構成です。
ユーザー
↓
ALB
↓ ↓
EC2-1 EC2-2
(常時起動)(常時起動)
パターンB:Auto Scalingと組み合わせる(推奨)
普段は1台で運用し、アクセスが増えたら自動でEC2を増やし、減ったら自動で戻す仕組みです。コスト効率が良く、実務では最もよく使われる構成です。次のステップで学ぶAuto Scalingを組み合わせることで実現できます。
通常時:
ユーザー → ALB → EC2-1(1台)
アクセス増加時:
ユーザー → ALB → EC2-1
→ EC2-2(自動追加)
→ EC2-3(自動追加)
| パターンA(固定冗長化) | パターンB(Auto Scaling) | |
|---|---|---|
| コスト | 常時2台分かかる | 必要な時だけ増える |
| 対応速度 | 即座に切り替わる | 起動に数分かかる |
| 管理のしやすさ | シンプル | 設定が必要 |
| 向いているケース | 常に高可用性が必要な本番環境 | アクセスの波がある一般的なWebサイト |
まとめ
| 作成したリソース | 役割 |
|---|---|
| charakatsu-alb | ALB本体。トラフィックを受け取って振り分ける |
| charakatsu-tg | ターゲットグループ。振り分け先のEC2をまとめる |
| charakatsu-alb-sg | ALB用セキュリティグループ。HTTP/HTTPSを許可 |
次のステップとしてAuto Scalingを組み合わせることで、アクセス増加時にEC2を自動で増やす「高可用性構成」を構築できます。

