私は 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)。