▪️目的
AWSでWebシステムを構築していると、
- 複数のサーバーへアクセスを分散したい
- 1台のサーバーに負荷が集中するのを防ぎたい
- サーバーに障害が発生したとき、正常なサーバーへ通信を送りたい
- Webシステムを高可用性にしたい
- HTTPS通信をAWS側で処理したい
といった場面があります。
このようなときに利用されるのが、**AWSのElastic Load Balancing(ELB)**です。
ELBは、クライアントから送られてきた通信を複数のサーバーなどへ振り分ける、AWSのロードバランサーサービスです。
この記事では、AWS初心者の方向けに、ELBの基本的な仕組みから、ALB・NLB・Target Group・Listener・ヘルスチェックまで分かりやすく解説します。
▪️ELBとは?
ELBとは、Elastic Load Balancingの略です。
簡単にいうと、
クライアントからの通信を複数のターゲットへ振り分けるAWSのロードバランシングサービス
です。
例えば、Webサーバーが1台だけの場合を考えてみます。
ユーザー
│
▼
EC2
アクセスが増えてくると、1台のEC2に負荷が集中する可能性があります。
そこで、EC2を複数台用意します。
┌─ EC2
ユーザー ─┤
└─ EC2
しかし、このままだとユーザーがどのEC2へアクセスするのかを管理する必要があります。
そこでELBを間に入れます。
┌─ EC2
ユーザー
│ ├─ EC2
▼ │
ELB ────────┤
└─ EC2
ELBがユーザーからの通信を受け取り、適切なターゲットへ振り分けます。
▪️ロードバランサーとは?
ロードバランサーとは、
複数のサーバーなどへ通信を分散する役割を持つ仕組み
です。
「Load」は負荷、
「Balancer」はバランスを取るもの、
という意味です。
つまり、
Load Balancer=負荷を分散するもの
と考えると分かりやすいでしょう。
例えば、
100件のアクセス
│
▼
ロードバランサー
│ │ │
▼ ▼ ▼
EC2 EC2 EC2
のように、複数のサーバーへ通信を分散できます。
▪️なぜロードバランサーが必要なの?
例えばEC2が1台だけの場合、
ユーザー
│
▼
EC2
このEC2に大量のアクセスが集中すると、CPUやメモリなどのリソースを大量に消費する可能性があります。
そこで、
ユーザー
│
▼
ELB
│ │ │
▼ ▼ ▼
EC2 EC2 EC2
とすることで、複数のEC2へ処理を分散できます。
これによって、1台のサーバーだけに負荷が集中することを防ぎやすくなります。
▪️ELBを利用するメリット
ELBには、主に以下のようなメリットがあります。
- 負荷分散
- 高可用性の向上
- 障害が発生したターゲットへの通信を避ける
- Auto Scalingとの連携
- HTTPS通信の終端
- ECSなどのコンテナサービスとの連携
特に重要なのが、
「複数のサーバーを利用して、システムを安定して稼働させる」
という考え方です。
▪️ELBには種類がある
AWSのElastic Load Balancingには、用途に応じて複数のロードバランサーがあります。
代表的なのが、
- Application Load Balancer(ALB)
- Network Load Balancer(NLB)
- Gateway Load Balancer(GWLB)
- Classic Load Balancer(CLB)
です。
現在、新しくシステムを構築する場合は、主にALBやNLBなどを利用します。
今回は特に重要なALBとNLBを中心に見ていきます。
▪️ALBとは?
ALBは、Application Load Balancerの略です。
ALBは、
HTTP/HTTPSなどのアプリケーションレイヤーの通信を扱うロードバランサー
です。
例えばWebサイトを、
https://example.com
で公開している場合、ALBを利用してWebサーバーへ通信を振り分けることができます。
ユーザー
│
│ HTTPS
▼
ALB
│
├─ EC2
├─ EC2
└─ EC2
▪️ALBの特徴
ALBでは、HTTPリクエストの内容を利用したルーティングができます。
例えば、
/api/*
へのアクセスはAPIサーバーへ、
/images/*
へのアクセスは別のターゲットへ、
というようなルーティングが可能です。
また、ホスト名を利用して、
api.example.com
と
www.example.com
で異なるターゲットへ振り分けることもできます。
このように、ALBはWebアプリケーションの通信を柔軟に振り分けることができるロードバランサーです。
▪️NLBとは?
NLBは、Network Load Balancerの略です。
NLBは、
TCP、TLS、UDPなどのネットワークレベルの通信を扱うロードバランサー
です。
ALBよりも低いレイヤーで通信を扱います。
例えば、
ユーザー
│
▼
NLB
│
├─ サーバー
├─ サーバー
└─ サーバー
という構成にできます。
▪️ALBとNLBの違い
ALBとNLBの違いを簡単に比較すると、
| 項目 | ALB | NLB |
|---|---|---|
| 名称 | Application Load Balancer | Network Load Balancer |
| 主なレイヤー | アプリケーション層 | トランスポート層など |
| 主な通信 | HTTP/HTTPS | TCP/TLS/UDP |
| URL・パスによるルーティング | 可能 | ALBのようなHTTPパスベースではない |
| 主な用途 | Webアプリケーション | TCP/UDPなどの高性能な通信 |
| 代表例 | Web/API | TCPサービスなど |
ざっくり覚えるなら、
ALB=Webアプリ向け
NLB=ネットワークレベルの通信向け
です。
▪️Listenerとは?
ELBを理解するうえで重要なのが、**Listener(リスナー)**です。
Listenerとは、
ロードバランサーがどのポート・プロトコルで通信を受け付けるのかを定義する仕組み
です。
例えば、
ALB
│
└─ Listener
└─ HTTPS : 443
という設定ができます。
つまり、
「ALBでHTTPSの443番ポートを待ち受ける」
という設定です。
▪️ListenerからTarget Groupへ
Listenerは、受け取った通信をどこへ転送するのかというルールを持ちます。
例えば、
ユーザー
│
│ HTTPS : 443
▼
ALB
│
│ Listener
▼
Target Group
│
├─ EC2
├─ EC2
└─ EC2
という流れです。
このように、
Listener → Target Group → ターゲット
という関係を理解すると、ELBの構成がかなり分かりやすくなります。
▪️Target Groupとは?
Target Groupとは、
ELBからの通信を転送するターゲットをまとめたグループ
です。
例えば、
Target Group
│
├─ EC2-A
├─ EC2-B
└─ EC2-C
というように、複数のターゲットを登録できます。
ELBは、このTarget Groupに登録されたターゲットへ通信を転送します。
ターゲットにはEC2だけではなく、構成に応じてIPアドレスやLambda、ECSタスクなどを利用できます。
▪️ヘルスチェックとは?
ELBには、ターゲットが正常に動作しているかを確認するヘルスチェックの仕組みがあります。
例えば、
Target Group
│
├─ EC2-A → 正常
├─ EC2-B → 正常
└─ EC2-C → 異常
という状態になった場合、ELBはヘルスチェックの結果をもとに、異常なターゲットへの通信を停止することができます。
これによって、
ユーザー
│
▼
ELB
│
├─ EC2-A ← 通信
├─ EC2-B ← 通信
└─ EC2-C ← 異常
のように、正常なターゲットへ通信を振り分けることができます。
▪️ELBを使ったWebシステム
ここまでの内容を使って、一般的なWebシステムを考えてみましょう。
Internet
│
▼
ALB
│
Target Group
┌──────┼──────┐
▼ ▼ ▼
EC2 EC2 EC2
│ │ │
└──────┼──────┘
▼
RDS
ユーザーからのリクエストはALBが受け取ります。
その後、Target Groupに登録されたEC2へ通信を転送します。
EC2からデータベースへアクセスする場合は、RDSなどを利用します。
このような構成は、AWSでWebシステムを構築するときの代表的なパターンの一つです。
▪️ALBとHTTPS
ALBはHTTPS通信にも対応できます。
例えば、
ユーザー
│
│ HTTPS : 443
▼
ALB
│
│ HTTP : 80
▼
EC2
のような構成です。
この場合、ユーザーとALBの間ではHTTPSを利用し、ALBからバックエンドへはHTTPを利用する構成もできます。
HTTPSをALBで終端することで、証明書管理などをALB側に集約しやすくなります。
AWSでは、**AWS Certificate Manager(ACM)**と組み合わせて証明書を管理する構成もよく利用されます。
▪️ELBとSecurity Group
ELBを利用するときには、Security Groupも重要になります。
例えば、
Internet
│
▼
ALB
│
▼
EC2
という構成の場合、
ALBのSecurity Group
↓
Internetから443を許可
そして、
EC2のSecurity Group
↓
ALBのSecurity Groupから80を許可
というように、通信元を制限する構成が考えられます。
つまり、
「誰からでもEC2へ直接アクセスできるようにする」のではなく、「ALBからの通信だけをEC2へ許可する」
という考え方です。
これはAWSのネットワークセキュリティを考えるうえで非常に重要です。
▪️ELBとAuto Scaling
ELBは、Auto Scalingとも組み合わせて利用できます。
例えばアクセスが増えて、
EC2 × 2
では足りなくなった場合、
EC2 × 4
へ増やすことがあります。
Auto ScalingによってEC2の台数が増えると、構成に応じて新しいインスタンスをTarget Groupへ登録して、ELBからの通信を受けられるようにできます。
イメージとしては、
ALB
│
Target Group
│ │ │ │
▼ ▼ ▼ ▼
EC2 EC2 EC2 EC2
という構成です。
このように、
ELB=通信を分散
Auto Scaling=必要に応じてサーバー台数を調整
という役割分担ができます。
▪️ELBとECS
ELBはEC2だけでなく、Amazon ECSとも組み合わせることができます。
例えばECS on Fargateでは、
Internet
│
▼
ALB
│
▼
ECS Service
│
├─ Fargate Task
├─ Fargate Task
└─ Fargate Task
という構成がよく利用されます。
ALBがユーザーからのHTTP/HTTPS通信を受け取り、ECSのタスクへ転送します。
これはコンテナ化されたWebアプリケーションをAWS上で公開するときの代表的な構成の一つです。
▪️ELBは何をしているのか?
ここまでの内容を、一度シンプルに整理してみましょう。
ユーザー
│
│ リクエスト
▼
ELB
│
│ 振り分け
▼
Target Group
│
├─ ターゲットA
├─ ターゲットB
└─ ターゲットC
ELBの主な役割は、
- クライアントから通信を受け取る
- Listenerで通信を受け付ける
- ルールに応じて転送先を決める
- Target Groupのターゲットへ転送する
- ヘルスチェックなどを利用してターゲットの状態を確認する
というものです。
つまり、
「ユーザーからの通信を受け取り、適切なバックエンドへ届ける窓口」
と考えると分かりやすいでしょう。
▪️ELBを利用するときのポイント
ELBを設計するときには、
- ALBとNLBのどちらを利用するか
- どのポートで通信を受け付けるか
- HTTPとHTTPSをどう使い分けるか
- どのTarget Groupへ転送するか
- ヘルスチェックをどう設定するか
- Security Groupをどう設定するか
- 複数AZへどのように配置するか
- ECSやAuto Scalingとどう連携するか
などを考える必要があります。
特に重要なのが、
「ELBを置けば勝手に負荷分散される」わけではない
という点です。
Listener、Target Group、ヘルスチェック、Security Groupなど、複数の設定が組み合わさって通信を制御しています。
▪️ELBを理解するとAWSのWeb構成が見えてくる
これまで紹介してきたAWSサービスと組み合わせると、より実際のシステム構成が見えてきます。
例えば、
Internet
│
▼
ALB
│
Target Group
│
┌──────────┼──────────┐
▼ ▼ ▼
ECS ECS ECS
Task Task Task
│ │ │
└──────────┼──────────┘
▼
RDS
さらに、
IAM
↓
権限管理
CloudTrail
↓
操作記録
CloudWatch
↓
監視
SNS
↓
通知
SQS
↓
非同期処理
などを組み合わせることで、AWS上の本格的なシステム構成へつながっていきます。
▪️まとめ
今回は、AWSのELBについて解説しました。
ELBは、クライアントからの通信を複数のターゲットへ振り分けるロードバランシングサービスです。
ポイントを整理すると、
- ELBはElastic Load Balancingの略
- ロードバランサーとして通信を複数のターゲットへ分散する
- 複数サーバーを利用することで可用性や負荷分散に役立つ
- ALBはHTTP/HTTPSなどのWebアプリケーション向け
- NLBはTCP/TLS/UDPなどのネットワークレベルの通信に利用される
- Listenerで受け付けるプロトコルやポートなどを設定する
- Target Groupに通信を転送するターゲットを登録する
- ヘルスチェックによってターゲットの状態を確認できる
- Security Groupと組み合わせて通信を制御する
- Auto Scalingと組み合わせてサーバー台数を変化させることができる
- ECSやFargateとも連携できる
特に、
ELB=通信を受け付けて振り分ける
Listener=どんな通信を受け付けるか
Target Group=どこへ転送するか
Health Check=転送先が正常か確認する
という4つの関係を覚えておきましょう。
AWSでWebシステムを構築するときには、
Internet → ALB → ECS/EC2 → RDS
という構成が非常によく登場します。
ELBを理解すると、これまで学んできたVPC、Subnet、Security Group、EC2、ECS、RDSなどが、1つのWebシステムとしてどうつながっているのかが見えてくるようになります。
次回は、ALBとセットで理解しておきたい**「ターゲットグループ(Target Group)」**について、さらに詳しく解説します。
*「ターゲットグループ」の記事はこちら
→「https://lovelabengineer.com/2026/10/08/awsのターゲットグループとは?elbからec2やecsへ通信を/」

No responses yet