基本的に、ロードバランシングは次の 3 つの要素で構成されます。
- プール: 1 つ以上のエンドポイントを含みます。
- エンドポイント: 個々のリクエストに応答します。
- ロードバランサー: 各プールへ送るトラフィックを決めます。
通常、アプリケーションへのリクエストは、個々のサーバーへ直接届きます。
ロードバランサーを使うと、リクエストはまずロードバランサーを経由します。ロードバランサーが特定のプールへリクエストを振り分けます。
flowchart LR
accTitle: 負荷分散の流れ
accDescr: 負荷分散には、ロードバランサー、プール、エンドポイント、モニター、ヘルスモニターが含まれます。
B[リクエスト 1] --> A
C[リクエスト 2] --> A
D[リクエスト 3] --> A
A[ロードバランサー] -- リクエスト 1 --> P1
A -- リクエスト 2 --> P2
A -- リクエスト 3 --> P3
subgraph P1 [プール 1]
Endpoint1((エンドポイント 1))
Endpoint2((エンドポイント 2))
end
subgraph P2 [プール 2]
Endpoint3((エンドポイント 3))
Endpoint4((エンドポイント 4))
end
subgraph P3 [プール 3]
Endpoint5((エンドポイント 5))
Endpoint6((エンドポイント 6))
end
各プール内では、リクエストは個々のエンドポイントへ送られます。実際にリクエストへ応答するのは、そのエンドポイントです。
flowchart LR
accTitle: プールのトラフィックフロー
accDescr: 着信リクエストがプールに到達すると、プール内のエンドポイントへ送られます。
A[リクエスト 1] --プールがルーティング--> Endpoint2
subgraph P1 [Pool]
Endpoint1((Endpoint 1))
Endpoint2((Endpoint 2))
end
この「ロードバランサー → プール → エンドポイント」という流れが、ロードバランサーの中核です。