キープアライブを使用して、多数のTCPサーバー間の接続の負荷を分散しています。それが重要だとは思いませんが、この場合のサービスはrabbitmqです。加重ラウンドロビンを使用したNATタイプバランシングを使用しています。
したがって、クライアントはサーバーに接続します。
[client]-----------[lvs]------------[real server]
a b
クライアントがLVSに接続し、アイドル状態のままでソケットに何も送信しない場合、ipvsadm --set
を使用して設定されたタイムアウトに従って、これは最終的にタイムアウトになります。この時点で、上記の「a」とマークされた接続は、クライアントのnetstat -anp
の出力、およびlvsボックスのipvsadm -L -n -c
の出力から正しく消えます。ただし、接続 'b'は、実サーバーボックスのnetstat -anp
に従ってESTABLISHEDのままです。
どうしてこれなの? lvsに実サーバーへの接続を適切にリセットさせることはできますか?
持続的接続を有効にしていますか?持続的接続のタイムアウトは、-p [timeout]を使用して設定できます。
これにより、接続bがアクティブに保たれ、クライアントIPから同じ実サーバーにさらに要求がルーティングされます。