ロードバランシングコンポーネント
このページでは、Cloudflareのロードバランシングソリューションの3つの主要コンポーネントの簡略化された概要と、それらがどのように相互に関連しているかを提供します。
ホスト名(blog.example.com)が解決されるためには、ドメインネームシステム(DNS)が、ウェブサイトまたはアプリケーションがホストされているIPアドレスを返す必要があります(オリジン)。
ロードバランサーを設定すると、Cloudflareは指定されたホスト名のために自動的にLB DNSレコードを作成します。これは、単にIPアドレスを返すのではなく、Cloudflareのロードバランシングソリューションを使用して導入したロジックが考慮されることを意味します。
ルートドメインをロードバランサーのホスト名として使用できることに注意してください。その際、ゾーン名の前に通常自動生成されるドットを含めずにホスト名を入力してください。
flowchart LR
accTitle: Load balancing flow
accDescr: Load balancing involves a load balancer, pools, endpoints, monitors, and health monitors.
B[Request 1] --> A
C[Request 2] --> A
D[Request 3] --> A
A[Load balancer] -- Request 1 --> P1
A -- Request 2 --> P2
A -- Request 3 --> P3
subgraph P1 [Pool 1]
Endpoint1((Endpoint 1))
Endpoint2((Endpoint 2))
end
subgraph P2 [Pool 2]
Endpoint3((Endpoint 3))
Endpoint4((Endpoint 4))
end
subgraph P3 [Pool 3]
Endpoint5((Endpoint 5))
Endpoint6((Endpoint 6))
end
Cloudflare内では、プールはあなたのエンドポイントとそれらの組織方法を表します。したがって、プールは複数のエンドポイントのグループであることもあれば、プールごとに1つのエンドポイントだけを持つこともできます — これは、あなたのユースケースに最も適した方法によります。
例えば、Cloudflareを使用してトラフィックを地域間でグローバルに分散させるだけの場合(グローバルトラフィックステアリング)、各プールは1つの地域を表し、各地域内にはデータセンターへのエントリーポイントを表す1つのエンドポイントがあるかもしれません。
Cloudflareのローカルトラフィック管理(LTM)ソリューションとエンドポイントステアリング機能により、データセンター内のサーバー間でトラフィックをロードバランスすることも可能です。このユースケースでは、各プールはデータセンターを表し、あなたのサーバーを表す複数のエンドポイントを含むことになります。
エンドポイントは any service or hardware that intercepts and processes incoming public or private traffic.
Examples of endpoints include origins, hostnames, private or public IP addresses, virtual IP addresses (VIPs), servers, and other dedicated hardware boxes.
最後に、モニターは、健康なプールのみがトラフィック分配の対象とされることを保証するために使用できるコンポーネントです。
モニターを設定し、それをエンドポイントに接続すると、モニターは定期的にエンドポイントに健康モニターリクエストを発行します。このプロセスにより、ロードバランサーは実際に利用可能なエンドポイントを考慮して、トラフィックをインテリジェントに処理できるようになります。
flowchart RL
accTitle: Load balancing monitor flow
accDescr: Monitors issue health monitor requests, which validate the current status of servers within each pool.
Monitor -- Health Monitor ----> Endpoint2
Endpoint2 -- Response ----> Monitor
subgraph Pool
Endpoint1((Endpoint 1))
Endpoint2((Endpoint 2))
end