LVS的持久連接
不論你用的什麼調度算法,在一定時間內來之同一個客戶的請求都會發給同一個服務器,默認連接超時是360秒,但這個值你可以自己定義,如果超時後,客戶的連接依然存在,則默認以2分鐘的方式依次增加。
持久連接的類型
(1)PCC 將某個客戶的所用訪問請求在超時時間內都定向到同一臺server上 基於客戶端的持久連接
(2)PPC 將某個客戶的某個服務訪問請求在超時時間內都定向到同一臺server上 基於會話的持久連接
(3)Netfilter Mark 基於防火牆標誌的持久連接
PCC例子
在director上配置
Ipvsadm -A -t 192.168.2.1:0 -s rr -p 360
Ipvsadm -a -t 192.168.2.1:0 -r 192.168.2.100 -g
Ipvsadm -a -t 192.168.2.1:0 -r 192.168.2.200 -g
查看
通過訪問vip地址 192.168.2.1再次查看
連接一直處在192.168.2.200的server上
PPC的例子
當訪問80端口使定向到2.100,當訪問22端口是定向到2.100和2.200
ipvsadm -C --清空上述的配置
ipvsadm -A -t 192.168.2.1:22 -s rr -p
ipvsadm -A -t 192.168.2.1:80 -s rr -p
ipvsadm -a -t 192.168.2.1:22 -r 192.168.2.100 -g
ipvsadm -a -t 192.168.2.1:22 -r 192.168.2.200 -g
ipvsadm -a -t 192.168.2.1:80 -r 192.168.2.100 -g
查看
訪問vip的80端口http://192.168.2.1/再次查看如下
訪問vip的22端口ssh://192.168.2.10:22 查看如下:
Netfilter Mark 例子
對於電子商務網站來說,用戶在挑選商品的時候使用的是80端口來瀏覽的,當付款的時候則是通過443的ssl加密的方式,當然當用戶挑選完商品付款的時候我們當然不希望https的443跳轉到另外一臺REALSERVER,很顯然應該是同一REALSERVER纔對。通過基於防火牆標記的持久連接來實現
首先在兩臺server上搭建CA認證中心,併爲web站點頒發證書,以實現https,關於這部分內容請參考前期的博文,這裏就不寫了。
1、在iptables添加規則,給客戶的請求打上標籤
iptables -t mangle -A PREROUTING -d 192.168.2.1 -i eth0 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 10 --把從eth0進來的到192.168.2.1去的目標端口爲80,443的打上標籤10
2、虛擬規則
ipvsadm -C
ipvsadm -A -f 10 -s rr -p --f (firewallMark)
ipvsadm -a -f 10 -r 192.168.2.100 -g
ipvsadm -a -f 10 -r 192.168.2.200 -g
通過訪問vip的端口80和443 http://192.168.2.1/、https://192.168.2.1/ 再看如下
如果後方的服務是FTP服務,怎麼才能持久連接呢
這裏的FTP服務是PSAV模式,其中21端口是控制端口,20端口是數據傳輸端口。
被動連接是FTP服務器從大於1024端口中選取一個作爲迴應端口號,因此我們要限制一下
這個迴應端口號的範圍。
vim /etc/vsftpd/vsftpd.conf
pasv_min_port=2000
pasv_max_port=2100
[root@localhost ~]# iptables -t mangle -A PREROUTING -i eth0 -d 192.168.2.1 -p tcp --dport 21 -j MARK --set-mark 10
[root@localhost ~]# iptables -t mangle -A PREROUTING -i eth0 -d 192.168.2.1 -p tcp --dport 2000:2100 -j MARK --set-mark 10
[root@localhost ~]# ipvsadm -A -f 10 -s rr -p
[root@localhost ~]# ipvsadm -a -f 10 -r 192.168.2.100 -g
[root@localhost ~]# ipvsadm -a -f 10 -r 192.168.2.200 -g
訪問我的VIP的FTP服務
在用另一臺client訪問一下就會定向到192.168.2.100這臺ftp服務器上。
上述的訪問或登錄都沒截圖,給人感覺貼上有點亂,但是都是驗證過的!!!