getHealthエンドポイントは、Solana RPCノードの現在の健康状態を確認するために使用されます。健康なノードは、通常、稼働していてクラスタの他の部分と適度に同期していると見なされます(具体的には、最新のクラスタ確認済みスロットと一定のスロット距離内にある)。
このエンドポイントは、特にRPCノードの可用性と信頼性に依存するアプリケーションやインフラストラクチャのために、ノードの健康状態を監視するために重要です。
作動方法
getHealthメソッドは、標準のJSON-RPC POSTメカニズムを使用して、メソッドgetHealthで呼び出されます。このメソッドは、RPCノードが健康であり、Solanaクラスタと同期しているかを確認します。
一般的な使用例
- ノード監視: RPCノードが稼働しており同期していることを確認するために、定期的に健康状態をチェックします。
- 負荷分散: ヘルスチェックを使用して、ノードが負荷分散された設定でトラフィックを受け取るべきかを判断します。
- フェイルオーバーシステム: プライマリノードが健康でなくなった場合にバックアップノードへのフェイルオーバーをトリガーします。
- 接続性のデバッグ: RPCノードが応答しているかどうかを迅速に確認します。
リクエストパラメータ
このメソッドはパラメータを受け取りません。レスポンス構造
- JSON-RPC
getHealthPOSTの場合:result: ノードが健康である場合の"ok"。- ノードが健康でない場合、エラーオブジェクトやその他の文字列値(
"behind"や"unknown"など)が返されることがありますが、正確なエラーレスポンスは不安定でプロバイダ間で異なる場合があります。
例
1. JSON-RPCを使用したノード健康チェック(cURLでのPOST)
開発者向けのヒント
- 健康の定義: 「健康」とは、ノードが応答可能でクラスタの先端からあまり離れていないことを意味します。正確なスロットの差(
HEALTH_CHECK_SLOT_DISTANCE)は、ノードで設定できます。 "behind"や"unknown"の解釈:"behind {distance}"や"unknown"を受け取った場合、ノードは稼働中ですが、クラスタに完全に追いついていないか、その状態を把握できないことを示します。アプリケーションの要件に応じて、これらの状態を異なる扱いが必要です。- プロバイダの違い: 非健康なノードに対する正確な動作やレスポンスコード/ボディは、RPCプロバイダ間でわずかに異なる可能性があります。
- エラーハンドリング: ネットワークの問題やノードの問題によってリクエストが完全に失敗する可能性があるため、
getHealthを呼び出す際には、常に適切なエラーハンドリングを実装する必要があります。
getHealthエンドポイントの使用に必要な情報を提供します。