linux集群系列(4) --- LVS之负载均衡集群 --- 持久连接
一、簡介
?1.1.?lvs的持久連接簡介
? 先說說lvs的持久連接能干什么:無論你選擇lvs的何種轉(zhuǎn)發(fā)策略,如果你想確定來自某一個客戶端的所有連接均返回到同一臺Real Server,就需要LVS的持久連接了。經(jīng)常用于SSL,建立一個SSL連接,需要交換SSL密鑰,當啟用持久性連接時,只需要做一次驗證即可。
? 顯然LVS持久連接的定義也就知道了:某一個周期(時間段)之內(nèi),來自于同一個用戶的請求,都轉(zhuǎn)向同一個RS。
?1.2.?持久連接模板:
? 當使用LVS持久連接時,分發(fā)器使用一個連接跟蹤(持久連接模板)使所有來自同一客戶端的連接被標記為相同的real?server;而當客戶端向集群服務(wù)器請求連接時,分發(fā)器(director)會查看持久連接模板,是否real?server已經(jīng)被標記為這種類型的連接,若沒有,director重新為每次連接創(chuàng)建一個正常連接的跟蹤記錄表(持久連接模板)。
?1.3.?持久連接超時:
我們可以在director使用ipvsadm為持久連接模板規(guī)定一個具體的時間段,如果記數(shù)器歸零,而且是激活狀態(tài)(客戶端一直在和real?server通信),不管你設(shè)置的持久連接時長是多少,記錄器將會重置一個默認值2分鐘,并開始計數(shù),下降為零后,再開始再一下重置。
?1.4.?持久連接類型:
PCC(persistent?client?connections):持久的客戶端連接,也叫做零端口的持久連接;
?#ipvsadm?-A?192.168.0.10:0?-s?rr?-p?[6000](只需將VIP的端口設(shè)為0接口表示所有端口都持久)?
PPC(persistent?port?connections):持久的端口連接;
一個持久端口連接到同一個real?server強制所有從客戶端計算機的連接為一個特定的目的端口號
?# ipvsadm -A 192.168.0.10:80 -s rr -p [6000]?
PNMPP(Persistent?Netfilter?Marked?Packet?persistence):基于防火墻標記的持久性連接;
這種防火墻標記僅在數(shù)據(jù)包在分發(fā)器上時有影響,數(shù)據(jù)包一旦離開director,就不再被標記。?
把多個目標端口標記為同一個標記mark(1~99),持久后保證可以cookie、session可用。
?#?ipvsadm?-A?-f?mark?-s?rr?-p?[600]
?#?ipvsadm?-a?-f?mark?-r?192.168.10.12?-g
?#?ipvsadm?-a?-f?mark?-r?192.168.10.13?-g
?案例示意拓撲:
?
二、手動配制示例
?2.1.?實驗環(huán)境:
案例1.?持久的端口連接ppc
director配置:
ipvsadm??-A -t?192.168.2.254:0?-s?rr?-p
ipvsadm??-a -t?192.168.2.254:0?-t?192.168.2.10?-g? //-g:使用網(wǎng)關(guān)直接路由
ipvsadm??-a -t?192.168.2.254:0?-t?192.168.2.10?-g
service ipvsadm save ? ?//保存配置
service ipvsadm start ? //啟動服務(wù)
server1與server2同:
[root@smb?html]#?echo?1?>??/proc/sys/net/ipv4/conf/lo/arp_ignore
[root@smb?html]#?echo?2?>?/proc/sys/net/ipv4/conf/lo/arp_announce
[root@smb?html]#?echo?1?>??/proc/sys/net/ipv4/conf/all/arp_ignore
[root@smb?html]#?echo?2?>?/proc/sys/net/ipv4/conf/all/arp_announce
#?ifconfig?lo:0?192.168.2.254?netmask?255.255.255.255 ?配置回環(huán)接口
#?route?add?-host?192.168.2.254?dev?lo:0? ? ? ? 添加默認路由
案例2:持久的客戶端連接ppc
#ipvsadm -C ? ? ? ? ? ? ? ??//清除ipvsadm規(guī)則表
#ipvsadm?-At?192.168.2.254:80?-s?rr?-p?1800 ?//80端口
#?ipvsadm?-at?192.168.2.254:80?-r?192.168.2.20?-g
#?ipvsadm?-At?192.168.2.254:3306?-s?rr?-p?1800
#?ipvsadm?-at?192.168.2.254:3306?-r?192.168.2.10?-g
#?ipvsadm?-At?192.168.2.254:22?-s?rr?-p ? ? ?//22端口,使用默認時間300秒
#?ipvsadm?-at?192.168.2.254:22?-r?192.168.2.10?-g?? //-g:使用網(wǎng)關(guān)直接路由
#?ipvsadm?-At?192.168.2.254:80?-s?rr?-p
#?ipvsadm?-at?192.168.2.254:80?-r?192.168.2.20?-g
#service ipvsadm save ? ?//保存配置
#service ipvsadm start ? ?//啟動服務(wù)
?
可通過ipvsadm?-Ln來查看策略匹配情況,
?
案例3:?ftp持久連接,防火墻標記
#ipvsadm?-C?????//清除ipvsadm規(guī)則表
#iptables -t mangle -A PREROUTING -d 192.168.2.254?-p?tcp?--dport?21 -j MARK?--set-mark?10
#iptables -t mangle -A PREROUTING -d 192.168.2.254?-p tcp --dport 10000:20000 -j MARK?--set-mark?10?
#ipvsadm -A?-f 10?-s?rr?-p?1800
#ipvsadm?-a?-f?10?-r?192.168.2.10?-g? //-g:使用網(wǎng)關(guān)直接路由
#ipvsadm?-a?-f?10?-r?192.168.2.20?-g?
#service ipvsadm save ? ?//保存配置
#service ipvsadm start ? ?//啟動服務(wù)
?
案例4:http與https
#iptables -t?mangle -A?PREROUTING?-d?192.168.2.254?-p?tcp?--dport?80?-j MARK?--set-mark?80
#iptables -t?mangle -A?PREROUTING?-d?192.168.2.254?-p?tcp?--dport?443?-j MARK?--set-mark?80
#ipvsadm -C
#?ipvsadm -A?-f 80?-s?rr?-p?300?????//修改時間為300秒
#?ipvsadm?-a?-f?80?-r?192.168.2.10?-g??//-g:使用網(wǎng)關(guān)直接路由
#?ipvsadm?-a?-f?80?-r?192.168.2.20?-g
#service ipvsadm save ? ? ? ? ? ? ? ?//保存配置
#service ipvsadm start ? ? ? ? ? ? ? ?//啟動服務(wù)
?
對于ca的配置略,
案例5:
Real Server: 10.109.134.203 /10.109.134.204
[root@localhost ~]# chkconfig telnet on
[root@localhost ~]# service xinetd restart
Stopping xinetd: ? ? ? ? ? ? ?[ ?OK ?]
Starting xinetd: ? ? ? ? ? ? ?[ ?OK ?]
[root@localhost ~]# netstat -tnlp?
...
tcp ? ? 0 ? ? ?0 :::80 ? ? ?:::* ? ? LISTEN ? ? ?7983/httpd
tcp ? ? 0 ? ? ?0 :::22 ? ? ?:::* ? ? LISTEN ? ? ?1501/sshd
tcp ? ? 0 ? ? ?0 :::23 ? ? ?:::* ? ? LISTEN ? ? ?8350/xinetd
...
[root@localhost ~]# useradd hadoop
[root@localhost ~]# passwd hadoop
DR:10.109.134.210
[root@localhost ~]# ipvsadm -A -t 10.109.134.210:23 -s rr
[root@localhost ~]# ipvsadm -a -t 10.109.134.210:23 -r 10.109.134.203 -g -w 2
[root@localhost ~]# ipvsadm -a -t 10.109.134.210:23 -r 10.109.134.204 -g -w 1
[root@localhost ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
? -> RemoteAddress:Port ? ? ?Forward Weight ActiveConn InActConn
TCP ?10.109.134.210:http rr persistent 900
? -> 10.109.134.204:http ? ?Route ? 3 ? 0 ? ? 0 ? ? ? ??
? -> 10.109.134.203:http ? ?Route ? 1 ? 0 ? ? 0 ? ? ? ??
TCP ?10.109.134.210:telnet rr persistent 3600
? -> 10.109.134.204:telnet ? Route ? 1 ? 1 ? ? 0 ? ? ? ??
? -> 10.109.134.203:telnet ? Route ? 2 ? 1 ? ? 0 ??
若要實現(xiàn)持久連接
[root@localhost ~]# ipvsadm -E -t 10.109.134.210:23 -s rr -p 3600
若要實現(xiàn)多服務(wù)的標記持久連接
ipvsadm -C?
iptables -t mangle -A PREROUTING -d 10.109.134.210 -i eth0 -p tcp --dport 80 -j mark 6
iptables -t mangle -A PREROUTING -d 10.109.134.210 -i eth0 -p tcp --dport 23 -j mark 6
ipvsadm -A -f 6 -s rr -p 600
ipvsadm -a -f 6 -r 10.109.134.203 -g -w 2
ipvsadm -a -f 6 -r 10.109.134.204 -g -w 1
---end---
轉(zhuǎn)載于:https://blog.51cto.com/wangfx/1959195
總結(jié)
以上是生活随笔為你收集整理的linux集群系列(4) --- LVS之负载均衡集群 --- 持久连接的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 批处理修改IP
- 下一篇: 【Django】入门篇:项目创建(pyc