【AWS】ELBとは?ロードバランサーの仕組み・ALBとNLBの違いを初心者向けに解説

  • URLをコピーしました!

前の記事では、 Amazon RDSの基本を学びました。

これまでの学習で、 EC2でWebサーバーを動かし、 RDSへデータを保存する基本的な構成が 見えてきました。

しかし、Webサービスへのアクセスが増えてくると、 新しい問題が発生します。

ACCESS INCREASE
USER USER USER USER
↓ ↓ ↓ ↓
ONE SERVER Amazon EC2 アクセス集中!
QUESTION 大量のアクセスを
1台のEC2で処理しきれない場合はどうする?

複数のEC2インスタンスを用意しても、 ユーザーからの通信を 適切に振り分ける仕組みが必要です。

そこで登場するのが、 ELB(Elastic Load Balancing)です。

☁ AWS INTERMEDIATE

この記事では、 AWSで複数のサーバーへ通信を分散する ELBの基本的な仕組みを学びます。

AWS中級講座を見る →
LESSON GOAL この記事のゴール

ELBによる負荷分散の仕組みを理解し、 ロードバランサー・ターゲットグループ・ ヘルスチェック・ALB・NLB の役割を説明できるようになることを目指します。

目次

ELBとは?

ELB(Elastic Load Balancing)は、 AWSで受信した通信を 複数のターゲットへ分散するためのサービスです。

Webサーバーを複数台用意している場合、 ELBを前段に配置することで、 ユーザーからのアクセスを 複数のEC2インスタンスへ振り分けられます。

CLIENT Users
LOAD BALANCER ELB 通信を振り分ける
↙ ↓ ↘
EC2 Server 01
EC2 Server 02
EC2 Server 03
POINT ELB = 受信した通信を 複数のターゲットへ振り分けるサービス

なぜロードバランサーが必要なのか

Webサーバーが1台しかない構成では、 アクセスがそのサーバーへ集中します。

WITHOUT ELB EC2 × 1
ACCESS
↓↓↓↓↓

1台にアクセスが集中

WITH ELB EC2 × 3
ACCESS
↓ ↓ ↓

複数台へアクセスを分散

ELBを利用すると、 複数のサーバーへ通信を分散できるため、 特定のサーバーへ負荷が集中するのを 防ぎやすくなります。

MEMORY Load Balancing = 負荷を複数のサーバーへ分散する

ターゲットとは?

ELBが通信を転送する先を、 ターゲットと呼びます。

たとえば、 複数のEC2インスタンスを ELBの転送先として利用できます。

LOAD BALANCER ALB
TARGET GROUP Web Servers
EC2-01 EC2-02 EC2-03

ELBでは、 転送先となるターゲットを ターゲットグループとして まとめて管理します。

TARGET GROUP ELBが通信を転送する ターゲットをまとめたグループ

ELBを使った通信の流れ

Webサービスへアクセスした場合の 基本的な通信の流れを見てみましょう。

01 User Webへアクセス
02 ELB 通信を受信
03 Target EC2へ転送

ユーザーは基本的に、 個々のEC2インスタンスへ 直接アクセスするのではありません。

まずロードバランサーが通信を受信し、 登録されている正常なターゲットへ 通信を転送します。

ヘルスチェックとは?

ELBの重要な機能の1つが ヘルスチェックです。

ELBはターゲットが正常に動作しているかを 定期的に確認できます。

LOAD BALANCER ELB Health Check
→ → →
EC2-01 HEALTHY ✓ 転送
EC2-02 UNHEALTHY × 転送しない
EC2-03 HEALTHY ✓ 転送

たとえばEC2-02で障害が発生し、 ヘルスチェックに失敗した場合、 ELBはそのターゲットへの 通信転送を停止します。

HEALTH CHECK FAILED 障害が発生したサーバーを 通信の転送先から外す

これによって、 正常に動作しているサーバーへ 通信を転送し続けることができます。

複数AZにEC2を配置する

これまで学んだ アベイラビリティゾーン(AZ) の考え方もELBと関係します。

EC2を複数台用意していても、 すべて同じAZに存在すると、 そのAZで障害が発生した場合に サービス全体へ影響する可能性があります。

VPC
LOAD BALANCER ELB
↙       ↘
AVAILABILITY ZONE A AZ-A
EC2-01
AVAILABILITY ZONE B AZ-B
EC2-02

複数AZへEC2を配置し、 ELBで通信を振り分けることで、 1つのAZに障害が発生した場合にも 別のAZのサーバーで処理を継続しやすくなります。

HIGH AVAILABILITY ELB + 複数AZ = 可用性の高いWebシステムを構成できる

ELBには複数のロードバランサーがある

AWSのElastic Load Balancingでは、 用途に応じて複数種類の ロードバランサーを利用できます。

初めに特に押さえておきたいのが、 ALBNLBです。

APPLICATION ALB Application Load Balancer
Layer 7

HTTP / HTTPSなどの Webアプリケーション向け

NETWORK NLB Network Load Balancer
Layer 4

TCP / UDPなどの ネットワーク通信向け

ALBとは?

ALB(Application Load Balancer)は、 主にHTTP・HTTPS通信を扱う ロードバランサーです。

USER Browser
HTTP / HTTPS →
LAYER 7 ALB
TARGET EC2

ALBは、 HTTPリクエストの内容に応じて 通信先を変更することもできます。

たとえばURLのパスによって、 異なるターゲットグループへ 通信を転送できます。

ALB Request
/images/* Target Group A
/api/* Target Group B
ALB HTTP / HTTPSなどの Webアプリケーションで利用される

NLBとは?

NLB(Network Load Balancer)は、 主にTCP・UDPなどの通信を扱う ロードバランサーです。

CLIENT Application
TCP / UDP →
LAYER 4 NLB
TARGET Server

NLBは、 大量の接続や高いパフォーマンスが 求められるネットワーク通信などで利用されます。

NLB TCP / UDPなどの Layer 4通信を扱うロードバランサー

ALBとNLBの違い

ALBとNLBは、 どのレイヤーの情報を使って 通信を振り分けるかが大きく異なります。

ALB Layer 7
HTTP / HTTPS

Webアプリケーション向け

NLB Layer 4
TCP / UDP

ネットワーク通信向け

REMEMBER ALB → Layer 7・HTTP/HTTPS
NLB → Layer 4・TCP/UDP

ELBとSecurity Group

Webシステムを構築するときは、 ELBとEC2の Security Groupの関係も重要です。

ALBを利用する一般的なWeb構成では、 インターネットからのHTTP/HTTPS通信を ALBで受け付けます。

INTERNET Users
HTTPS : 443 →
SG-ALB ALB
HTTP : 80 →
SG-WEB EC2

EC2側では、 インターネット全体から通信を許可するのではなく、 ALBのSecurity Groupからの通信だけを 許可する構成にできます。

SECURITY DESIGN Internet → ALB → EC2

EC2へ直接インターネットから アクセスさせるのではなく、 ALBを経由させる構成を考えます。

ここまでのAWSサービスを組み合わせてみよう

ここまで学んだサービスを組み合わせると、 Webシステムらしい構成になってきます。

INTERNET Users
LOAD BALANCER ALB
↙       ↘
AZ-A EC2
AZ-B EC2
↓       ↓
DATABASE Amazon RDS

ユーザーからの通信をALBが受信し、 複数AZに配置されたEC2へ振り分けます。

EC2ではアプリケーションを実行し、 必要なデータをRDSへ保存する、 という構成を作ることができます。

あなたならどのロードバランサーを選ぶ?

ここまで学んだ内容を使って、 適切なロードバランサーを 選択してみましょう。

REQUIREMENT WebアプリケーションへのHTTPS通信を 複数のEC2インスタンスへ分散したい。

どちらを選択しますか?

どちらか選択してください

通信の種類に注目して考えてみましょう。

確認問題:ELB

QUESTION 01

ELBの主な役割として 正しいものはどれですか?

正解:B

ELBは受信した通信を 複数のターゲットへ振り分ける ロードバランシングサービスです。

QUESTION 02

ELBのヘルスチェックで 異常と判断されたターゲットはどうなりますか?

正解:C

ヘルスチェックで異常と判断された ターゲットへの通信転送を停止し、 正常なターゲットへ通信を転送します。

QUESTION 03

HTTP/HTTPSを利用する Webアプリケーションで 主に利用されるロードバランサーはどれですか?

正解:A

ALBはLayer 7で動作し、 HTTP/HTTPSを利用する Webアプリケーションなどで利用されます。

YOUR SCORE 0 / 3

3問に挑戦してみましょう。

まとめ

01

ELBは 受信した通信を複数のターゲットへ分散する サービス

02

EC2などの転送先を ターゲットグループとして管理する

03

ヘルスチェックによって 正常なターゲットへ通信を転送する

04

複数AZへEC2を配置してELBと組み合わせることで 可用性を高められる

05

ALBはLayer 7で HTTP/HTTPSなどを扱う

06

NLBはLayer 4で TCP/UDPなどを扱う

07

Security Groupを利用して ALB → EC2の通信だけを許可する といった構成ができる

しかし、アクセス数は常に同じではない

ELBを利用することで、 複数のEC2インスタンスへ アクセスを分散できるようになりました。

しかし、もう1つ考えなければならないことがあります。

TRAFFIC CHANGE
通常時 ACCESS ■■
アクセス集中時 ACCESS ■■■■■■■■

アクセス数は、 時間帯やキャンペーンなどによって 大きく変化します。

アクセスが増えるたびに 人がEC2インスタンスを追加し、 減ったら削除するのでは大変です。

NEXT QUESTION アクセス量に応じて EC2の台数を自動的に増減できない?

そこで登場するのが、 Amazon EC2 Auto Scalingです。

NEXT CONCEPT Amazon EC2 Auto Scaling

次の記事では、 負荷などに応じてEC2インスタンスの台数を 自動的に増減させる仕組みを学びます。

NEXT LESSON

Auto Scalingの仕組みを理解する

ELBによって通信を分散する仕組みを理解したら、 次はEC2インスタンスそのものを 自動的に増減させる仕組みを学びましょう。

次の記事では、 Auto Scaling Group・最小台数・最大台数・ 希望する容量・スケーリングポリシー などを整理します。

Auto Scalingの仕組みを理解する
AWS INTERMEDIATE

AWS中級講座へ戻る

AWS中級講座の記事一覧から、 学習したいレッスンを確認できます。

← AWS中級講座へ戻る
目次