ロードバランシングアルゴリズム早見表:ラウンドロビン・最小接続・IPハッシュ・加重
概要¶
「スケーリングはサーバーを追加するだけではない。トラフィックをスマートに分散することだ」という視点からのロードバランシング早見表。
詳細¶
アルゴリズム比較¶
| アルゴリズム | 仕組み | 向いているケース |
|---|---|---|
| Round Robin | 順番に均等に割り振る | サーバースペックが同等・リクエスト処理時間が似ている |
| Least Connections | 現在の接続数が最も少ないサーバーへ | 処理時間にばらつきがある(DB クエリ等) |
| IP Hash | クライアント IP でサーバーを固定 | セッションの粘着性が必要な場合 |
| Weighted | サーバーごとに重み付け | スペックが異なるサーバー群 |
詳細¶
Round Robin¶
Request 1 → Server A
Request 2 → Server B
Request 3 → Server C
Request 4 → Server A ← 最初に戻る
利点: シンプル、実装が容易
欠点: 処理時間の重いリクエストが特定サーバーに偏ると不均等
Least Connections¶
Server A: 10 connections
Server B: 3 connections ← 次はここへ
Server C: 7 connections
利点: 負荷が実態に即して均等になる
欠点: 接続数の集計コストが発生
用途: API ゲートウェイ、WebSocket サーバー
IP Hash¶
hash(client_ip) % num_servers → 常に同じサーバー
利点: ステートフルなセッションを保持できる
欠点: サーバー追加/削除でルーティングが変わる(Consistent Hashing で解決)
用途: セッションをサーバーメモリに持つレガシーシステム
(推奨: セッションは Redis 等の外部ストアへ)
Weighted Round Robin¶
Server A (weight=3): 3回に3回
Server B (weight=1): 3回に1回
Request 1 → A
Request 2 → A
Request 3 → A
Request 4 → B ← 重みに応じた頻度
利点: 高スペックサーバーにより多くのリクエストを割り振れる
ヘルスチェック¶
ロードバランサーは定期的にバックエンドの生死を確認する。
# AWS ALB ヘルスチェック例
healthCheck:
protocol: HTTP
path: /health
interval: 30 seconds
threshold: 2 # 2回連続失敗でアウト
timeout: 5 seconds
なぜ重要か / いつ使うか¶
- システムデザイン面接で「どうスケールするか」の答えとして
- nginx / AWS ALB / HAProxy の設定でアルゴリズムを選ぶとき
- スパイクトラフィックへの対策を設計するとき