##(1)VS/TUN的簡(jiǎn)介##
1.ip隧道技術(shù):
是路由器把一種網(wǎng)絡(luò)層協(xié)議封裝到另一個(gè)協(xié)議中以跨過(guò)網(wǎng)絡(luò)傳送到另一個(gè)路由器的處理過(guò)程。隧道技術(shù)是一種數(shù)據(jù)包封裝技術(shù),它是將原始ip包(其報(bào)頭包含原始發(fā)送者和最終目的地)封裝在另一個(gè)數(shù)據(jù)包(稱為封裝的ip包)的數(shù)據(jù)凈荷中的傳輸。
2.TUN模式的優(yōu)點(diǎn):
采用NAT模式時(shí),由于請(qǐng)求和響應(yīng)的報(bào)文必須通過(guò)調(diào)度器LB地址重寫(xiě),當(dāng)客戶請(qǐng)求越來(lái)越多時(shí),調(diào)度器處理能力將成為瓶頸。為了解決這個(gè)問(wèn)題,調(diào)度器把請(qǐng)求數(shù)據(jù)包的報(bào)文通過(guò)ip隧道轉(zhuǎn)發(fā)到真實(shí)的服務(wù)器RS。RS將響應(yīng)處理后的數(shù)據(jù)包直接返回給客戶端。這樣調(diào)度器就只處理請(qǐng)求入站報(bào)文,由于一般網(wǎng)絡(luò)服務(wù)應(yīng)答數(shù)據(jù)比請(qǐng)求報(bào)文大很多,采用VS/TUN模式后,集群系統(tǒng)的最大吞吐量可以提高10倍。
3.TUN和NAT的差異:
VS/TUN和VS/NAT的工作模式不同的是,它在LB和RS之間的傳輸不用改寫(xiě)ip地址。而是把客戶請(qǐng)求包封裝在一個(gè)ip tunnel里面。然后發(fā)送給RS節(jié)點(diǎn)服務(wù)器,節(jié)點(diǎn)服務(wù)器接收到之后解開(kāi)ip tunnel后,進(jìn)行響應(yīng)處理,,并且直接將響應(yīng)包通過(guò)自己的外網(wǎng)地址發(fā)送給客戶端,不用經(jīng)過(guò)LB服務(wù)器。
##(2)VS/TUN原理##
1.客戶發(fā)送請(qǐng)求,目標(biāo)地址VIP,請(qǐng)求數(shù)據(jù)包發(fā)送到LB。
2.LB接收到客戶請(qǐng)求包,進(jìn)行ip tunnel封裝。在原有的報(bào)頭加上ip tunnel的報(bào)頭。然后發(fā)送出去。
3.RS節(jié)點(diǎn)服務(wù)器根據(jù)iptunnel報(bào)頭信息(此時(shí)就是一種邏輯上的隱形隧道,只有LB和RS之間懂)受到請(qǐng)求包后,然后解開(kāi)ip tunnel的報(bào)頭信息,得到客戶的請(qǐng)求包并進(jìn)行響應(yīng)處理。
4.響應(yīng)處理完畢之后,RS服務(wù)器使用自己的公網(wǎng)線路,將響應(yīng)數(shù)據(jù)包發(fā)送給客戶端。源ip地址還是VIP地址(RS節(jié)點(diǎn)服務(wù)器需要在本地回環(huán)接口配置VIP)
##(3)LVS-TUN模式下的負(fù)載均衡##
1.實(shí)驗(yàn)環(huán)境:
server1(LB):172.25.67.1
server2(RS):172.25.67.2
server3(RS):172.25.67.3
VIP:172.25.67.100
2.在server1中:
1)配置網(wǎng)絡(luò)
ip:172.25.67.1
modprobe ipip #導(dǎo)入模塊
ip link set up tunl0 #添加虛擬網(wǎng)卡
ip addr add 172.25.67.100 dev tunl0 #為虛擬網(wǎng)卡設(shè)置ip
2)配置yum倉(cāng)庫(kù)
vim /etc/yum.repos.d/rhel-source.repo
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.67.250/rhel6.5/LoadBalancer
gpgcheck=0
3)設(shè)定策略
yum install ipvsadm -y
/etc/init.d/ipvsadm start #打開(kāi)服務(wù)
ipvsadm -A -t 172.25.67.100:80 -s rr
ipvsadm -a -t 172.25.67.100:80 -r 172.25.67.2:80 -i
ipvsadm -a -t 172.25.67.100:80 -r 172.25.67.3:80 -i
/etc/init.d/ipvsadm save #保存策略
ipvsadm -ln #查看策略
3.在server2中:
1)配置網(wǎng)絡(luò):
ip:172.25.67.2
modprobe ipip #打開(kāi)隧道
ip link set up tunl0 #設(shè)定虛擬網(wǎng)卡
ip addr add 172.25.67.100/32 dev tunl0 #為虛擬網(wǎng)卡設(shè)定ip
2)安裝arptables_jf
yum install arptables_jf -y #安裝服務(wù)
arptables -F #清空策略
arptables -A IN -d 172.25.67.100 -j DROP #禁止172.25.67.100直接訪問(wèn)
arptables -A OUT -s 172.25.67.100 -j mangle –mangle-ip-s 172.25.67.2 #將響應(yīng)包要以vip的身份返回給客戶端,否則客戶端不能接收到響應(yīng)包
/etc/init.d/arptables_jf save #保存策略
/etc/init.d/arptables_jf restart #重啟服務(wù)
arptables -L #查看策略
3)修改rp_filter:
sysctl -w net.ipv4.conf.tunl0.rp_filter=0
sysctl -a |grep rp_filter
為什么要修改這個(gè)參數(shù)呢?是因?yàn)椋?/p>
rp_filter參數(shù)用于控制系統(tǒng)是否開(kāi)啟對(duì)數(shù)據(jù)包源地址的校驗(yàn)。
有三個(gè)值,0、1、2,具體含義:
0:不開(kāi)啟源地址校驗(yàn)。
1:開(kāi)啟嚴(yán)格的反向路徑校驗(yàn)。對(duì)每個(gè)進(jìn)來(lái)的數(shù)據(jù)包,校驗(yàn)其反向路徑是否是最佳路徑。如果反向路徑不是最佳路徑,則直接丟棄該數(shù)據(jù)包。
2:開(kāi)啟松散的反向路徑校驗(yàn)。對(duì)每個(gè)進(jìn)來(lái)的數(shù)據(jù)包,校驗(yàn)其源地址是否可達(dá),即反向路徑是否能通(通過(guò)任意網(wǎng)口),如果反向路徑不同,則直接丟棄該數(shù)據(jù)包。
4)安裝httpd并且編寫(xiě)默認(rèn)發(fā)布文件:
yum install httpd -y #安裝httpd服務(wù)
/etc/init.d/httpd start #打開(kāi)httpd服務(wù)
vim /var/www/html/index.html #編輯發(fā)布文件
server2
/etc/init.d/httpd restart #重啟httpd
curl localhostm #查看發(fā)布文件是否生效
4.在server3中:
1)配置網(wǎng)絡(luò):
ip:172.25.67.3
modprobe ipip #打開(kāi)隧道
ip link set up tunl0 #設(shè)定虛擬網(wǎng)卡
ip addr add 172.25.67.100/32 dev tunl0 #為虛擬網(wǎng)卡設(shè)定ip
2)安裝arptables_jf
yum install arptables_jf -y #安裝服務(wù)
arptables -F #清空策略
arptables -A IN -d 172.25.67.100 -j DROP
arptables -A OUT -s 172.25.67.100 -j mangle –mangle-ip-s 172.25.67.3
/etc/init.d/arptables_jf save #保存策略
/etc/init.d/arptables_jf restart #重啟服務(wù)
arptables -L #查看策略
3)修改rp_filter:
sysctl -w net.ipv4.conf.tunl0.rp_filter=0
sysctl -a |grep rp_filter
4)安裝httpd并且編寫(xiě)默認(rèn)發(fā)布文件:
yum install httpd -y #安裝httpd服務(wù)
/etc/init.d/httpd start #打開(kāi)httpd服務(wù)
vim /var/www/html/index.html #編輯發(fā)布文件
server3
/etc/init.d/httpd restart #重啟httpd
curl localhostm #查看發(fā)布文件是否生效
5.測(cè)試:
在客戶端測(cè)試
ip:172.25.254.67
for i in {1..10};do curl 172.25.67.100;done