關於 keepalived+lvs 中參數 persistence_timeout 的說明


在keepalived+lvs的配置文件keepalived.conf中有一個選項persistence_timeout

該選項的作用:在一定時間內使來自於同一個Client的所有TCP請求被負載到同一個RealServer上。

查看已設置的persistence_timeout時間:
ipvsadm -S -n
查看Client連接到Server端的請求負載情況:
ipvsadm -L -n -c
#當設置了persistence_timeout 時間后,指定時間內來自同一Client的請求會被發送到同一個RealServer
說明(官方):http://www.linuxvirtualserver.org/docs/persistence.html
#大體意思

在C/S架構中,Client和Server間的多個連接有時存在着關聯性
比如FTP主動模式的20和21兩個端口:21默認為監聽端口;20則為數據傳輸端口
#20端口的開啟是建立在21端口進行了有效的用戶確認和文件交互確認后才會開啟的,是Server主動連接Client所告知的端口 

但是在FTP的被動模式下,是Server主動將自己開放的隨機數據端口告知Client,然后Client再去和Server的新端口建立新的TCP連接

假如`persistence_timeout`該選項注釋掉,那么Client和Server間建立的新的TCP連接有可能被負載到另外一台RealServer上去,此時Client和Server之間處於半連接狀態,所以當有此選項時,就不會出現此問題了。

此選項對於連接關聯性是一個很好的解決方案,但是會造成輕微的負載不均衡(官方原文:slight load imbalance)
注意:

此選項設置時間過長會導致嚴重的負載不均衡,當然不光是因為時間的原因,還有比如某些網絡設置了代理服務,此時負載會將來自於該網絡內所有的用戶請求當做來自於同一Client


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM