ロードバランサー ろーどばらんさー
負荷分散冗長化可用性スケールアウトヘルスチェックリバースプロキシ
ロードバランサーって何?
簡単に言うとこんな感じ!
混んでるレジに全員並ばせず「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年頃 — オープンソースの HAProxy や Nginx がソフトウェア型ロードバランサーとして台頭。コスト削減に貢献
- 2010年代 — AWSの ELB(Elastic Load Balancing) など、クラウド型のマネージドロードバランサーが登場。オンデマンドで使えるようになる
- 2020年代 — Kubernetes環境での Ingress Controller やサービスメッシュ(Envoyなど)が普及し、マイクロサービスアーキテクチャの中核に
ロードバランサーの配置と構成
ハードウェア型・ソフトウェア型・クラウド型の比較
| 種別 | 代表製品 | コスト | 柔軟性 | 向いている規模 |
|---|---|---|---|---|
| ハードウェア型 | F5 BIG-IP、Citrix ADC | 高(数百万円〜) | 低 | 大企業・金融・官公庁 |
| ソフトウェア型 | HAProxy、Nginx、Envoy | 低〜中 | 高 | 中小〜大規模Web |
| クラウド型(マネージド) | AWS ELB、Azure Load Balancer、GCP CLB | 従量課金 | 高 | クラウド上のシステム全般 |
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 7540 | HTTP/2(L7ロードバランサーで活用される) |
| RFC 9113 | HTTP/3(QUICベース、次世代L7分散に関連) |
| RFC 2782 | DNS SRVレコード(DNSラウンドロビンによる簡易負荷分散) |