wordpress文章可見(jiàn)隱藏內(nèi)容全網(wǎng)seo優(yōu)化電話
華子目錄
- `lvs-dr`(企業(yè)當(dāng)中最常用)
- dr模式數(shù)據(jù)邏輯
- dr模式數(shù)據(jù)傳輸過(guò)程
- dr模式的特點(diǎn)
- 實(shí)驗(yàn)拓?fù)?/li>
- 實(shí)驗(yàn)主機(jī)準(zhǔn)備
- 解決vip響應(yīng)問(wèn)題
- 限制響應(yīng)級(jí)別:`arp_ignore`
- 限制通告級(jí)別:`arp_announce`
- 實(shí)驗(yàn)步驟
- 1.`client`的`ip`設(shè)定
- 2.`router`上的`ip`設(shè)定
- 3.`router`開啟路由轉(zhuǎn)發(fā)功能
- 4.`lvs`主機(jī)中的`ip`設(shè)定
- 5.`webserver1`主機(jī)中的`ip`設(shè)定
- 6.`webserver2`主機(jī)中的`ip`設(shè)定
- 7.`RS`主機(jī)禁用`arp`響應(yīng)功能(讓其只有`lvs`進(jìn)行`響應(yīng)`)
- 8.`RS`上配置`web`服務(wù)
- 9.`RS`上啟動(dòng)`web`服務(wù)
- 10.安裝`lvs`軟件包`ipvsadm`并啟動(dòng)
- 11.設(shè)置`lvs`策略并保存
- 12.測(cè)試
lvs-dr
(企業(yè)當(dāng)中最常用)
DR
:Direct Routing
,直接路由
,LVS默認(rèn)模式
,應(yīng)用最廣泛
,通過(guò)為請(qǐng)求報(bào)文
重新封裝
一個(gè)MAC首部
進(jìn)行轉(zhuǎn)發(fā)
,源MAC
是DIP
所在的接口的MAC
,目標(biāo)MAC
是某挑選出
的RS
的RIP
所在接口的MAC地址
源IP/PORT
,以及目標(biāo)IP/PORT
均保持不變
dr模式數(shù)據(jù)邏輯
- 在
DR模式
中,RS
接收到訪問(wèn)請(qǐng)求
后不需要
回傳給VS調(diào)度器
,而是直接
把回傳數(shù)據(jù)
發(fā)送給client客戶端
,所以RS
和vs
上都要有vip
dr模式數(shù)據(jù)傳輸過(guò)程
客戶端
發(fā)送數(shù)據(jù)幀
給vs調(diào)度主機(jī)
,數(shù)據(jù)幀
中內(nèi)容
為客戶端IP+客戶端的MAC
+VIP+VIP的MAC
VS調(diào)度主機(jī)
接收到數(shù)據(jù)幀
后把數(shù)據(jù)幀
中的VIP的MAC
改為RS1的MAC
,此時(shí)數(shù)據(jù)幀
中的數(shù)據(jù)
為客戶端IP+客戶端的MAC
+VIP+RS1的MAC
RS1
收到數(shù)據(jù)包
后做出響應(yīng)回傳數(shù)據(jù)包
,響應(yīng)數(shù)據(jù)包
中的內(nèi)容
為VIP+RS1的MAC
+客戶端IP+客戶端IP的MAC
dr模式的特點(diǎn)
Director(vs調(diào)度器)
和各RS
都配置有VIP
- 確保
前端路由器
將目標(biāo)IP
為VIP
的請(qǐng)求報(bào)文
發(fā)往Director
RS
的RIP
可以使用私網(wǎng)地址
,也可以是公網(wǎng)地址
;RIP
與DIP
在同一IP網(wǎng)絡(luò)(中間不能加路由器)
RIP
的網(wǎng)關(guān)
不能指向DIP
,以確保響應(yīng)報(bào)文
不會(huì)經(jīng)由Director
。需要指向邊界路由
的內(nèi)網(wǎng)地址
RS
和Director
要在同一個(gè)物理網(wǎng)絡(luò)
請(qǐng)求報(bào)文
要經(jīng)由Director
,但響應(yīng)報(bào)文
不經(jīng)由Director
,而由RS
直接發(fā)往Client
不支持端口映射
(端口不能修改
)- 由于
dr模式
下源目ip
不變,只有二層mac
發(fā)生變化,所以vs
和rs
的端口
必須保持一致
RS
可使用大多數(shù)OS系統(tǒng)
- 在
RS
上修改內(nèi)核參數(shù)
以限制arp通告
及應(yīng)答級(jí)別
(使其只能接收,不能響應(yīng)
) vs
是知道rs
的主機(jī)網(wǎng)卡的mac
,所以vs
和rs
需要處于同一vlan
中,中間不能加路由器
實(shí)驗(yàn)拓?fù)?/h3>
內(nèi)網(wǎng)
由僅主機(jī)ip
負(fù)責(zé)通信
,vip
負(fù)責(zé)對(duì)外
client
和router
之間是互聯(lián)網(wǎng)
。由于實(shí)驗(yàn)環(huán)境有限
,為了讓client
訪問(wèn)到rs
上,我們讓client
的網(wǎng)關(guān)
指向router
的nat
,來(lái)模擬外網(wǎng)互通
。lvs
和rs
的網(wǎng)關(guān)
都指向router的僅主機(jī)(邊界路由器的內(nèi)網(wǎng)地址)
- 為了
簡(jiǎn)單配置
,對(duì)lo
網(wǎng)卡進(jìn)行設(shè)定(也可以對(duì)eth0
網(wǎng)卡設(shè)定),使其成為vip
實(shí)驗(yàn)主機(jī)準(zhǔn)備
- 準(zhǔn)備
5
臺(tái)機(jī)子,一臺(tái)client
,一臺(tái)router
,一臺(tái)lvs
,兩臺(tái)webserver
充當(dāng)RS
client
上一個(gè)nat
網(wǎng)卡router
上一個(gè)nat
網(wǎng)卡,一個(gè)僅主機(jī)
網(wǎng)卡lvs
上一個(gè)僅主機(jī)
網(wǎng)卡用于內(nèi)網(wǎng)通信
,lo
網(wǎng)卡用作vip
RS
上一個(gè)僅主機(jī)
網(wǎng)卡用于內(nèi)網(wǎng)通信
,lo
網(wǎng)卡用作vip
client
的網(wǎng)關(guān)
指向router
的nat
網(wǎng)卡,lvs,RS
的網(wǎng)關(guān)
指向router
的僅主機(jī)
網(wǎng)卡
主機(jī)準(zhǔn)備
client
上一個(gè)nat
網(wǎng)卡
router
上一個(gè)nat
網(wǎng)卡,一個(gè)僅主機(jī)
網(wǎng)卡
- 由于
router
的nat模式
和僅主機(jī)模式
的網(wǎng)卡
處于不同vlan
,兩個(gè)網(wǎng)卡要想通信
,就必須打開Linux內(nèi)核路由轉(zhuǎn)發(fā)功能
lvs
上一個(gè)僅主機(jī)
網(wǎng)卡用于內(nèi)網(wǎng)通信
,lo
網(wǎng)卡用作vip
RS
上一個(gè)僅主機(jī)
網(wǎng)卡用于內(nèi)網(wǎng)通信
,lo
網(wǎng)卡用作vip
解決vip響應(yīng)問(wèn)題
dr模型
中各主機(jī)
上均需要配置vip
,解決地址沖突
的方式有三種
:
- 在
前端網(wǎng)關(guān)
做靜態(tài)綁定
- 在
各RS
使用arptables
- 在
各RS
修改內(nèi)核參數(shù)
,來(lái)限制arp響應(yīng)
和通告
的級(jí)別
限制響應(yīng)級(jí)別:arp_ignore
0
:默認(rèn)值
,表示可使用本地任意接口
上配置的任意地址
進(jìn)行響應(yīng)
1
:僅在請(qǐng)求的目標(biāo)IP
配置在本地主機(jī)的接收到請(qǐng)求報(bào)文的接口上
時(shí),才給予響應(yīng)
限制通告級(jí)別:arp_announce
0
:默認(rèn)值
,把本機(jī)所有接口
的所有信息向每個(gè)接口
的網(wǎng)絡(luò)進(jìn)行通告
1
:盡量避免將接口信息
向非直接
連接網(wǎng)絡(luò)進(jìn)行通告
2
:必須避免
將接口信息
向非本網(wǎng)絡(luò)
進(jìn)行通告
實(shí)驗(yàn)步驟
1.client
的ip
設(shè)定
nat
網(wǎng)卡:172.25.254.10/24
- 網(wǎng)關(guān):
172.25.254.100/24
[root@client ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
uuid=3fe4f788-e5f3-4046-8a3e-6cdfb8098aab
type=ethernet
interface-name=eth0[ethernet][ipv4]
address=172.25.254.10/24,172.25.254.100
method=manual[ipv6]
addr-gen-mode=default
method=auto[proxy]
[root@client ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.25.254.100 0.0.0.0 UG 100 0 0 eth0
172.25.254.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
2.router
上的ip
設(shè)定
nat
網(wǎng)卡:172.25.254.100/24
僅主機(jī)
網(wǎng)卡:192.168.0.10/24
[root@router ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0[ethernet][ipv4]
address=172.25.254.100/24
method=manual[ipv6]
addr-gen-mode=default
method=auto[proxy]
[root@router ~]# cat /etc/NetworkManager/system-connections/eth1.nmconnection
[connection]
id=eth1
type=ethernet
interface-name=eth1[ethernet][ipv4]
address=192.168.0.10/24
method=manual[ipv6]
addr-gen-mode=default
method=auto[proxy]
3.router
開啟路由轉(zhuǎn)發(fā)功能
[root@router ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1 #在文件末尾添加
[root@router ~]# sysctl -p #加載
net.ipv4.ip_forward = 1
4.lvs
主機(jī)中的ip
設(shè)定
僅主機(jī)
網(wǎng)卡:192.168.0.200/24
lo
網(wǎng)卡設(shè)置為vip
:192.168.0.100/32
網(wǎng)關(guān)
指向:192.168.0.10/24
[root@lvs ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
uuid=3fe4f788-e5f3-4046-8a3e-6cdfb8098aab
type=ethernet
interface-name=eth0[ethernet][ipv4]
address=192.168.0.200/24,192.168.0.10
method=manual[ipv6]
addr-gen-mode=default
method=auto[proxy]
[root@lvs ~]# ip addr add 192.168.0.100/32 dev lo
[root@lvs ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet 192.168.0.100/32 scope global lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:35:a8:7c brd ff:ff:ff:ff:ff:ffaltname enp3s0altname ens160inet 192.168.0.200/24 brd 192.168.0.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet6 fe80::4e21:e4b4:36e:6d14/64 scope link noprefixroutevalid_lft forever preferred_lft forever
[root@lvs ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.10 0.0.0.0 UG 100 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
5.webserver1
主機(jī)中的ip
設(shè)定
僅主機(jī)
網(wǎng)卡:192.168.0.11/24
lo
網(wǎng)卡設(shè)置為vip
:192.168.0.100/32
網(wǎng)關(guān)
指向:192.168.0.10/24
[root@webserver1 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
uuid=3fe4f788-e5f3-4046-8a3e-6cdfb8098aab
type=ethernet
interface-name=eth0[ethernet][ipv4]
address=192.168.0.11/24,192.168.0.10
method=manual[ipv6]
addr-gen-mode=default
method=auto[proxy]
[root@webserver1 ~]# ip addr add 192.168.0.100/32 dev lo
[root@webserver1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet 192.168.0.100/32 scope global lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:5f:4a:ff brd ff:ff:ff:ff:ff:ffaltname enp3s0altname ens160inet 192.168.0.11/24 brd 192.168.0.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet6 fe80::7baa:9520:639b:5e48/64 scope link noprefixroutevalid_lft forever preferred_lft forever
[root@webserver1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.10 0.0.0.0 UG 100 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
6.webserver2
主機(jī)中的ip
設(shè)定
僅主機(jī)
網(wǎng)卡:192.168.0.22/24
lo
網(wǎng)卡設(shè)置為vip
:192.168.0.100/32
網(wǎng)關(guān)
指向:192.168.0.10/24
[root@webserver2 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
uuid=3fe4f788-e5f3-4046-8a3e-6cdfb8098aab
type=ethernet
interface-name=eth0[ethernet][ipv4]
address=192.168.0.22/24,192.168.0.10
method=manual[ipv6]
addr-gen-mode=default
method=auto[proxy]
[root@webserver2 ~]# ip addr add 192.168.0.100/32 dev lo
[root@webserver2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet 192.168.0.100/32 scope global lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:ef:47:71 brd ff:ff:ff:ff:ff:ffaltname enp3s0altname ens160inet 192.168.0.22/24 brd 192.168.0.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet6 fe80::5db8:7a0d:b282:fdbf/64 scope link noprefixroutevalid_lft forever preferred_lft forever
[root@webserver2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.10 0.0.0.0 UG 100 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
7.RS
主機(jī)禁用arp
響應(yīng)功能(讓其只有lvs
進(jìn)行響應(yīng)
)
webserver1
上- 只有先修改
all
,才能再修改某一網(wǎng)卡
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
webserver2
上- 只有先修改
all
,才能再修改某一網(wǎng)卡
[root@webserver2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@webserver2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@webserver2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@webserver2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
- 以上配置為
臨時(shí)修改
,重啟無(wú)效
。若想永久生效,則需要在/etc/sysctl.conf
文件中添加
8.RS
上配置web
服務(wù)
webserver1
上
[root@webserver1 ~]# yum install httpd -y
[root@webserver1 ~]# echo webserver1 > /var/www/html/index.html
webserver2
上
[root@webserver2 ~]# yum install httpd -y
[root@webserver2 ~]# echo webserver2 > /var/www/html/index.html
9.RS
上啟動(dòng)web
服務(wù)
webserver1
上
[root@webserver1 ~]# systemctl enable --now httpd
webserver2
上
[root@webserver2 ~]# systemctl enable --now httpd
10.安裝lvs
軟件包ipvsadm
并啟動(dòng)
[root@lvs ~]# yum install ipvsadm -y
[root@lvs ~]# touch /etc/sysconfig/ipvsadm #在啟動(dòng)之前必須要有這個(gè)文件,否則啟動(dòng)失敗[root@lvs ~]# systemctl restart ipvsadm
[root@lvs ~]# systemctl enable ipvsadm
11.設(shè)置lvs
策略并保存
-g
表示dr模式
#當(dāng)訪問(wèn)vip的80端口時(shí),輪詢調(diào)度到RS的80端口上
[root@lvs ~]# ipvsadm -A -t 192.168.0.100:80 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.11:80 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.22:80 -g
[root@lvs ~]# 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.0.100:80 rr-> 192.168.0.11:80 Route 1 0 0-> 192.168.0.22:80 Route 1 0 0
[root@lvs ~]# ipvsadm -S > /etc/sysconfig/ipvsadm
[root@lvs ~]# cat /etc/sysconfig/ipvsadm
-A -t lvs:http -s rr
-a -t lvs:http -r 192.168.0.11:http -g -w 1
-a -t lvs:http -r 192.168.0.22:http -g -w 1
12.測(cè)試
client
端訪問(wèn)vip
[root@client ~]# curl 192.168.0.100
webserver2
[root@client ~]# curl 192.168.0.100
webserver1