前述のとおり、モニターはヘルスチェックを定期的に発行し、プール内の各サーバーの健全性を評価します。
flowchart RL
accTitle: ロードバランシングのモニターの流れ
accDescr: モニターはヘルスモニターリクエストを送り、各プール内のサーバーの現在の状態を確認します。
Monitor[モニター] -- ヘルスモニター ----> Endpoint2
Endpoint2 -- 応答 ----> Monitor
subgraph Pool[プール]
Endpoint1((エンドポイント 1))
Endpoint2((エンドポイント 2))
end
モニターが定期的に発行するリクエストです。モニター設定に応じて pass または fail を返し、エンドポイントが引き続きトラフィックを受けられるかを確認します。
各ヘルスモニターリクエストは、次の 2 つの問いに答えようとします。
- エンドポイントはオフラインか?: エンドポイントはヘルスモニターリクエストに応答するか。応答する場合、十分に速く応答するか(モニターの Timeout フィールドで指定)。
- エンドポイントは想定どおり動作しているか?: エンドポイントは想定した HTTP レスポンスコードを返すか。レスポンス本文に特定の情報が含まれるか。
いずれかの答えが「いいえ」の場合、そのエンドポイントはヘルスモニターリクエストに失敗します。
サーバープールの特性に応じて、サーバーを不健全とみなすかどうか、またその判断方法を変えるカスタマイズがあります。
Health Threshold は、プール全体を Healthy とみなし、ロードバランサーのプール順に従ってトラフィックを受け取るために必要な、健全なエンドポイント数です。この数を大きくするとプールの信頼性は上がりますが、unhealthy にもなりやすくなります。
プールの Health Monitor Regions で選んだ各オプションについて、Cloudflare はそのリージョン内の 3 つのデータセンターからヘルスモニターリクエストを送信します。
そのリージョンの過半数のデータセンターでヘルスモニターが成功すると、そのリージョンは健全とみなされます。健全なリージョンが過半数なら、エンドポイント自体も健全とみなされます。
All Data Centers(Enterprise のみ)
ヘルスモニタープローブは、Cloudflare ネットワーク内のすべてのデータセンターから、関連プール内のエンドポイントへ送信されます。お客様が設定した間隔で、各エンドポイントにプローブが届きます。
All Regions(Enterprise のみ)
関連プール内の各エンドポイントに対して、リージョンあたり 3 本のヘルスモニタープローブを送信します。リージョンは合計 13 あるため、プローブは 39 本になります。
Regional
プール設定で指定した各リージョンから、3 本のヘルスモニタープローブを送信します。
モニターを作成する とき、接続先プールの特性に合わせて調整できる設定がいくつかあります。
基本設定
- Type: ヘルスモニターに使うプロトコルです
- Enterprise 以外のお客様: HTTP、HTTPS、TCP から選びます。
- Enterprise のお客様: HTTP、HTTPS、TCP、UDP ICMP、ICMP Ping、SMTP から選びます。
- Path: ヘルスモニターリクエストを送るエンドポイントのパスです
- Port: ヘルスモニターの宛先ポートです
詳細設定
- Interval:
- デフォルトを大きくすると、フェイルオーバー時間を改善できますが、エンドポイントの負荷も増える場合があります。
- 最小間隔(秒)は 60(Pro)、15(Business)、10(Enterprise)です。
- Timeout と Retries:
- ヘルスモニターリクエストが Timeout で指定した時間を超え(かつ、その超過回数が指定した Retries 回数を超えた)場合、unhealthy を返します。
- Expected Code(s): 期待する HTTP レスポンスコード。個別に指定する(
200、302)か、範囲で指定します(たとえば2xxと入力すると、200番台のすべてのレスポンスコードが対象になります)。 - Response Body:
- レスポンス本文内の、大文字小文字を区別しない部分文字列を探します。
- 値は比較的静的で、HTML ページの先頭 10 KB 以内にあることを確認してください。
- Simulate Zone:
- ロードバランサーが存在するゾーンと同じゾーンを使うことを推奨します。
- ヘルスモニターリクエストの egress ゾーン設定を変更し、Authenticated Origin Pulls (mTLS)、Argo Smart Routing、Bring your own CA (mTLS)、Dedicated CDN Egress IPs、HTTP/2 to Origin などの機能との互換性を確保します。
- Follow Redirects:
301または302コードを unhealthy として報告する代わりに、ヘルスモニターリクエストは最終エンドポイントまでリダイレクトをたどります。
- Configure Request Header(s):
- エンドポイントが特定の受信ヘッダーを期待している場合に便利です。
- Header:
- ヘルスモニターで送信する HTTP リクエストヘッダーです。デフォルトで Host ヘッダーを設定することを推奨します。User-Agent ヘッダーは上書きできません。このパラメーターは HTTP および HTTPS モニターでのみ有効です。
ロードバランサーに関連付けたプールのうち、どれをフォールバックプールにするかも決める必要があります。
このプールは最終手段のプールです。トラフィックを振り分けるとき、このプールのヘルスは考慮されません。
フォールバックプールは重要です。すべてのプールに到達できない(無効または異常)場合でも、ロードバランサーへトラフィックが届くことがあります。ロードバランサーはこのトラフィックの送り先が必要なため、フォールバックプールへ送ります。