目錄
一、配置準備
二、NET模式
修改LVS端
開啟路由
修改對內網卡 ens160
修改對外網卡 ens224
加載網卡配置文件
修改web1端
修改網卡信息
重啟網絡
檢測
配置web2
檢測
驗證配置是否正常
啟動nginx服務
驗證以上配置
添加lvs規則
驗證
三、DR模式 ?
修改lvs端
調整ARP參數
使用ens160承載
更改lvs規則
重啟ipvsadm服務
修改web1端
內核配置
配置虛擬IP
添加回環路由
?編輯
修改web2端
內核配置
配置虛擬IP
添加回環路由
驗證
?編輯四、tun模式
修改lvs端
添加并加載模塊
還原配置
添加lvs規則
修改web2端
還原設置
加載隧道模塊
配置隧道
ARP抑制
配置web1
還原配置
加載隧道模塊
配置隧道接口
ARP抑制
一、配置準備
對每臺主機都進行關閉防火墻、上下文等,減少阻礙
[root@everyone ~]# systemctl stop firewalld
[root@everyone ~]# setenforce 0
安裝服務
[root@everyone ~]# yum install -y ipvsadm ##安裝服務
[root@everyone ~]# yum install -y nginx ##檢測是否成功
向 web1 與 web2 中的nginx網頁添加內容,用來驗證是否成功
二、NET模式
將3臺主機網絡均改為VMnet1模式(模擬在同一內網中)
向lvs端添加一塊對外的網卡
修改LVS端
[root@lvs ~]# cd /etc/sysconfig/network-scripts/
[root@lvs network-scripts]# cp ifcfg-ens160 ifcfg-ens224
開啟路由
[root@lvs network-scripts]# sed -i 's/^net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf
[root@lvs network-scripts]# sysctl -p
修改對內網卡 ens160
[root@lvs network-scripts]# vim ifcfg-ens160
修改對外網卡 ens224
[root@lvs network-scripts]# vim ifgcf-ens224
加載網卡配置文件
[root@lvs network-scripts]# ifdown ens160 ; ifup ens160
[root@lvs network-scripts]# ifdown ens224 ; ifup ens224
[root@lvs network-scripts]# ip a
修改web1端
修改網卡信息
[root@web1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
重啟網絡
[root@web1 ~]# ifdown ens160 ; ifup ens160
檢測
配置web2
[root@web2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
[root@web2 ~]# ifdown ens160 ; ifup ens160
檢測
驗證配置是否正常
啟動nginx服務
驗證以上配置
添加lvs規則
[root@lvs network-scripts]# ipvsadm -C
[root@lvs network-scripts]# ipvsadm -Ln
[root@lvs network-scripts]# ipvsadm -A -t 192.168.11.35:80 -s rr
[root@lvs network-scripts]# ipvsadm -a -t 192.168.11.35:80 -r 192.168.100.1:80 -m
[root@lvs network-scripts]# ipvsadm -a -t 192.168.11.35:80 -r 192.168.100.2:80 -m
[root@lvs network-scripts]# ipvsadm -Ln
驗證
三、DR模式 ?
在nat基礎上進行配置
修改lvs端
刪除多余網卡
調整ARP參數
[root@lvs ~]# vim /etc/sysctl.conf
[root@lvs ~]# sysctl -p
使用ens160承載
也可寫入配置文件,永久保存
更改lvs規則
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -Ln
[root@lvs ~]# ipvsadm -A -t 192.168.100.101:80 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.100.101 -r 192.168.100.1:80 -g
[root@lvs ~]# ipvsadm -a -t 192.168.100.101 -r 192.168.100.2:80 -g
[root@lvs ~]# ipvsadm -Ln
重啟ipvsadm服務
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl restart ipvsadm
修改web1端
內核配置
[root@web1 ~]# 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=2[root@web1 ~]# sysctl -p1. net.ipv4.conf.all.arp_ignore:將其設置為1,表示Web節點將忽略針對本地IP地址的ARP請求。這樣可以防止Web節點響應其他節點的ARP請求,避免網絡混亂。
2. net.ipv4.conf.all.arp_announce:將其設置為2,表示Web節點將使用自己的IP地址作為發送ARP請求時的源地址。這樣可以確保響應的ARP請求返回到負載均衡器,而不是被路由丟棄。
3. net.ipv4.conf.default.arp_ignore和net.ipv4.conf.default.arp_announce:類似于前兩個參數,但僅適用于默認網絡接口。
4. net.ipv4.conf.lo.arp_ignore和net.ipv4.conf.lo.arp_announce:類似于前兩個參數,但僅適用于環回接口(lo)。在DR模式下,為了實現返回流量的負載均衡,環回接口也需要進行相應的配置。
配置虛擬IP
可配置文件,永久生效
[root@web1 ~]#ifconfig lo:0 192.168.100.101/32
添加回環路由
[root@web1 ~]# route add -host 192.168.100.101/32 dev lo:0
修改web2端
內核配置
[root@web2 ~]# 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=2[root@web2 ~]# sysctl.conf -p
配置虛擬IP
添加回環路由
[root@web2 ~]# route add -host 192.168.100.101/32 dev lo:0
驗證
四、tun模式
修改lvs端
添加并加載模塊
[root@lvs ~]# vim /etc/modules-load.d/ipvs.conf
[root@lvs ~]# modprobe -a $(cat /etc/modules-load.d/ipvs.conf)
還原配置
添加虛擬ip
添加lvs規則
root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -Ln
[root@lvs ~]# ipvsadm -A -t 192.168.11.1:80 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.11.1:80 -r 192.168.100.1:80 -i
[root@lvs ~]# ipvsadm -a -t 192.168.11.1:80 -r 192.168.100.2:80 -i
[root@lvs ~]# ipvsadm -Ln
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl restart ipvsadm
修改web2端
還原設置
加載隧道模塊
[root@web2 ~]# echo "ipip" > /etc/modules-load.d/ipip.conf
[root@web2 ~]# modprobe ipip
配置隧道
[root@web2 ~]# ip tunnel add tunl0 mode ipip remote 192.168.100.100 local $(hostname -I | awk '{print $1}')
[root@web2 ~]# ip link set tunl0 up
[root@web2 ~]# ip addr add 192.168.11.1/32 dev tunl0
[root@web2 ~]# ip a
ARP抑制
[root@web2 ~]# echo "1" > /etc/sysctl.d/arp_ignore.conf
[root@web2 ~]# echo "2" > /etc/sysctl.d/arp_announce.conf
[root@web2 ~]# sysctl -p /etc/sysctl.d/arp_announce.conf
[root@web2 ~]# sysctl -p /etc/sysctl.d/arp_ignore.conf
配置web1
還原配置
加載隧道模塊
[root@web1 ~]# echo "ipip" > /etc/modules-load.d/ipip.conf
[root@web1 ~]# modprobe ipip
配置隧道接口
[root@web1 ~]# ip tunnel add tunl0 mode ipip remote 192.168.100.100 local $(hostname -I | awk '{print $1}')
[root@web1 ~]# ip link set tunl0 up
[root@web1 ~]# ip addr add 192.168.11.1/32 dev tunl0
ARP抑制
[root@web1 ~]# echo "1" > /etc/sysctl.d/arp_ignore.conf
[root@web1 ~]# echo "2" > /etc/sysctl.d/arp_announce.conf
[root@web1 ~]# sysctl -p /etc/sysctl.d/arp_announce.conf
[root@web1 ~]# sysctl -p /etc/sysctl.d/arp_ignore.conf