Cloudflare Load Balancing API は、各プールとエンドポイントにグローバルな健全性を付けます。ネットワーク全体から見た状態も確認できます。Cloudflare は定足数(quorum)方式で、プールとエンドポイントの健全性を判定します。定足数は、そのリージョンでヘルスモニターリクエストを実行する PoP から取り、多数決の結果を使います。
障害を調査するときは、Cloudflare API で Cloudflare Load Balancing をプログラムから操作します。Health Monitor Events と Load Balancer Monitors のルートは、ロードバランシングのイベントログの参照と、Cloudflare モニターの再設定に適しています。
エンドポイントの健全性をデータセンター単位で見るには、List Health Monitor Events コマンドで Cloudflare API を呼び出します。
GET user/load_balancing_analytics/eventsヘルスモニターリクエストが失敗した場合、内訳に理由が含まれます。
よくある原因と対処は次のとおりです。
ヘルスモニターリクエストが、エンドポイントへの TCP 接続を確立できませんでした。
Cloudflare とエンドポイントのあいだでネットワーク障害が起きている場合や、ファイアウォールが接続を拒否している場合に多く発生します。ネットワークとファイアウォールの設定が、ロードバランシングのトラフィックを妨げていないことを確認してください。
設定したタイムアウト内に、エンドポイントが HTTP レスポンスを返しませんでした。タイムアウトを 1 秒や 2 秒など短くしていると起きます。
エンドポイントが応答できるよう、HTTP レスポンスのタイムアウトを長くすることを推奨します。
Cloudflare が受け取った HTTP ステータスコードが、モニター設定の expected_codes に定義した値と一致しません。
レスポンスコードは expected_codes と一致している必要があります。List Monitors API コマンドで、値が正しいことを確認してください。
モニターが HTTP 接続を使う設定なのに、エンドポイントが HTTPS へリダイレクトしている場合にも、この問題が起きることがあります。この場合のレスポンスコードは、多くの場合 301、302、または 303 です。
Cloudflare モニターの設定を HTTPS に変更するか、follow_redirect を true にして、正しいステータスコードを解決できるようにしてください。
エンドポイントから返ったレスポンス本文に、モニターで設定した expected_body の値(大文字小文字は区別しません)が含まれていません。
読むのはレスポンスの先頭 10 KB だけです。より大きいレスポンスを返し、expected_body が先頭 10 KB にない場合、ヘルスモニターリクエストは失敗します。
expected_body がレスポンス本文の先頭 10 KB に含まれるようにしてください。
証明書が、公開の認証局(CA)から信頼されていません。
自己署名証明書を使っている場合は、一般に信頼される証明書を使うか、モニターの allow_insecure を true にすることを推奨します。
ヘルスモニター(クライアント)が、サーバー証明書上の名前をリクエストのホスト名と照合できませんでした。
List Monitors コマンドで、Cloudflare モニターの header 値が正しいことを確認し、必要な変更は Update Monitors コマンドで行ってください。
古いバージョンの TLS を使っている場合や、エンドポイントが HTTPS 向けに設定されていない場合に起きることがあります。
エンドポイントが TLS 1.0 以上をサポートし、HTTPS 向けに設定されていることを確認してください。
サーバーが、クライアントから提示された名前を認識しませんでした。ホストヘッダーを設定している場合、初期 TLS ハンドシェイクの ServerName としてこれを使います。未設定の場合は ServerName を提示しないため、このエラーになることがあります。
モニターオブジェクトにホストヘッダーを設定してください。
その IP アドレスに、当社ネットワークから到達できません。よくある原因は、ISP やホスティングプロバイダーのネットワーク障害(例: BGP レベル)か、その IP が存在しないことです。
IP が正しいことを確認します。正しい場合は、ISP またはホスティングプロバイダーのネットワーク障害がないかを確認してください。
プランに含まれる数を超えてオブジェクト(モニター、プール、またはエンドポイント)を作成しようとすると、このエラーになります。
ダッシュボードでは、追加のオブジェクトを作成できません。
Cloudflare API を使っている場合は、エラーメッセージが返ります。
- オブジェクト(ロードバランサー、プール、エンドポイント、モニター)を増やしたい Enterprise のお客様は、アカウントチームに相談してください。
- セルフサービスのお客様は、Load Balancing のサブスクリプションをエンドポイント数の多いプランにアップグレードして、負荷分散の容量を増やせます。
データの送信が確認されず、再送も成功しませんでした。
エンドポイントでハンドシェイクの SYN-ACK が行われているかを確認し、Cloudflare サポートに問い合わせ てください。
ブラウザーと Web サーバーの接続が安全でないことを示します。
Wi-Fi ネットワークを切り替える、有線ネットワークに接続する、またはネットワーク接続が安定していることを確認してください。
ネットワークが利用できないため、Cloudflare がエンドポイントに接続できません。多くの場合、ネットワーク障害か誤った IP が原因です。
Cloudflare のロードバランサー設定に入力したエンドポイントの IP か、エンドポイントホスト名の DNS で返る IP を確認してください。
多くの場合、HTTP 502 エラーまたは不正なゲートウェイが原因です。
エンドポイントがリクエストに応答すること、アプリケーションがクラッシュしていないこと、高負荷でないことを確認してください。
エンドポイントのホスト名が存在しません。
エンドポイントが IP アドレスに解決されることを確認してください。
クライアントがエンドポイントからデータを受信しているあいだに、ネットワークエラーが発生しました。
エンドポイントに大量のトラフィックやエラーがないかを確認してください。
モニターの設定に誤りがあり、プールのエンドポイントに対するチェックが実行されません。
モニター設定が、エンドポイントへの想定リクエストと一致しているかを見直してください。
エンドポイントのホスト名が、内部 IP またはオレンジクラウド(プロキシ)の IP アドレスに解決されます。プールのエンドポイントに対するチェックは実行されません。
Cloudflare でプロキシしているエンドポイントホスト名は使えません。
アカウントまたはゾーンで Load Balancing が有効になっていません。
Enterprise のお客様は、Cloudflare アカウントチームに連絡してください。Free、Pro、Business のお客様は Load Balancing を有効にする を参照してください。
ロードバランサーのエンドポイントを設定するときにホストヘッダー値を設定すると、エラーになります。
現在 Cloudflare では、設定する エンドポイントのホストヘッダー を、アカウントに紐づくゾーンの直下のサブドメインである完全修飾ドメイン名(FQDN)に制限しています。たとえば、このホストヘッダーはロードバランサー自身と同じゾーンになります。プールは複数のロードバランサーで共用できます。
ロードバランサーの ジオステアリング リージョン、または プールセット から参照されているプールを削除しようとすると、このエラーになります。
ジオステアリングからの参照の場合は、ロードバランサーのジオステアリング設定からそのプールを外してください。ロードバランサーでジオステアリングを使わなくなっている場合は、ジオステアリングを再度有効にして からプールを外す必要があります。
プールセットからの参照の場合は、そのプールを参照するすべてのプールセットから外してください。overrides.pool_weights と overrides.fallback_pool のエントリも含みます。
上記のいずれの失敗にも分類できない場合です。
Cloudflare サポートに問い合わせ てください。