すべてのプロダクト
Search
ドキュメントセンター

:ピアによるSLB接続リセットが有効になった後、サービスログに「ヘルスチェック」エラーが表示されます。

最終更新日:Sep 19, 2024

説明

免責事項: この記事には、サードパーティ製品に関する情報が含まれている場合があります。 そのような情報は参照だけのためです。 Alibaba Cloudは、明示または黙示を問わず、サードパーティ製品のパフォーマンスと信頼性、および製品に対する操作の潜在的な影響に関して、いかなる保証も行いません。

質問

TCPリスナーのヘルスチェックを有効にすると、[ピアによる接続リセット] などのネットワーク接続エラーがバックエンドサーバーのサービスログに頻繁に記録されます。 ネットワークパケットキャプチャの結果は、要求がSLBインスタンスから送信され、SLBインスタンスがRSTパケットをバックエンドサーバーに送信して接続を終了することを示しています。 業務ログのエラー情報は次のとおりです。

原因

この問題は、SLBのヘルスチェックメカニズムに関連しています。 TCPプロトコルは上位層サービスの状態を認識せず、ヘルスチェックコストとバックエンドサービスへの影響を減らすことに加えて、サーバーロードバランサーは、TCPリスニングのヘルスチェックのために単純なTCP 3ウェイハンドシェイクのみを実行し、RSTデータパケットを直接送信してTCP接続を終了します。 上位層アプリケーションは、Java接続プールなどの接続が異常であると見なします。 したがって、アプリケーションは [Connection reset by peer] 例外をスローします。 詳細なデータ対話プロセスは次のとおりです。

  1. サーバーロードバランサーインスタンスは、バックエンドサービスポートにSYNリクエストパケットを送信します。

  2. ポートが正常な場合、バックエンドサーバーはSYNとACKで応答します。

  3. SLBインスタンスがバックエンドポートから応答を正常に受信し、リスニングポートが正常であると判断した場合、ヘルスチェックが成功したと判断されます。

  4. SLBインスタンスは、接続を閉じるためにRSTデータパケットをバックエンドポートに送信します。 ヘルスチェックが終了し、バックエンドサーバーからデータが送信されません。

回答

説明

以下の点にご注意ください。

  • インスタンス設定やデータの変更など、リスクを引き起こす可能性のある操作を実行する前に、データのセキュリティを確保するために、インスタンスのディザスタリカバリ機能とフォールトトレランス機能を確認することを推奨します。

  • インスタンス (ECS や RDS など) の設定およびデータを変更する場合は、スナップショットを作成するか、RDS ログバックアップを有効にすることを推奨します。

  • Alibaba Cloud管理コンソールでログインアカウントやパスワードなどの機密情報を承認または送信した場合は、そのような情報をタイムリーに変更することを推奨します。

この問題を解決するには、ビジネス要件または実際の状況に基づいて、次のいずれかのソリューションを選択することをお勧めします。

  • 解決策1: リスナータイプを変更するSLBインスタンスのTCPリスナーをHTTPリスナーまたはHTTPSリスナーに変更します。 詳細については、「HTTPリスナーの追加」および「HTTPSリスナーの追加」をご参照ください。

  • 解決策2: ログフィルタリングビジネスレベルの上位層で、SLBヘルスチェックのIPアドレスセグメントは、関連するエラー情報を無視するようにフィルタリングされる。

    説明

    : SLBのヘルスチェックCIDRブロックは100.64.0.0/10です。

適用範囲

  • SLB