
我對 NGINX Plus 文件的理解是,它們的負載平衡將圍繞已關閉或陷入困境的伺服器進行路由,並且會話持久性會嘗試為給定會話維護同一伺服器。當伺服器在會話中途宕機時,感覺兩者可能會變得相互排斥。是否有伺服器故障的跡象,以便我們知道由於切換到另一台伺服器(會話中可能沒有更改)可能會導致一些資料遺失,或者它是否安靜地切換?
這專門用於 TCP/UDP 通信,而不是 HTTP。
答案1
感覺兩者可能會變得互斥
是的。這不是 nginx 特有的問題。到目前為止,最好的解決方案是複製會話資料/使其高度可用——但這並不容易連接到尚未精心規劃的現有服務。
當伺服器實作會話失敗時,你希望 nginx 做什麼?故障轉移到任何其他伺服器?故障轉移到特定伺服器?你們的伺服器是成對的嗎?還有別的東西嗎?停止會話 - 因為它處於不確定狀態......有很多選項。
至於報告故障。這有兩個部分。一是監控-需要有人被告知東西壞了/需要修復。這不是 Nginx 的工作。這是由您的監控堆疊來處理的。第二部分是讓客戶知道有些事情不起作用。 Nginx 不知道應該將庫存重新上架/重新套用 DNS 變更。這就是您正在運行的協議和應用程式的工作。雖然存在計時問題,但大多數網路協定使用短請求/回覆訊息的交換來提供客戶端伺服器狀態的可見性。對於(大多數)資料庫來說,這是透過來自客戶端的明確「COMMIT」訊息來定義的。但考慮一下如果客戶端說“COMMIT”並且沒有收到回覆會發生什麼?
這專門用於 TCP/UDP 通信,而不是 HTTP。
與@PersionGulf 一樣,我建議使用 HAProxy 進行非 HTTP 負載平衡/基於 nginx 的 TCP HA。上次我檢查過它不能做UDP。
它沒有表明它在失敗時如何工作
測試並不難。