LVS :Linux Virtual Server,負載調(diào)度器,集成內(nèi)核
官網(wǎng):http://www.linuxvirtualserver.org/
角色
VS :Virtual Server,負責(zé)調(diào)度
RS :Real Server,負責(zé)真正提供服務(wù)
vs集群類型中的術(shù)語:
VS:Virtual Server、Director、Dispatcher(調(diào)度器)、Load Balancer
RS:Real Server(lvs)、upstream server(nginx)(業(yè)務(wù)服務(wù)器)、backend、server(haproxy)
CIP:Client IP(客戶端)
VIP: Virtual serve IP VS服務(wù)器外網(wǎng)的IP
DIP: Director IP VS服務(wù)器內(nèi)網(wǎng)的IP
RIP: Real server IP 業(yè)務(wù)服務(wù)器的IP
訪問流程:CIP < -- > VIP == DIP < -- > RIP
工作原理:
LVS工作在OSI7層模型的第四層(傳輸層),在Linux工作在內(nèi)核空間中,所以并不受到socket套接字上線的影響,調(diào)度能力非常強大。
LVS通過在VS服務(wù)器中防火墻的INPUT上設(shè)置規(guī)則來實現(xiàn)客戶端請求的攔截和轉(zhuǎn)發(fā)。
VS服務(wù)器根據(jù)請求報文的目標(biāo)IP和協(xié)議及端口將其調(diào)度轉(zhuǎn)發(fā)至某RS服務(wù)器,根據(jù)調(diào)度算法來挑選RS服務(wù)器
lvs集群的類型:
lvs-nat :修改請求報文的目標(biāo)IP,多目標(biāo)IP的DNAT
lvs-dr :操縱封裝新的MAC地址
lvs-tun :在原請求IP報文之外新加一個IP首部
lvs-fullnat:修改請求報文的源和目標(biāo)IP,(現(xiàn)階段內(nèi)核不支持)
LVS模式詳解
LVS-NAT模式:
本質(zhì)是多目標(biāo)IP的DNAT,通過將請求報文中的目標(biāo)地址和目標(biāo)端口修改為某挑出的RS服務(wù)器的RIP和PORT實現(xiàn)轉(zhuǎn)發(fā)
1. RIP和DIP通常在同一個IP網(wǎng)絡(luò),推薦使用私網(wǎng)地址;RS的網(wǎng)關(guān)要指向DIP。
2. 請求報文和響應(yīng)報文都必須經(jīng)由Director(調(diào)度器)轉(zhuǎn)發(fā),但響應(yīng)報文一般較大,所以Director(調(diào)度器)易于成為系統(tǒng)瓶頸(轉(zhuǎn)發(fā)能力)
3. 支持端口映射,可修改請求報文的目標(biāo)Port
4. VS服務(wù)器必須是Linux系統(tǒng),RS服務(wù)器可以是任意OS系統(tǒng)
優(yōu)點:集群中的RS服務(wù)器可以使用任何支持TCP/IP操作系統(tǒng),只有VS調(diào)度器需要一個公網(wǎng)的IP地址,其他的RS服務(wù)器可以使用私有地IP地址。、
缺點:不適用于大型網(wǎng)路環(huán)境,由于請求報文和響應(yīng)報文都必須由調(diào)度器轉(zhuǎn)發(fā),當(dāng)后端RS服務(wù)器的數(shù)量達到20臺以上時,調(diào)度器就會成為整個網(wǎng)絡(luò)的瓶頸。

LVS-DR模式:
LVS-DR:Direct Routing,直接路由,LVS默認模式,應(yīng)用最廣泛,通過為請求報文重新封裝一個MAC首部進行轉(zhuǎn)發(fā),源MAC是DIP所在的接口的MAC,目標(biāo)MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標(biāo)IP/PORT均保持不變
Director(調(diào)度器)和各RS都配置有VIP
-
確保前端路由器將目標(biāo)IP為VIP的請求報文發(fā)往Director ,方法如下:
在前端網(wǎng)關(guān)做靜態(tài)綁定VIP和Director的MAC地址(不推薦) 在RS上使用arptables工具,禁止RS響應(yīng)arp廣播 arptables -A IN -d $VIP -j DROP arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP 在RS上修改內(nèi)核參數(shù)以限制arp通告及應(yīng)答級別 arp_announce(通告) 0 可以在任意接口向外發(fā)送所有IP的免費ARP 1 盡量避免發(fā)送所在接口之外IP的免費ARP 2 只向外發(fā)送所在接口的IP的免費ARP arp_ignore(忽略) 0 可以響應(yīng)所有配置的IP的ARP報文 1 只響應(yīng)從入接口IP的ARP報文 8 不響應(yīng)任何ARP請求2.RS的RIP可以使用私網(wǎng)地址,也可以是公網(wǎng)地址;RIP與DIP在同一IP網(wǎng)絡(luò);RIP的網(wǎng)關(guān)不能指向DIP,以確保響應(yīng)報文不會經(jīng)由Director(調(diào)度器)
3.RS和Director要在同一個物理網(wǎng)絡(luò)
4.請求報文要經(jīng)由Director,但響應(yīng)報文不經(jīng)由Director,而由RS直接發(fā)往Client
5.不支持端口映射(端口不能修?。?br> 6.RS可使用大多數(shù)OS系統(tǒng)
LVS-TUN模式
轉(zhuǎn)發(fā)方式:不修改請求報文的IP首部(源IP為CIP,目標(biāo)IP為VIP),而在原IP報文之外再封裝一個IP首部(源IP是DIP,目標(biāo)IP是RIP),將報文發(fā)往挑選出的目標(biāo)RS;RS直接響應(yīng)給客戶端(源IP是VIP,目標(biāo)IP是CIP)可以跨網(wǎng)絡(luò),可以不走來時的路由
1.DIP、VIP、RIP都應(yīng)該是公網(wǎng)地址,DIP、RIP也可以是私網(wǎng)IP
2.RS的網(wǎng)關(guān)不能,也不可能指向DIP
3.請求報文要經(jīng)由Director,但響應(yīng)不能經(jīng)由Director
4.不支持端口映射
5.RS的OS須支持隧道功能
LVS-FULLNAT模式
lvs-fullnat:通過同時修改請求報文的源IP地址和目標(biāo)IP地址進行轉(zhuǎn)發(fā)
CIP -- > DIP
VIP -- > RIP
1. VIP是公網(wǎng)地址RIP和DIP是私網(wǎng)地址,且通常不在同一IP網(wǎng)絡(luò),因此,RIP的網(wǎng)關(guān)一般不會指向DIP
2. RS收到的請求報文源地址是DIP,因此只需響應(yīng)給DIP;但Director還要將其發(fā)往Client
3. 請求和響應(yīng)報文都經(jīng)由Director
4. 支持端口映射;
注意:此類型kernel默認不支持
LVS工作模式總結(jié)
lvs-nat與lvs-fullnat :請求和響應(yīng)報文都經(jīng)由 Director
lvs-nat :RIP的網(wǎng)關(guān)要指向DIP
lvs-fullnat :RIP和DIP未必在同一IP網(wǎng)絡(luò),但要能通信
lvs-dr與lvs- tun :請求報文要經(jīng)由 Director,但響應(yīng)報文由 RS直接發(fā)往Client
lvs-dr :通過封裝新的MAC首部實現(xiàn),通過MAC網(wǎng)絡(luò)轉(zhuǎn)發(fā)
lvs-tun :通過在原IP報文外封裝新IP頭實現(xiàn)轉(zhuǎn)發(fā),支持遠距離通信
調(diào)度算法分為兩種:靜態(tài)方法和動態(tài)方法
靜態(tài)方法:僅根據(jù)算法本身進行調(diào)度,容易造成處理請求比例的不公平
RR :roundrobin 輪詢
WRR :Weighted RR 加權(quán)輪詢,根據(jù)RS服務(wù)器性能來決定各服務(wù)器處理請求的比例
SH :Source Hashing 實現(xiàn)session sticky 源IP地址hash;將來自于同一個IP地址的請求始終發(fā)往第一次挑中的RS,從而實現(xiàn)會話綁定
DH :Destination Hashing 目標(biāo)地址哈希,將發(fā)往同一個目標(biāo)地址的請求始終轉(zhuǎn)發(fā)至第一次選中的RS服務(wù)器,典型使用場景是正向代理緩存場景中的負載均衡服務(wù)器。如:寬帶運營商
動態(tài)方法:主要根據(jù)每RS當(dāng)前的負載狀態(tài)及調(diào)度算法進行調(diào)度,Overhead=value 較小的RS將被調(diào)度
activeconns:活動連接
inactiveconns:非活動連接
weight:權(quán)重
LC :least connections 根據(jù)服務(wù)器處理的請求數(shù),適用于長連接應(yīng)用
Overhead=activeconns*256+inactiveconnsWLC :Weighted LC 默認調(diào)度方法
Overhead=(activeconns*256+inactiveconns)/weightSED :Shortest Expection Delay初始連接高權(quán)重優(yōu)先
Overhead=(activeconns+1)*256/weightNQ :Never Queue 第一輪均勻分配,后續(xù)SED
LBLC :Locality-Based LC 動態(tài)的DH算法,針對第一次訪問有效。使用場景:根據(jù)負載狀態(tài)實現(xiàn)正向代理
LBLCR:LBLC with Replication 帶復(fù)制功能的LBLC解決LBLC負載不均衡問題,從負載重的復(fù)制到負載輕的RS
lvs管理工具: ipvsadm/ipvs
ipvsadm :用戶空間的命令行工具,規(guī)則管理器,用于管理集群服務(wù)及RealServer(RS服務(wù)器)
ipvs :工作于內(nèi)核空間netfilter的INPUT鉤子上的框架
ipvs:
grep -i -C 10 "ipvs" /boot/config-VERSIONRELEASE.x86_64 #可以看到內(nèi)核支持的算法
支持的協(xié)議:TCP、UDP、AH、ESP、AH_ESP、SCTP
ipvsadm:
程序包 :ipvsadm
Unit File : ipvsadm.service
主程序 :/usr/sbin/ipvsadm
規(guī)則保存工具:/usr/sbin/ipvsadm-save
規(guī)則重載工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsad
ipvsadm命令:
核心功能:
集群服務(wù)管理:增、刪、改
集群服務(wù)的RS管理:增、刪、改,小寫字母
查看
語法:
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]
管理集群服務(wù):
ipvsadm -A,--add-service:為ipvs虛擬服務(wù)器添加一個虛擬服務(wù),即添加一個需要被負載均衡的虛擬地址。虛擬地址需要是ip地址,端口號,協(xié)議的形式。
ipvsadm -E,--edit-service:修改
ipvsadm -D,--delete-service :-t|u|f service-address 刪除
ipvsadm -C,--clear :清空
ipvsadm -R,--restore : 重載,從標(biāo)準(zhǔn)輸入獲取ipvsadm命令。一般結(jié)合下邊的-S使用
ipvsadm -S,--save:[-n] 保存
增、改、刪
增加
ipvsadm -A -t|u|f service-address [-s scheduler] [-p [timeout]]
修改
ipvsadm -E -t|u|f service-address [-s scheduler] [-p [timeout]]
刪除:
ipvsadm -D -t|u|f service-address
-t,--tcp-service 指定虛擬服務(wù)為tcp服務(wù)。
-u,--udp-service 使用udp服務(wù),其他同上。
-f,--fwmark-service integer: 可以通過這個命令實現(xiàn)把不同的虛擬IP、端口整合成一個虛擬服務(wù),
可以讓虛擬服務(wù)器同時截獲處理去往多個不同地址端口的數(shù)據(jù)包。fwmark可以通過iptables命令指定。
如果用在ipv6需要加上-6
service-address[:port] 指定VIP的地址和端口 ,0表示任意端口。
[-s scheduler]:指定集群的調(diào)度算法,默認為wl,rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq
RS服務(wù)器
語法:ipvsadm -a|e -t|u|f service-address -r server-address [options] -g|m|i
ipvsadm -a,--add-service 添加一個RS服務(wù)器
ipvsadm -e,--edit-server 修改RS服務(wù)器
ipvsadm -d,--delete-server 刪除RS服務(wù)器
ipvsadm -L|l [options] 列出虛擬服務(wù)表中的所有虛擬服務(wù),可以指定VIP地址。
ipvsadm -Z [-t|u|f service-address] 清空計數(shù)器
--set tcp tcpfin udp 修改協(xié)議的超時時間。
--start-daemon state 設(shè)置虛擬服務(wù)器的備服務(wù)器,用來實現(xiàn)主備服務(wù)器冗余。注:該功能只支持ipv4
--stop-daemon 停止備服務(wù)器。
-r,--real-server 指定集群服務(wù)器地址,可以添加端口號。如果沒有指定端口號,默認使用虛擬地址的端口號。
-p, --persistent [timeout]:設(shè)置持久連接,這個模式可以使來自客戶的多個請求被送到同一個真實服務(wù)器。timeout 的默認值為360秒
-M, --netmask netmask:指定客戶地址的子網(wǎng)掩碼。用于將同屬一個子網(wǎng)的客戶的請求轉(zhuǎn)發(fā)到相同服務(wù)器
指定RS服務(wù)器所使用的模式。需要對每個RS服務(wù)器分別指定模式。
-g,--gatewaying :使用直接路由,DR模式,此模式是默認模式。
-i,--ipip :使用ipip隧道模式。tun模式
-m,--masquerading :使用NAT模式。
-w,--weight : 設(shè)置權(quán)重。權(quán)重是0~65535的整數(shù)。如果將某個真實服務(wù)器的權(quán)重設(shè)置為0,那么它不會收到新的連接,但是已有連接還會繼續(xù)維持。
-x, --u-threshold uthreshold:設(shè)置一個服務(wù)器可以維持的連接上限。0~65535。設(shè)置為0表示沒有上限
-y, --l-threshold lthreshold:設(shè)置一個服務(wù)器的連接下限。當(dāng)服務(wù)器的連接數(shù)低于此值的時候服務(wù)器才可以重新接收連接。如果此值未設(shè)置,則當(dāng)服務(wù)器的連接數(shù)連續(xù)三次低于uthreshold時服務(wù)器才可以接收到新的連接。
--mcast-interface interface :指定使用備服務(wù)器時候的廣播接口。
--syncid syncid :指定syncid 同樣用于主備服務(wù)器的同步。默認=255
--pe engine 備用持續(xù)服務(wù)器可能是sip,默認情況下不設(shè)置。
以下選項用于查看命令:
-c,--connection 列出當(dāng)前的連接。
--timeout 列出超時
--daemon 輸出守護進程信息
--stats 統(tǒng)計信息
--rate 傳輸速率
--thresholds 列出閾值
--persistent-conn 持續(xù)連接
--sort 把列表排序。
--nosort 不排序
-n,--numeric 不對ip地址進行解析
--exact 顯示精確數(shù)值
-6 如果fwmark用的是ipv6地址需要指定此選項。
使用 --rate選項是顯示速率信息
CPS (current connection rate) 每秒連接數(shù)
InPPS (current in packet rate) 每秒的入包個數(shù)
OutPPS (current out packet rate) 每秒的出包個數(shù)
InBPS (current in byte rate) 每秒入流量(字節(jié))
OutBPS (current out byte rate) 每秒入流量(字節(jié))
使用 --stats選項是統(tǒng)計自該條轉(zhuǎn)發(fā)規(guī)則生效以來的包
Conns (connections scheduled) 已經(jīng)轉(zhuǎn)發(fā)過的連接數(shù)
InPkts (incoming packets) 入包個數(shù)
OutPkts (outgoing packets) 出包個數(shù)
InBytes (incoming bytes) 入流量(字節(jié))
OutBytes (outgoing bytes) 出流量(字節(jié))
ipvs規(guī)則:/proc/net/ip_vs,ipvsadm 設(shè)置好的規(guī)則臨時存放在這個文件中,重啟失效。
ipvs連接連接數(shù):/proc/net/ip_vs_conn
保存配置:建議保存至/etc/sysconfig/ipvsadm
ipvsadm-save > /PATH/TO/IPVSADM_FILE
ipvsadm -S > /PATH/TO/IPVSADM_FILE
systemctl stop ipvsadm.service
重載:
ipvsadm-restore < /PATH/FROM/IPVSADM_FILE
ipvsadm -R < /PATH/FROM/IPVSADM_FILE
systemctl restart ipvsadm.service
實驗:本次實驗只演示NAT模式和DR模式
lvs-nat
環(huán)境
VS服務(wù)器:CentOS 7.3 1臺
RS服務(wù)器:CentOS 6.9 2臺
CentOS 6.9 RS1
CentOS 6.9-1 RS2
客戶端 :CentOS 6.9 1臺
CetnOS 6.9-2
VIP:172.16.253.63
DIP:192.168.166.130
RIP1:192.168.166.129
RIP2:192.168.166.132
客戶端:172.16.253.36
設(shè)計要點:
(1) RIP與DIP在同一IP網(wǎng)絡(luò), RIP的網(wǎng)關(guān)要指向DIP
(2) 支持端口映射
(3) Director要打開核心轉(zhuǎn)發(fā)功能
VS服務(wù)器配置,下面的一些參數(shù)請看上面的選項介紹。
[root@CentOS7.3 ~]#yum -y install ipvsadm #安裝ipvsadm管理工具
[root@CentOS7.3 ~]#ipvsadm -A -t 172.16.253.63:80 -s rr #添加一個集群服務(wù),服務(wù)端口tcp的80,采用rr輪詢算法。
[root@CentOS7.3 ~]#ipvsadm -Ln #查看本機的lvs服務(wù)
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.253.63:80 rr #添加完成
[root@CentOS7.3 ~]#ipvsadm -a -t 172.16.253.63:80 -r 192.168.166.129 -m #添加一臺RS服務(wù)器,使用NAT模式
[root@CentOS7.3 ~]#ipvsadm -a -t 172.16.253.63:80 -r 192.168.166.131 -m #添加一臺RS服務(wù)器,使用NAT模式
[root@CentOS7.3 ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.253.63:80 rr
-> 192.168.166.129:80 Masq 1 0 0 #添加完成,添加的兩臺RS服務(wù)器都可以看到
-> 192.168.166.131:80 Masq 1 0 0
打開VS服務(wù)器的路由轉(zhuǎn)發(fā)功能,使其可以轉(zhuǎn)發(fā)數(shù)據(jù)包。
[root@CentOS7.3 ~]#sysctl -w net.ipv4.ip_forward=1 #臨時開啟
net.ipv4.ip_forward = 1
[root@CentOS7.3 ~]#vim /etc/sysctl.conf #打開這個文件把 net.ipv4.ip_forward = 1 寫在里面永久開啟
[root@CentOS7.3 ~]#sysctl -p #執(zhí)行這條命令從文件中讀取參數(shù)
net.ipv4.ip_forward = 1
RS1服務(wù)器配置
[root@CentOS6.9 ~]#yum -y install httpd #RS1安裝httpd服務(wù)
[root@CentOS6.9 ~]#service httpd start #啟動httpd服務(wù)
[root@CentOS6.9 ~]#ss -ntl #查看監(jiān)聽的端口
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :::80 :::* #80端口已經(jīng)監(jiān)聽
LISTEN 0 128 :::22 :::*
LISTEN 0 128 *:22 *:*
[root@CentOS6.9 ~]#echo Web1 > /var/www/html/index.html #寫一個測試頁面
[root@CentOS6.9 ~]#curl 192.168.166.129 #本機訪問,測試
Web1
[root@CentOS6.9 ~]#iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT #添加防火墻策略允許訪問80端口
RS2服務(wù)器配置和RS1基本相同
[root@CentOS6.9-1 ~]#echo Web2 > /var/www/html/index.html
[root@CentOS6.9-1 ~]#curl 192.168.166.131
Web2
客戶端測試
[root@CentOS6.9-2 ~]#curl 172.16.253.63
Web1
[root@CentOS6.9-2 ~]#curl 172.16.253.63
web2
查看訪問集群服務(wù)的統(tǒng)計數(shù)據(jù)
[root@CentOS7.3 ~]#ipvsadm -L --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP CentOS7.3:http 120 514 402 37357 42204
-> 192.168.166.129:http 60 271 244 21316 25429
-> 192.168.166.131:http 60 243 158 16041 16775
修改算法為wrr(帶權(quán)重的輪詢算法)
[root@CentOS7.3 ~]#ipvsadm -E -t 172.16.253.63:80 -s wrr #修改為wrr算法
[root@CentOS7.3 ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.253.63:80 wrr #修改成功
-> 192.168.166.129:80 Masq 1 0 0
-> 192.168.166.131:80 Masq 1 0 0
為RS服務(wù)器設(shè)置權(quán)重
[root@CentOS7.3 ~]#ipvsadm -e -t 172.16.253.63:80 -r 192.168.166.129 -m -w 2 #修改RS1的權(quán)重為2,RS2不修改
[root@CentOS7.3 ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.253.63:80 wrr
-> 192.168.166.129:80 Masq 2 0 0 #RS1的權(quán)重已被修改為2
-> 192.168.166.131:80 Masq 1 0 0 #RS2的權(quán)重還為默認值1
客戶端測試

上圖可以看到Web1和Web2的比例2比1。權(quán)重已經(jīng)生效。
DR模式
lvs-dr:
dr模型中,各主機上均需要配置VIP,解決地址沖突的方式有三種:
(1) 在前端網(wǎng)關(guān)做靜態(tài)綁定
(2) 在各RS使用 arptables
(3) 在各RS修改內(nèi)核參數(shù),來限制arp響應(yīng)和通告的級別
限制響應(yīng)級別:arp_ignore
0:默認值,表示可使用本地任意接口上配置的任意地址進行響應(yīng)
1: 僅在請求的目標(biāo)IP配置在本地主機的接收到請求報文的接口上時,才給予響應(yīng)
限制通告級別:arp_announce
0:默認值,把本機所有接口的所有信息向每個接口的網(wǎng)絡(luò)進行通告
1:盡量避免將接口信息向非直接連接網(wǎng)絡(luò)進行通告
2:必須避免將接口信息向非本網(wǎng)絡(luò)進行通告
/proc/sys/net/ipv4/conf/ #所有網(wǎng)卡的設(shè)置都在這個目錄下
ikernel-doc #這些文件由這個軟件包生成
實驗環(huán)境
環(huán)境
VS服務(wù)器:CentOS 7.3 1臺
RS服務(wù)器:CentOS 6.9 2臺
CentOS 6.9 RS1
CentOS 6.9-1 RS2
網(wǎng)關(guān): CentOS 6.9 一臺
CentOS 6.9.-2
客戶端:CentOS 7.3 1臺
CetnOS 7.3-1
VIP:172.16.253.63
DIP:192.168.166.130
RIP1:192.168.166.129
RIP2:192.168.166.132
網(wǎng)關(guān)內(nèi)網(wǎng)IP:172.168.253.36(VS服務(wù)器的網(wǎng)關(guān))、192.168.166.100(RS服務(wù)器的網(wǎng)關(guān))
網(wǎng)關(guān)外網(wǎng)IP:100.0.0.100
客戶端:100.0.0.6,客戶機的網(wǎng)關(guān)指向 100.0.0.100
網(wǎng)關(guān)配置
[root@CentOS6.9-2 ~]#vim /etc/sysctl.conf #把這個文件中的net.ipv4.ip_forward = 1參數(shù)設(shè)置為1開啟轉(zhuǎn)發(fā)功能
[root@CentOS6.9-2 ~]#sysctl -p #重讀配置文件
[root@CentOS6.9-2 ~]#iptables -F #清除防火墻規(guī)則
一塊網(wǎng)卡上面配置多個IP地址
[root@CentOS6.9-2 ~]#cd /etc/sysconfig-network-scripts/
[root@CentOS6.9-2 network-scripts]#cp -a ifcfg-eth0 ifcfg-eth0:1 #復(fù)制eth0的網(wǎng)卡配置文件,改名的eth0:1
[root@CentOS6.9-2 network-scripts]#vim ifcfg-eth0:1 #配置文件的格式和eth0相同
DEVICE="eth0:1" #這里寫配置文件的名字,一定要寫對否則無法啟動網(wǎng)卡
BOOTPROTO="static"
IPV6INIT="yes"
MTU="1500"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=192.168.166.100 #這里寫IP地址
PREFIX=24 #子網(wǎng)
GATEWAY=192.168.166.100 #網(wǎng)關(guān)
DNS=192.168.166.100 #DNS
配置VS服務(wù)器,VS可以把VIP和DIP設(shè)置在同一塊網(wǎng)卡上面,多個IP綁定在一塊網(wǎng)卡上請看上面。
[root@CentOS7.3 network-scripts]#ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.166.130 netmask 255.255.255.0 broadcast 192.168.166.255
inet6 fe80::50fe:a3f3:83a0:d38a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b9:7d:cb txqueuelen 1000 (Ethernet)
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.253.63 netmask 255.255.0.0 broadcast 172.16.255.255
ether 00:0c:29:b9:7d:cb txqueuelen 1000 (Ethernet)
配置
[root@CentOS7.3 ~]#ipvsadm -A -t 172.16.253.63:80 -s wrr
[root@CentOS7.3 ~]#ipvsadm -a -t 172.16.253.63:80 -r 192.168.166.129 -g -w 2 #DR模式這里把 -m 換成 -g,其他的和NAT模式一樣
[root@CentOS7.3 ~]#ipvsadm -a -t 172.16.253.63:80 -r 192.168.166.131 -g -w 6
[root@CentOS7.3 ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.253.63:80 wrr
-> 192.168.166.129:80 Route 2 0 0
-> 192.168.166.131:80 Route 6 0 0
配置RS1,把DIP的網(wǎng)關(guān)設(shè)置成路由器內(nèi)網(wǎng)IP。Web配置和前面相同,
[root@CentOS6.9 ~]#ip a a 172.16.253.63/32 dev lo #在本機回環(huán)網(wǎng)卡上面設(shè)置一個臨時IP地址,如果設(shè)置永久IP地址請寫配置文件
[root@CentOS6.9 ~]#ip a show lo #查看配置
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet 172.16.253.63/32 scope global lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
[root@CentOS6.9 ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore #修改響應(yīng)等級
[root@CentOS6.9 ~]#echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@CentOS6.9 ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce #限制通告
[root@CentOS6.9 ~]#echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
RS2的配置和RS1相同
客戶機測試
