ipvsadm命令用法
1.1 問題
準(zhǔn)備一臺(tái)Linux服務(wù)器碴萧,安裝ipvsadm軟件包乙嘀,練習(xí)使用ipvsadm命令,實(shí)現(xiàn)如下功能:
- 使用命令添加基于TCP一些的集群服務(wù)
- 在集群中添加若干臺(tái)后端真實(shí)服務(wù)器
- 實(shí)現(xiàn)同一客戶端訪問破喻,調(diào)度器分配固定服務(wù)器
- 會(huì)使用ipvsadm實(shí)現(xiàn)規(guī)則的增虎谢、刪、改
- 保存ipvsadm規(guī)則
1.2 方案
安裝ipvsadm軟件包曹质,關(guān)于ipvsadm的用法可以參考man ipvsadm資料婴噩。
常用ipvsadm命令語法格式如表-1及表-2所示。
表-1 ipvsadm命令選項(xiàng)
表-2 ipvsadm語法案例
1.3 步驟
實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行羽德。
步驟一:使用命令增几莽、刪、改LVS集群規(guī)則
1)創(chuàng)建LVS虛擬集群服務(wù)器(算法為加權(quán)輪詢:wrr)
[root@proxy ~]# yum -y install ipvsadm
[root@proxy ~]# ipvsadm -A -t 192.168.4.5:80 -s wrr
[root@proxy ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.4.5:80 wrr
2)為集群添加若干real server
[root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100
[root@proxy ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.4.5:80 wrr
-> 192.168.2.100:80 router 1 0 0
[root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200 -m -w 2
[root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.201 -m -w 3
[root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.202 -m -w 4
3)修改集群服務(wù)器設(shè)置(修改調(diào)度器算法宅静,將加權(quán)輪詢修改為輪詢)
[root@proxy ~]# ipvsadm -E -t 192.168.4.5:80 -s rr
[root@proxy ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.4.5:80 rr
-> 192.168.2.100:80 router 1 0 0
-> 192.168.2.200:80 masq 2 0 0
-> 192.168.2.201:80 masq 2 0 0
-> 192.168.2.202:80 masq 1 0 0
4)修改read server(使用-g選項(xiàng)章蚣,將模式改為DR模式)
[root@proxy ~]# ipvsadm -e -t 192.168.4.5:80 -r 192.168.2.202 -g
5)查看LVS狀態(tài)
[root@proxy ~]# ipvsadm -Ln
6)創(chuàng)建另一個(gè)集群(算法為最少連接算法;使用-m選項(xiàng)姨夹,設(shè)置工作模式為NAT模式)
[root@proxy ~]# ipvsadm -A -t 192.168.4.5:3306 -s lc
[root@proxy ~]# ipvsadm -a -t 192.168.4.5:3306 -r 192.168.2.100 -m
[root@proxy ~]# ipvsadm -a -t 192.168.4.5:3306 -r 192.168.2.200 -m
7)永久保存所有規(guī)則(非必須的操作)
[root@proxy ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
注意:永久規(guī)則需要確保ipvsadm服務(wù)為開機(jī)啟動(dòng)服務(wù)才可以纤垂。
(systemctl enable ipvsadm)。
8)清空所有規(guī)則
[root@proxy ~]# ipvsadm -C
部署LVS-NAT集群
2.1 問題
使用LVS實(shí)現(xiàn)NAT模式的集群調(diào)度服務(wù)器磷账,為用戶提供Web服務(wù):
- 集群對(duì)外公網(wǎng)IP地址為192.168.4.5
- 調(diào)度器內(nèi)網(wǎng)IP地址為192.168.2.5
- 真實(shí)Web服務(wù)器地址分別為192.168.2.100峭沦、192.168.2.200
- 使用加權(quán)輪詢調(diào)度算法,真實(shí)服務(wù)器權(quán)重任意
2.2 方案
實(shí)驗(yàn)拓?fù)浣Y(jié)構(gòu)主機(jī)配置細(xì)節(jié)如表-3所示逃糟,注意下面的網(wǎng)卡名稱僅為參考吼鱼,不能照抄。
表-3
使用4臺(tái)虛擬機(jī)绰咽,1臺(tái)作為Director調(diào)度器菇肃、2臺(tái)作為Real Server、1臺(tái)客戶端取募,拓?fù)浣Y(jié)構(gòu)如圖-1所示琐谤,注意:web1和web2必須配置網(wǎng)關(guān)地址。
圖-1
2.3 步驟
實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行矛辕。
步驟一:配置基礎(chǔ)環(huán)境
1)設(shè)置Web服務(wù)器
[root@web1 ~]# yum -y install httpd #安裝軟件
[root@web1 ~]# echo "192.168.2.100" > /var/www/html/index.html #創(chuàng)建網(wǎng)頁文件
[root@web1 ~]# firewall-cmd --set-default-zone=trusted #設(shè)置防火墻
[root@web1 ~]# setenforce 0
[root@web1 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@web2 ~]# yum -y install httpd #安裝軟件
[root@web2 ~]# echo "192.168.2.200" > /var/www/html/index.html #創(chuàng)建網(wǎng)頁文件
[root@web2 ~]# firewall-cmd --set-default-zone=trusted #設(shè)置防火墻
[root@web2 ~]# setenforce 0
[root@web2 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
2)啟動(dòng)Web服務(wù)器軟件
[root@web1 ~]# systemctl restart httpd
[root@web2 ~]# systemctl restart httpd
如何驗(yàn)證?
完成后可以使用proxy主機(jī)測(cè)試下是否可以訪問web1和web2
[root@proxy ~]# curl http://192.168.2.100
[root@proxy ~]# curl http://192.168.2.200
3)配置網(wǎng)關(guān)付魔,將web1和web2的網(wǎng)關(guān)設(shè)置為192.168.2.5(不能照抄網(wǎng)卡名稱)
如果有4網(wǎng)段的IP聊品,則臨時(shí)將該網(wǎng)卡關(guān)閉nmcli con down 網(wǎng)卡名稱
[root@web1 ~]# nmcli connection modify eth1 \
ipv4.method manual ipv4.gateway 192.168.2.5
#備注:網(wǎng)卡名稱不能照抄,需要自己查看下2.100的網(wǎng)卡名稱
[root@web1 ~]# nmcli connection up eth1
[root@web1 ~]# ip route show #查看默認(rèn)網(wǎng)關(guān)
default via 192.168.2.5 dev eth1 #提示:這里default后面的IP就是默認(rèn)網(wǎng)關(guān)
#英語詞匯:default(默認(rèn),預(yù)設(shè)值)
… …
[root@web2 ~]# nmcli connection modify eth1 \
ipv4.method manual ipv4.gateway 192.168.2.5
#備注:網(wǎng)卡名稱不能照抄,需要自己查看下2.200的網(wǎng)卡名稱
[root@web2 ~]# nmcli connection up eth1
[root@web2 ~]# ip route show #查看默認(rèn)網(wǎng)關(guān)几苍,default后面的IP就是默認(rèn)網(wǎng)關(guān)
為什么需要配置網(wǎng)關(guān)翻屈?
實(shí)驗(yàn)拓?fù)淙鐖D-2所示。
圖-2
為了方便下面所有的IP都采用簡(jiǎn)寫,如4.10代表192.168.4.10妻坝,2.100代表192.168.2.100伸眶。
英語詞匯:source(src)代表源地址惊窖,destination(dest或dst)代表目標(biāo)地址。
LVS采用的是路由器的NAT通訊原理厘贼!通訊流程如下:
1.客戶端發(fā)送請(qǐng)求數(shù)據(jù)包(src:4.10,dst:4.5)
2.數(shù)據(jù)包被發(fā)送給LVS調(diào)度器界酒,調(diào)度器做NAT地址轉(zhuǎn)換(外網(wǎng)轉(zhuǎn)內(nèi)網(wǎng),內(nèi)網(wǎng)轉(zhuǎn)外網(wǎng))
a)數(shù)據(jù)包被修改為src:4.10,dst:2.100(dst也有可能被修改為2.200嘴秸,隨機(jī)的)
b)LVS調(diào)度器把數(shù)據(jù)包轉(zhuǎn)發(fā)給后端真正的web服務(wù)器(2.100)
3.web1收到數(shù)據(jù)包開始回應(yīng)數(shù)據(jù)(rsc:2.100毁欣,dst:4.10)
備注:誰訪問就給誰回復(fù)數(shù)據(jù),因?yàn)閟rc是4.10岳掐,所以應(yīng)該給4.10回應(yīng)數(shù)據(jù)凭疮!
但是,自己是2.100串述,對(duì)方是4.10执解,跨網(wǎng)段默認(rèn)無法通訊,如何解決纲酗?衰腌??
Web1和web2都需要設(shè)置默認(rèn)網(wǎng)關(guān)(也就是192.168.2.5)
4)web1想發(fā)送數(shù)據(jù)給4.10但是又無法與其通訊耕姊,所以數(shù)據(jù)包被交給默認(rèn)網(wǎng)關(guān)
5)LVS調(diào)度器(軟路由)收到后端web發(fā)送過來的數(shù)據(jù)后桶唐,再次做NAT地址轉(zhuǎn)換
a)數(shù)據(jù)包被修改為src:4.5,dst:4.10
b)LVS調(diào)度器把數(shù)據(jù)包轉(zhuǎn)發(fā)給客戶端主機(jī)
6)客戶端接收網(wǎng)頁數(shù)據(jù)內(nèi)容
注意:客戶端訪問的是4.5,最后是4.5給客戶端回復(fù)的網(wǎng)頁數(shù)據(jù)\岳肌S仍蟆!规脸!
步驟二:部署LVS-NAT模式調(diào)度器
1)確認(rèn)調(diào)度器的路由轉(zhuǎn)發(fā)功能(如果已經(jīng)開啟坯约,可以忽略)
[root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward #開啟路由轉(zhuǎn)發(fā),臨時(shí)有效
[root@proxy ~]# cat /proc/sys/net/ipv4/ip_forward #查看效果
1
[root@proxy ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
#修改配置文件莫鸭,設(shè)置永久規(guī)則闹丐,英語詞匯:forward(轉(zhuǎn)寄,轉(zhuǎn)發(fā)被因,發(fā)送卿拴,向前)
2)創(chuàng)建集群服務(wù)器
[root@proxy ~]# yum -y install ipvsadm
[root@proxy ~]# ipvsadm -A -t 192.168.4.5:80 -s wrr
# -A(add)是創(chuàng)建添加虛擬服務(wù)器集群
# -t(tcp)后面指定集群VIP的地址和端口,協(xié)議是tcp協(xié)議
# -s后面指定調(diào)度算法梨与,如rr(輪詢)堕花、wrr(加權(quán)輪詢)捣炬、lc(最少連接)雕擂、wlc(加權(quán)最少連接)等等
3)添加真實(shí)服務(wù)器
[root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100 -w 1 -m
[root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200 -w 1 -m
#-a(add)往虛擬服務(wù)器集群中添加后端真實(shí)服務(wù)器IP,指定往-t 192.168.4.5:80這個(gè)集群中添加
#-r(real)后面跟后端真實(shí)服務(wù)器的IP和端口,這里不寫端口默認(rèn)是80端口
#-w(weight)指定服務(wù)器的權(quán)重员串,權(quán)重越大被訪問的次數(shù)越多,英語詞匯:weight(重量壕曼,分量)
#-m指定集群工作模式為NAT模式苏研,如果是-g則代表使用DR模式,-i代表TUN模式
4)查看規(guī)則列表(L是list查看腮郊,n是number數(shù)字格式顯示)
[root@proxy ~]# ipvsadm -Ln
5)設(shè)置防火墻摹蘑,SELinux
[root@proxy ~]# firewall-cmd --set-default-zone=trusted
[root@proxy ~]# setenforce 0
[root@proxy ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
步驟三:客戶端測(cè)試
客戶端client主機(jī)使用curl命令反復(fù)連接http://192.168.4.5,查看訪問的頁面是否會(huì)輪詢到不同的后端真實(shí)服務(wù)器伴榔。
部署LVS-DR集群
3.1 問題
使用LVS實(shí)現(xiàn)DR模式的集群調(diào)度服務(wù)器纹蝴,為用戶提供Web服務(wù):
- 客戶端IP地址為192.168.4.10
- LVS調(diào)度器VIP地址為192.168.4.15
- LVS調(diào)度器DIP地址設(shè)置為192.168.4.5
- 真實(shí)Web服務(wù)器地址分別為192.168.4.100、192.168.4.200
- 使用加權(quán)輪詢調(diào)度算法踪少,權(quán)重可以任意
說明:
CIP是客戶端的IP地址塘安;
VIP是對(duì)客戶端提供服務(wù)的IP地址;
RIP是后端服務(wù)器的真實(shí)IP地址援奢;
DIP是調(diào)度器與后端服務(wù)器通信的IP地址(VIP必須配置在虛擬接口)兼犯。
3.2 方案
使用4臺(tái)虛擬機(jī),1臺(tái)作為客戶端集漾、1臺(tái)作為Director調(diào)度器切黔、2臺(tái)作為Real Server,拓?fù)浣Y(jié)構(gòu)如圖-3所示具篇。實(shí)驗(yàn)拓?fù)浣Y(jié)構(gòu)主機(jī)配置細(xì)節(jié)如表-4所示纬霞。
圖-3
表-4
為什么本實(shí)驗(yàn)中web1和web2要采用4網(wǎng)段IP?如圖-4所示驱显。
圖-4
LVS NAT實(shí)驗(yàn)請(qǐng)求數(shù)據(jù)包從LVS調(diào)度器進(jìn)诗芜,web的相應(yīng)數(shù)據(jù)包也從LVS調(diào)度器出,那么LVS調(diào)度器就需要承載所有數(shù)據(jù)的壓力埃疫,會(huì)成為整個(gè)集群的瓶頸7帧!
本實(shí)驗(yàn)LVS DR模式的核心需求是希望web1和web2可以不走調(diào)度器返回?cái)?shù)據(jù)栓霜!
但是如圖-4所示翠桦,如果web1和web2采用2.100和2.200這樣2網(wǎng)段的IP,又不希望給4.10回復(fù)數(shù)據(jù)走LVS調(diào)度器(也就是不給web1和web2配置默認(rèn)網(wǎng)關(guān)為2.5)胳蛮,最后是無法跨網(wǎng)段通訊的O铡!仅炊!
怎么辦斗幼?核心需求是希望web1和web2可以直接返回?cái)?shù)據(jù)給客戶端!C鳌孟岛!
想讓web1和web2可以直接返回?cái)?shù)據(jù)給客戶端,可以給web1和web2配置4網(wǎng)段IP督勺,如圖-5所示渠羞。
圖-5
這樣就可以了嗎?答案是否定的V前А4窝!網(wǎng)絡(luò)中的基本原則是A訪問B瓷叫,必須是B返回?cái)?shù)據(jù)給A屯吊,現(xiàn)在4.10訪問4.5,最終4.100給4.10返回網(wǎng)頁數(shù)據(jù)摹菠,所有數(shù)據(jù)包都會(huì)被丟棄:行丁!次氨!
那怎么辦呢蔽介?地址欺騙!
圖-6
如圖-6所示煮寡,我們給web1和web2再額外添加一個(gè)偽裝的IP地址虹蓄,這個(gè)IP地址因?yàn)槭怯脕碜龅刂菲垓_用的,假的就是假的幸撕,不能暴露(必須配置在lo本地回環(huán)網(wǎng)卡上面)薇组。
lo網(wǎng)卡上面默認(rèn)配置的IP是127.0.0.1。
如果你家里有非法的1000W坐儿,你會(huì)天天出去跟別人說你有1000W嗎?
3.3 步驟
實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行律胀。
說明:
CIP是客戶端的IP地址;
VIP是對(duì)客戶端提供服務(wù)的IP地址(本案例為192.168.4.15)挑童;
VIP必須配置在虛擬接口(目的是防止地址沖突)累铅;
RIP是后端服務(wù)器的真實(shí)IP地址(本案例為192.168.4.100和192.168.4.200);
DIP是調(diào)度器與后端服務(wù)器通信的IP地址(本案例為192.168.4.5)站叼。
步驟一:配置實(shí)驗(yàn)網(wǎng)絡(luò)環(huán)境
1)設(shè)置Proxy服務(wù)器的VIP和DIP
注意:為了防止沖突娃兽,VIP必須要配置在網(wǎng)卡的虛擬接口,網(wǎng)卡名稱不能照抄>⌒āM洞ⅰ!
[root@proxy ~]# cd /etc/sysconfig/network-scripts/
[root@proxy ~]# cp ifcfg-eth0 ifcfg-eth0:0
[root@proxy ~]# vim ifcfg-eth0:0
TYPE=Ethernet
#網(wǎng)卡類型為:以太網(wǎng)卡
BOOTPROTO=none
#none手動(dòng)配置IP阔馋,或者dhcp自動(dòng)配置IP
NAME=eth0:0
#網(wǎng)卡名稱
DEVICE=eth0:0
#設(shè)備名稱
ONBOOT=yes
#開機(jī)時(shí)是否自動(dòng)激活該網(wǎng)卡
IPADDR=192.168.4.15
#IP地址
PREFIX=24
#子網(wǎng)掩碼
[root@proxy ~]# systemctl restart network #重啟網(wǎng)絡(luò)服務(wù)
[root@proxy ~]# ip a s #會(huì)看到一個(gè)網(wǎng)卡下面有兩個(gè)IP地址
常見問題:RHEL7和Centos7系統(tǒng)中有兩個(gè)管理網(wǎng)絡(luò)的服務(wù)玛荞,有可能沖突?
解決方法: 關(guān)閉NetworkManager服務(wù)后重啟network即可呕寝。
2)設(shè)置Web1服務(wù)器網(wǎng)絡(luò)參數(shù)(不能照抄網(wǎng)卡名稱)
[root@web1 ~]# nmcli connection modify eth0 ipv4.method manual \
ipv4.addresses 192.168.4.100/24 connection.autoconnect yes
[root@web1 ~]# nmcli connection up eth0
接下來給web1配置VIP地址勋眯。
注意:這里的子網(wǎng)掩碼必須是32(也就是全255),網(wǎng)絡(luò)地址與IP地址一樣,廣播地址與IP地址也一樣客蹋。
[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 ~]# cp ifcfg-lo ifcfg-lo:0
[root@web1 ~]# vim ifcfg-lo:0
DEVICE=lo:0
#設(shè)備名稱
IPADDR=192.168.4.15
#IP地址
NETMASK=255.255.255.255
#子網(wǎng)掩碼
NETWORK=192.168.4.15
#網(wǎng)絡(luò)地址
BROADCAST=192.168.4.15
#廣播地址
ONBOOT=yes
#開機(jī)是否激活本網(wǎng)卡
NAME=lo:0
#網(wǎng)卡名稱
防止地址沖突的問題:
這里因?yàn)閣eb1也配置與調(diào)度器一樣的VIP地址塞蹭,默認(rèn)肯定會(huì)出現(xiàn)地址沖突;
sysctl.conf文件寫入這下面四行的主要目的就是訪問192.168.4.15的數(shù)據(jù)包讶坯,只有調(diào)度器會(huì)響應(yīng)番电,其他主機(jī)都不做任何響應(yīng),這樣防止地址沖突的問題辆琅。
[root@web1 ~]# vim /etc/sysctl.conf
#文件末尾手動(dòng)寫入如下4行內(nèi)容,英語詞匯:ignore(忽略漱办、忽視),announce(宣告婉烟、廣播通知)
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
#當(dāng)有arp廣播問誰是192.168.4.15時(shí)娩井,本機(jī)忽略該ARP廣播,不做任何回應(yīng)(防止進(jìn)站沖突)
#本機(jī)不要向外宣告自己的lo回環(huán)地址是192.168.4.15(防止出站沖突)
[root@web1 ~]# sysctl -p
重啟網(wǎng)絡(luò)服務(wù)
[root@web1 ~]# systemctl restart network #重啟網(wǎng)絡(luò)服務(wù)
[root@web1 ~]# ip a s #會(huì)看到一個(gè)網(wǎng)卡下面有兩個(gè)IP地址
常見錯(cuò)誤:如果重啟網(wǎng)絡(luò)后未正確配置lo:0似袁,有可能是NetworkManager和network服務(wù)有沖突撞牢,關(guān)閉NetworkManager后重啟network即可。(非必須的操作)
[root@web1 ~]# systemctl stop NetworkManager
[root@web1 ~]# systemctl restart network
3)設(shè)置Web2服務(wù)器網(wǎng)絡(luò)參數(shù)(不能照抄網(wǎng)卡名稱)
[root@web2 ~]# nmcli connection modify eth0 ipv4.method manual \
ipv4.addresses 192.168.4.200/24 connection.autoconnect yes
[root@web2 ~]# nmcli connection up eth0
接下來給web2配置VIP地址
注意:這里的子網(wǎng)掩碼必須是32(也就是全255)叔营,網(wǎng)絡(luò)地址與IP地址一樣屋彪,廣播地址與IP地址也一樣。
[root@web2 ~]# cd /etc/sysconfig/network-scripts/
[root@web2 ~]# cp ifcfg-lo ifcfg-lo:0
[root@web2 ~]# vim ifcfg-lo:0
DEVICE=lo:0
#設(shè)備名稱
IPADDR=192.168.4.15
#IP地址
NETMASK=255.255.255.255
#子網(wǎng)掩碼
NETWORK=192.168.4.15
#網(wǎng)絡(luò)地址
BROADCAST=192.168.4.15
#廣播地址
ONBOOT=yes
#開機(jī)是否激活該網(wǎng)卡
NAME=lo:0
#網(wǎng)卡名稱
防止地址沖突的問題:
這里因?yàn)閣eb1也配置與調(diào)度器一樣的VIP地址绒尊,默認(rèn)肯定會(huì)出現(xiàn)地址沖突畜挥;
sysctl.conf文件寫入這下面四行的主要目的就是訪問192.168.4.15的數(shù)據(jù)包,只有調(diào)度器會(huì)響應(yīng)婴谱,其他主機(jī)都不做任何響應(yīng)蟹但,這樣防止地址沖突的問題。
[root@web2 ~]# vim /etc/sysctl.conf
#手動(dòng)寫入如下4行內(nèi)容谭羔,英語詞匯:ignore(忽略华糖、忽視),announce(宣告瘟裸、廣播通知)
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
#當(dāng)有arp廣播問誰是192.168.4.15時(shí)客叉,本機(jī)忽略該ARP廣播,不做任何回應(yīng)(防止進(jìn)站沖突)
#本機(jī)不要向外宣告自己的lo回環(huán)地址是192.168.4.15(防止出站沖突)
[root@web2 ~]# sysctl -p
重啟網(wǎng)絡(luò)服務(wù)
[root@web2 ~]# systemctl restart network #重啟網(wǎng)絡(luò)服務(wù)
[root@web2 ~]# ip a s #會(huì)看到一個(gè)網(wǎng)卡下面有兩個(gè)IP地址
常見錯(cuò)誤:如果重啟網(wǎng)絡(luò)后未正確配置lo:0话告,有可能是NetworkManager和network服務(wù)有沖突兼搏,關(guān)閉NetworkManager后重啟network即可。(非必須的操作)
[root@web1 ~]# systemctl stop NetworkManager
[root@web1 ~]# systemctl restart network
步驟二:proxy調(diào)度器安裝軟件并部署LVS-DR模式調(diào)度器
1)安裝軟件(如果已經(jīng)安裝沙郭,此步驟可以忽略)
[root@proxy ~]# yum -y install ipvsadm
2)清理之前實(shí)驗(yàn)的規(guī)則佛呻,創(chuàng)建新的集群服務(wù)器規(guī)則
[root@proxy ~]# ipvsadm -C #清空所有規(guī)則
[root@proxy ~]# ipvsadm -A -t 192.168.4.15:80 -s wrr
## -A(add)是創(chuàng)建添加虛擬服務(wù)器集群
# -t(tcp)后面指定集群VIP的地址和端口,協(xié)議是tcp協(xié)議
# -s后面指定調(diào)度算法病线,如rr(輪詢)吓著、wrr(加權(quán)輪詢)鲤嫡、lc(最少連接)、wlc(加權(quán)最少連接)等等
3)添加真實(shí)服務(wù)器(-g參數(shù)設(shè)置LVS工作模式為DR模式绑莺,-w設(shè)置權(quán)重)
[root@proxy ~]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.100 -g -w 1
[root@proxy ~]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.200 -g -w 1
#-a(add)往虛擬服務(wù)器集群中添加后端真實(shí)服務(wù)器IP,指定往-t 192.168.4.15:80這個(gè)集群中添加
#-r(real)后面跟后端真實(shí)服務(wù)器的IP和端口泛范,這里不寫端口默認(rèn)是80端口
#-w(weight)指定服務(wù)器的權(quán)重,權(quán)重越大被訪問的次數(shù)越多紊撕,英語詞匯:weight(重量,分量)
#-m指定集群工作模式為NAT模式赡突,如果是-g則代表使用DR模式对扶,-i代表TUN模式
4)查看規(guī)則列表(L代表list查看規(guī)則,n代表number數(shù)字格式顯示)
[root@proxy ~]# ipvsadm -Ln
TCP 192.168.4.15:80 wrr
-> 192.168.4.100:80 Route 1 0 0
-> 192.168.4.200:80 Route 1 0 0
步驟三:客戶端測(cè)試
客戶端使用curl命令反復(fù)連接http://192.168.4.15惭缰,查看訪問的頁面是否會(huì)輪詢到不同的后端真實(shí)服務(wù)器浪南。
注意:本實(shí)驗(yàn)不可以在proxy主機(jī)(LVS調(diào)度器)使用curl訪問網(wǎng)頁驗(yàn)證!J堋络凿!
為什么?請(qǐng)思考圖-7示意圖昂羡。
圖-7
擴(kuò)展知識(shí):默認(rèn)LVS不帶健康檢查功能絮记,需要自己手動(dòng)編寫動(dòng)態(tài)檢測(cè)腳本,實(shí)現(xiàn)該功能:(參考腳本如下虐先,僅供參考)
[root@proxy ~]# vim check.sh
#!/bin/bash
VIP=192.168.4.15:80
RIP1=192.168.4.100
RIP2=192.168.4.200
while :
do
for IP in $RIP1 $RIP2
do
curl -s http://$IP &>/dev/null
if [ $? -eq 0 ];then
ipvsadm -Ln | grep -q $IP || ipvsadm -a -t $VIP -r $IP
else
ipvsadm -Ln | grep -q $IP && ipvsadm -d -t $VIP -r $IP
fi
done
sleep 1
done
附加思維導(dǎo)圖怨愤,如圖-7所示: