使用 ipvs 的 L4 平衡:丟棄 RST 封包 - 故障轉移

使用 ipvs 的 L4 平衡:丟棄 RST 封包 - 故障轉移

我有一個 L4 ipvs 負載平衡器和 L7 envoy 平衡器設定。假設我的一個 L4 平衡器出現故障,由於一致的雜湊,現在由另一個 L4 平衡器處理(感謝 BGP)的流量被代理到同一個 L7 節點。

這應該沒有任何問題,我認為這是一個常見的設定。

問題在於長時間運行的連線。當新的 L4 節點收到流量(僅資料 - ACK/PUSH 資料包)且該節點沒有收到 SYN 資料包時,節點僅向客戶端發送 RST 資料包,從而終止連線。下圖說明了這一點。

這不應該發生,我的問題是,有沒有辦法(sysctl 配置或其他東西)這是造成這種情況的原因?我知道我也許可以使用 iptables 刪除 RST 資料包,但這聽起來不對。

在此輸入影像描述

答案1

實際上有一個 sysctl 變數net.ipv4.vs.sloppy_tcp可以解決這個特定問題(https://lore.kernel.org/patchwork/patch/386081/?fbclid=IwAR17t0jEvRSlvZFch1Lz_CDMjYOzUluuNGQmiyKequZK1Vq4kI75vezWEGs)這解決了這個問題。

非常感謝 Patric Shuff,他幫助我解決了這個問題(關於這個主題的精彩演講 -https://www.usenix.org/conference/lisa16/conference-program/presentation/shuff)。

相關內容