目錄
一、LVS-DR集群
1、LVS-DR 工作原理
2、數據包流向分析
3、LVS-DR 模式特點
二、直接路由模式(LVS-DR)
1、準備案例環境
2、配置負載調度器(101)
(1)配置虛擬IP 地址(VIP)
(2)配置負載分配策略
3、配置節點服務器(102/103)
(1)配置虛擬IP地址(VIP)
(2)調整proc 響應參數
(3)安裝httpd,創建測試網頁
4、測試LVS群集
一、LVS-DR集群
LVS-DR(Linux Virtual Server Director Server)工作模式,是生產環境中最常用的工作模式之一。
1、LVS-DR 工作原理
LVS-DR 模式,Director Server 作為群集的訪問入口,不作為網關使用,節點 Director Server 與 Real Server 需要在同一個網絡中,返回給客戶端的數據不需要經過 Director Server。為了響應對整個群集的訪問,DirectorServer 與 Real Server 都需要配置 VIP 地址。
2、數據包流向分析
以下為數據包流向分析步驟:
(1)客戶端發送請求到 Director Server,請求的數據報文(源 IP 是 CIP,目標IP 是 VIP) 到達內核空間。
(2)Director Server 和 Real Server 在同一個網絡中,數據通過二層數據鏈路層來傳輸。
(3)內核空間判斷數據包的目標IP是本機 VIP,此時 IPVS 比對數據包請求的服務是否是集群服務,是集群服務就重新封裝數據包。修改源MAC地址為Director Server 的 MAC 地址,修改目標 MAC 地址為 Real Server 的 MAC 地址,源 IP 地址與目標 IP地址沒有改變,然后將數據包發送給 Real Server。
(4)到達 Real Server 的請求報文的 MAC 地址是自身的 MAC 地址,就接收此報文。數據包重新封裝報文(源IP地址為VIP,目標IP為CIP),將響應報文通過 lo?接口傳送給物理網卡然后向外發出。
(5)Real Server 直接將響應報文傳送到客戶端。
3、LVS-DR 模式特點
- Director Server 和 Real Server 必須在同一個物理網絡中。
- Real Server 可以使用私有地址,也可以使用公網地址。如果使用公網地址可以通過互聯網對 RIP 進行直接訪問。
- 所有的請求報文經由 Director Server,但回復響應報文不能經過 Director Server。
- Real Server 的網關不允許指向 Director Server IP,即不允許數據包經d Director Server.
- Real Server 上的 lo 接口配置 VIP 的 IP 地址。
二、直接路由模式(LVS-DR)
1、準備案例環境
在 DR 模式的群集中,LVS 負載調度器作為群集的訪問入口,但不作為網關使用;服務器池中的所有節點都各自接入 Internet,發送給客戶機的 Web 響應數據包不需要經過 LVS 負載調度器。
這種方式入站、出站訪問數據被分別處理,因此LVS負載調度器和所有的節點服務器都需要配置 VIP地址,以便響應對整個群集的訪問。考慮到數據存儲的安全性,共享存儲設備會放在內部的專用網絡中。
主機 | 操作系統 | IP地址 | 應用 |
lvs(101) | openEuler 24.03 | ens160:192.168.10.101/24 ens160:0:192.168.10.172/24 | ipvsadm |
web1(102) | openEuler 24.03 | ens160:192.168.10.102/24 lo:0:192.168.10.172/32 | httpd |
web2(103) | openEuler 24.03 | ens160:192.168.10.103/24 lo:0:192.168.10.172/32 | httpd |
客戶機(105) | openEuler 24.03 | 192.168.10.105 |
注:LVS-DR也可以使用NFS共享功能,可在上一章的文章中查看,本文不再贅述
2、配置負載調度器(101)
(1)配置虛擬IP 地址(VIP)
采用虛接口的方式(ens160:0),為網卡ens33綁定VIP地址,以便響應群集訪問。
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens160 ifcfg-ens160:0vim ifcfg-ens160:0
NAME=ens160:0
DEVICE=ens160:0
IPADDR=192.168.10.172
nmcli c reload
nmcli c up ens160
(2)配置負載分配策略
ipvsadm -C #清除原有策略
ipvsadm -A -t 192.168.10.172:80 -s wrr
ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1
ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 2
ipvsadm-save -nipvsadm-save > /etc/sysconfig/ipvsadm #保存策略systemctl enable ipvsadm
3、配置節點服務器(102/103)
使用 DR 模式時,節點服務器也需要配置 VIP 地址,并調整內核的 ARP 響應參數以阻止更新 VIP 的 MAC 地址,避免發生沖突。除此以外,Web 服務的配置與 NAT 方式類似。
(1)配置虛擬IP地址(VIP)
在每個節點服務器,同樣需要具有 VIP 地址 192.168.10.172,但此地址僅用作發送 Web 響應數據包的源地址,并不需要監聽客戶機的訪問請求(改由調度器監聽并分發)。因此使用虛接口 lo:0 來承載 VIP 地址,并為本機添加一條路由記錄,將訪問 VIP 的數據限制在本地,以避免通信紊亂。
ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 dev lo
或
vim /etc/rc.local #在文件中添加
ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 dev lochmod +x /etc/rc.local #給權限
reboot #重啟
ifconfig #查看是否已有lo:0
(2)調整proc 響應參數
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2sysctl -p #重新加載sysctl.conf文件,查看是否有錯誤
(3)安裝httpd,創建測試網頁
dnf -y install httpdecho "test1/2" >/var/www/html/index.html #修改102/103的網頁內容
systemctl start httpd #啟動httpd服務程序
systemclt enable httpdsystemctl stop firewalld
setenforce 0
systemctl disable firewalld
4、測試LVS群集
[root@bogon ~]# curl 192.168.10.172
test1
[root@bogon ~]# curl 192.168.10.172
test2
[root@bogon ~]# curl 192.168.10.172
test2
[root@bogon ~]# curl 192.168.10.172
test1
[root@bogon ~]# curl 192.168.10.172
test2
[root@bogon ~]# curl 192.168.10.172
test2
然后可以在101負載調度器中,查看節點狀態觀察當前的負載分配情況。
[root@bogon ~]# 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.10.172:80 wrr-> 192.168.10.102:80 Route 1 0 6 -> 192.168.10.103:80 Route 2 0 10