LVS的持久連接

LVS的某些調度算法是可以實現地址綁定session的,在一段時間內始終將源IP從定向至同一個RS,但是有些算法是不能實現此功能的,就需要外生性的機制來幫助,讓所有的算法都可以實現session綁定,這就是LVS的持久連接,不論什麼算法,都可以通過持久連接,在一定的時間範圍內,將來至於同一個源地址的請求時鐘定向至同一臺RS.

實現原理:當使用LVS啓用持久連接後,會在LVS服務器的內存中,記錄一個會話連接,記錄源IP連接RS的對應地址,會把這些記錄保存在一個模板中,爲每一條對應的記錄設定一個計時器,當用戶的請求經過LVS的時候,LVS會先檢查這個連接模板,如模板中有記錄,就不考慮調度算法了,直接使用模板中的記錄爲源IP定向到指定的RS,如果模板表中沒有記錄,或者記錄超時了,才從新去計算該源IP應該轉給哪臺RS.可以使用命令 ipvsadm –L –c 顯示tcp連接(不是連接模板),如下圖所示:

如果沒有指定時間,系統記錄的是tcp的超時時間image

圖1:超時倒計時;圖2:連接狀態;圖3:訪問的源地址;圖4:VIP;圖5:被定向的地址

超時斷開方式:如果超時就斷開,同一個源IP再來訪問時,會重新調度算法.如果超時時間快結束時,源IP再次訪問,會重新計時


持久連接類型

PCC:在一定時間內,將來自同一個客戶端發往VIP的所有請求統統定向至同一RS;不論端口,不論服務;把多有的服務都當作集羣服務.如前端客戶端第一次請求的是http服務,LVS定向至RS1,第二次請求ssh服務,LVS會查找自己的連接模板,然後把請求也定向至RS1.

image

172.16.21.1:0表示所有的端口

image

如此一來LVS本機就收不任何請求了,任何請求都會被轉到RS去,所以PCC的受理範圍太大了


PPC:在一定事件內,將來自於同一個客戶端發往某VIP的指定端口的請求統統定向至同一RS;如前端客戶端第一次請求的是http服務,LVS定向至RS1,第二次請求ssh服務,LVS會認爲這是新的請求,然後使用調度算法,具體會被轉發至哪一臺主機,就看算法了.

image

image

運氣很好,他們不一樣


PFMC:在一定時間內,將來至於同一客戶端的請求的被綁定在一起的端口(如80和443綁定在一起),統統定向至同一臺RS,基於防火牆標記,將兩個或兩個以上的端口綁定爲同一個服務.

這裏偷懶暫時佔用個佔位符

首先要給定義爲同一組的服務打上相同的標記,由於是集羣服務,並且集羣服務是工作在INPUT鏈上,所以需要在INPUT鏈之前就要打標,也就是PRE_ROUTING鏈上就需要打標,命令如下

  1: iptables -t mangle -A PREROUTING -d VIP -p tcp --dport CS_Port -j MARK --set-mark # (0-99)

打標:

image

只要目標ip是172.16.21.1:80的tcp協議,就打標爲10

只要目標ip是172.16.21.1:443的tcp協議,就打標爲10

添加LVS規則

image

增加持久連接

image

提示:小規模的站點中,不建議使用LVS,LVS的控制能力太弱,雖然他的轉發性能很好.只有併發性非常多的時候才使用LVS

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章