本文へスキップ

ALBとNLBの違いとは?AWSのロードバランサーを未経験向けに解説

#ALB#NLB#AWS#ロードバランサー#未経験

ALBとNLBの違いは、ひとことで言うと「通信のどの情報を見て振り分けるか」です。結論から言うと、ALBはURLやホスト名まで見て判断するL7(アプリケーション層)、NLBはIPアドレスとポート番号だけを見て判断するL4(トランスポート層)のロードバランサーで、見る場所が違うぶん得意な場面も違います。求人票や構成図で「ALB」「NLB」という言葉を見かけても、名前が似ているせいで何が違うのか分かりにくいものです。この記事では、AWSのELB(Elastic Load Balancing)におけるALBとNLBの違いを、未経験向けにやさしく整理します。

ALBはURLで振り分け、NLBはIPアドレスで高速転送するという違いを表したイメージ

ALBとNLBは、AWSのロードバランサー(ELB)の種類

AWSでは、ロードバランサーの機能をまとめてELB(Elastic Load Balancing)と呼びます。ELBという1つの箱があるわけではなく、その中にALB・NLB・CLB(旧世代)という複数の種類が用意されていて、用途に応じて選ぶ仕組みです。ロードバランサーとは?で説明したとおり、ロードバランサー自体の役割はアクセスを複数のサーバーに振り分けて負荷を分散することですが、ALBとNLBはその振り分けを「何を見て」行うかが異なります。

振り分けの基準の違いは、ネットワークを層で捉える考え方と結びついています。スイッチとルーターの違いで扱ったL2・L3の区分と同じように、ALBはL7、NLBはL4という層を担当していると考えると整理しやすくなります。

ALB(Application Load Balancer)とは

ALBは、HTTP・HTTPSの通信内容まで見て振り分けを判断するロードバランサーです。アクセスされたURLのパスやホスト名、HTTPヘッダーの内容を見て、「/api/ 以下は裏側のAサーバー群へ」「/images/ 以下は裏側のBサーバー群へ」のように、きめ細かく振り分け先を分けられるのが特徴です。1つのドメインの中で複数のアプリを動かすような構成や、マイクロサービスのように役割ごとにサーバー群を分けている構成に向いています。

内容まで見ているぶん処理は少し重くなりますが、1つのドメインの中でパスやホスト名ごとに裏側のサーバー群を切り替えられる柔軟さは、Webアプリケーションを公開する一般的なサイトで活きる場面が多くあります。

NLB(Network Load Balancer)とは

NLBは、IPアドレスとポート番号といった通信の宛先情報だけを見て、中身には踏み込まずに高速で転送するロードバランサーです。アプリケーションの内容を解釈しないため処理が軽く、TCPやUDPの通信をそのまま高いスループットで流したい場面に向いています。ゲームサーバーやIoTデバイスからの通信、社内システム間の通信など、HTTP以外のプロトコルを扱う場面でよく登場します。

NLBには固定のIPアドレスを割り当てられるという特徴もあり、接続先を社内のファイアウォール設定などでIPアドレス指定したい場合に選ばれやすい点がALBとの大きな違いです。VPCとは?で扱ったサブネットやネットワークの構成と合わせて理解しておくと、NLBがどこに配置されるかもイメージしやすくなります。

ALBとNLBの違いを比較表で整理

ここまでの内容を表に整理します。

項目ALBNLB
対応する層L7(アプリケーション層)L4(トランスポート層)
対応プロトコルHTTP・HTTPSTCP・UDP・TLS
振り分けの基準URLパス・ホスト名・ヘッダーIPアドレス・ポート番号
処理の重さ内容を見るぶんやや重い内容を見ないぶん軽く高速
固定IP基本的に持たない持てる
向いている場面Webアプリ・マイクロサービス低遅延通信・社内システム間連携

どちらを選ぶべきか:判断の目安

実際の現場では、次のような順番で考えると選びやすくなります。

  1. 対象がWebアプリ(HTTP・HTTPS)で、URLやホスト名ごとに振り分け先を変えたい: ALBを選ぶ
  2. 対象がHTTP以外のTCP・UDP通信で、できるだけ速く転送したい: NLBを選ぶ
  3. 接続先にIPアドレス指定でのアクセス許可が必要: NLBを選ぶ
  4. 1つのシステムの中でWeb部分とそれ以外の部分が混在している: ALBとNLBを両方使い分ける

どれを選ぶか迷う場合は、まず「扱う通信がHTTPかどうか」を起点に考えると、整理しやすくなります。

未経験から現場に入ってすぐにロードバランサーの選定を任されることは少ないですが、関わる場面自体は早い段階からあります。アクセスが特定のパスだけ遅い・特定のサーバー群だけエラーが出るといった問い合わせを受けたとき、ALBのルーティング設定を確認する、という場面は監視運用の担当者にもよくあります。現役でインフラの現場にいる立場から言うと、障害報告を受けたときに「ALBの振り分け設定の話」なのか「サーバー自体の問題」なのかを切り分けられると、原因調査のスピードがかなり変わってきます。ALB・NLBどちらを使っているかは構成図に書かれていることが多いので、まずそこを確認する習慣をつけておくとよいでしょう。

InfraDojoで学ぶ

InfraDojoなら、ブラウザ上の演習環境でネットワークの基礎やAWSの仕組みを手を動かしながら学べるため、ALB・NLBの前提になるIPアドレスやポート、通信の層といった考え方を順番に固めていけます。AWSをどこから学べばいいか迷う場合は、ロードマップで全体の流れを確認しておくと、ロードバランサーを学ぶタイミングも判断しやすくなります。

よくある質問

Q. ALBとNLB、どちらを先に学ぶべきですか?

未経験のうちは、まずWebアプリに使われることが多いALBから理解すると、URLやホスト名による振り分けという考え方がイメージしやすくなります。NLBはTCP・UDPという通信の基礎を理解したあとのほうが、何のために固定IPや高速転送が必要なのかがつかみやすくなります。

Q. ALBとNLBを1つの構成で両方使うことはありますか?

あります。1つのシステムの中でWebアプリの部分はALB、社内システムとの連携やゲームサーバーのような低遅延が必要な部分はNLBというように、通信の種類ごとに使い分ける構成は珍しくありません。構成図で両方が出てきたら、それぞれどの通信を受けているかを確認すると理解が進みます。

Q. ALB・NLBの設定は未経験でも触れますか?

いきなり本番環境の設定を任されることは少ないですが、学習環境やAWSの無料利用枠を使えば、自分でALB・NLBを作ってサーバーへの振り分けを確認する練習ができます。実際に設定画面を見ながら手を動かしておくと、現場で構成図や設定を読むときの理解が早くなります。

Reo|インフラエンジニアのアイコン

この記事を書いた人: InfraDojo運営者(Reo|インフラエンジニア)

現役インフラエンジニア。SESの現場経験に基づき、未経験からのインフラ転職と学習を支援しています。InfraDojoは、ブラウザ上のターミナルで実際に手を動かして学べるインフラ学習サイトです。

@Reo_engineer_

読むだけで終わらせず、今日から手を動かす

InfraDojoは、ブラウザを開くだけでLinux・ネットワーク・AWSの演習ができる学習サイトです。登録は30秒、最初のコースは無料です。