web-dev-qa-db-ja.com

LVS TCP接続タイムアウト-長引く接続

キープアライブを使用して、多数の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に実サーバーへの接続を適切にリセットさせることはできますか?

2
Jon Topper

持続的接続を有効にしていますか?持続的接続のタイムアウトは、-p [timeout]を使用して設定できます。

これにより、接続bがアクティブに保たれ、クライアントIPから同じ実サーバーにさらに要求がルーティングされます。

1
Nathan Friend

--setコマンドを使用して、タイムアウトを減らすことができます。

/sbin/ipvsadm --set 3600 120 300

または、 haproxy を試してみてください。

1
Wim Kerkhoff