負荷分散と可用性

ロードバランサー ろーどばらんさー

負荷分散冗長化可用性スケールアウトヘルスチェックリバースプロキシ
ロードバランサーって何?

簡単に言うとこんな感じ!

混んでるレジに全員並ばせず「3番レジも空いてますよ〜」って誘導する係員みたいなやつだよ!たくさんのサーバーにアクセスをうまく振り分けることで、どれか1台に負荷が集中しないようにしてくれるんだ。サービスが落ちにくくなるってこと!


ロードバランサーとは

ロードバランサー(Load Balancer)とは、インターネットなどから届いたアクセス(リクエスト)を、複数のサーバーに自動的に振り分ける装置・ソフトウェアのことです。「負荷分散装置」とも呼ばれます。

たとえばECサイトのセール時には、短時間に何万件もアクセスが集中します。このとき1台のサーバーだけで対応しようとすると、処理が追いつかずサイトが重くなったりダウンしたりしてしまいます。ロードバランサーはそのようなトラフィック(通信量)の集中を複数のサーバーに分散させることで、サービスの安定稼働を支えます。

また、ロードバランサーは「どのサーバーが正常に動いているか」を定期的に確認するヘルスチェック機能も持っています。障害が起きたサーバーへの振り分けを自動的に止められるため、システム全体の可用性(止まりにくさ)を高めるのにも役立っています。


振り分けの仕組みと主なアルゴリズム

ロードバランサーがアクセスをどのサーバーに回すかは、振り分けアルゴリズムによって決まります。

アルゴリズム概要向いているケース
ラウンドロビンサーバーに順番に1件ずつ割り当てるサーバーのスペックが均一なとき
最小接続数今一番接続が少ないサーバーに回す処理時間がバラバラなとき
IPハッシュ接続元IPアドレスで送り先を固定するログイン状態を保つセッション管理
重み付きラウンドロビン性能の高いサーバーに多く割り当てるサーバーのスペックが不均一なとき

覚え方:「交通整理のおまわりさん」

ロードバランサーは「交通整理のおまわりさん」と覚えましょう。

  • 複数の車線(サーバー)に車(リクエスト)を誘導する
  • 渋滞している車線(高負荷サーバー)には行かせない
  • 通行止めの車線(障害サーバー)は完全にふさぐ

L4負荷分散とL7負荷分散

ロードバランサーには、OSIモデルのどのレイヤーで動作するかによって2種類あります。

種別動作レイヤー見ている情報特徴
L4ロードバランサートランスポート層(第4層)IPアドレス・ポート番号高速・シンプル
L7ロードバランサーアプリケーション層(第7層)URLパス・HTTPヘッダー・Cookie柔軟な振り分けが可能

L7はURLの内容まで読めるため、たとえば「/api/へのリクエストはAPIサーバーへ」「/image/は画像配信サーバーへ」といったコンテンツベースの振り分けが実現できます。


歴史と背景

  • 1990年代前半 — WWWの普及とともに、単一サーバーへのアクセス集中が問題になり始める
  • 1996年頃 — Cisco社などがハードウェア型のロードバランサー製品を市場投入。大手ECや金融機関が導入
  • 2000年代 — ブロードバンド普及でWebトラフィックが急増。専用アプライアンス(F5 BIG-IP等)が企業に普及
  • 2006年頃 — オープンソースの HAProxyNginx がソフトウェア型ロードバランサーとして台頭。コスト削減に貢献
  • 2010年代 — AWSの ELB(Elastic Load Balancing) など、クラウド型のマネージドロードバランサーが登場。オンデマンドで使えるようになる
  • 2020年代Kubernetes環境での Ingress ControllerサービスメッシュEnvoyなど)が普及し、マイクロサービスアーキテクチャの中核に

ロードバランサーの配置と構成

ロードバランサーの基本構成 インターネット (ユーザーのアクセス) ロードバランサー リクエストを振り分ける Webサーバー A 正常稼働中 ✓ Webサーバー B 正常稼働中 ✓ Webサーバー C 障害発生中 ✗ ヘルスチェック 障害サーバーへの振り分けを自動停止

ハードウェア型・ソフトウェア型・クラウド型の比較

種別代表製品コスト柔軟性向いている規模
ハードウェア型F5 BIG-IP、Citrix ADC高(数百万円〜)大企業・金融・官公庁
ソフトウェア型HAProxy、Nginx、Envoy低〜中中小〜大規模Web
クラウド型(マネージド)AWS ELB、Azure Load Balancer、GCP CLB従量課金クラウド上のシステム全般

関連する規格・RFC

規格・RFC番号内容
RFC 7540HTTP/2(L7ロードバランサーで活用される)
RFC 9113HTTP/3(QUICベース、次世代L7分散に関連)
RFC 2782DNS SRVレコード(DNSラウンドロビンによる簡易負荷分散)

関連用語

  • 冗長化 — 機器や経路を複数用意してシステムの耐障害性を高める設計
  • スケールアウト — サーバーの台数を増やして処理能力を拡張する手法
  • 可用性 — システムが正常に使い続けられる割合・能力のこと
  • リバースプロキシ — クライアントの代わりにサーバー側に立つ中継サーバー
  • ヘルスチェック — サーバーが正常に動作しているかを定期的に確認する仕組み
  • CDN — 静的コンテンツを地理的に分散配信する仕組み。負荷分散と併用されることが多い