ipvs を使用した L4 バランシング: RST パケットをドロップ - フェイルオーバー

ipvs を使用した L4 バランシング: RST パケットをドロップ - フェイルオーバー

私は L7 Envoy バランサーをセットアップした L4 ipvs ロード バランサーを持っています。L4 バランサーの 1 つがダウンし、コンシステント ハッシュのおかげで、現在 (BGP のおかげで) 別の L4 バランサーによって処理されているトラフィックが同じ L7 ノードにプロキシされるとします。

これは問題なく動作するはずであり、一般的な設定だと思います。

問題は、長時間接続の場合です。新しい L4 ノードがトラフィック (データのみ - ACK/PUSH パケット) を受信し、ノードが SYN パケットを受信して​​いない場合、ノードは RST パケットをクライアントに送信し、接続を終了します。下の図はこれを示しています。

これは起こるべきではないのですが、私の質問は、これの原因となる方法 (sysctl 構成など) があるかどうかです。iptables を使用して RST パケットをドロップできる可能性があることはわかっていますが、それは正しくないように思えます。

ここに画像の説明を入力してください

答え1

net.ipv4.vs.sloppy_tcpこの特定の問題には、実際にsysctl変数があります(https://lore.kernel.org/patchwork/patch/386081/?fbclid=IwAR17t0jEvRSlvZFch1Lz_CDMjYOzUluuNGQmiyKequZK1Vq4kI75vezWEGs) でこの問題が解決されます。

この件について理解するのを助けてくれたパトリック・シャフに心から感謝します(このトピックに関する素晴らしいプレゼンテーション -https://www.usenix.org/conference/lisa16/conference-program/presentation/shuff)。

関連情報