LVS DR模式实验
2026/5/14 18:30:04 网站建设 项目流程

ensp + vmware workstation模拟实验环境

实验拓扑

IP地址规划

接口IP地址网关虚拟IP
Client-192.168.10.20/24192.168.10.1
Virtual Server外网123.1.1.100/24123.1.1.1与物理接口相同
DIP172.16.1.101/24-
Real Server1RIP1172.16.1.21/24172.16.1.1
lo123.1.1.100/32
Real Server2RIP2172.16.1.22/24172.16.1.1
lo123.1.1.100/32
Real Server3RIP3172.16.1.23/24172.16.1.1
lo123.1.1.100/32

virtual server即调度器在收到client的请求后,更改目标MAC为实际real server的MAC,real server收到virtual server转发过来的请求后,以源IP为VIP直接响应该请求,无需像route模式一样由virtaul server中转,提高效率。

注意:本实验中模拟了公网IP地址,测试时需要把能连外网的网卡临时禁用。若不想禁用,需要添加一条路由,route add 123.1.1.0 mask 255.255.255.0 192.168.10.1

一、在windows中添加loopback网卡

打开设备管理器devmgmt.msc

添加完成后打开网络连接管理界面ncpa.cpl,可以看到刚添加的网卡,根据需要进行重命名。

loopback1的IP地址配置为192.168.10.20/24,loopback2和loopback3的IP地址暂不配置

添加完成后重启计算机,否则ensp识别不到

二、编辑vmware网络配置

在虚拟网络编辑器里将刚添加的三个loopback接口添加进来

三、设置虚拟机网卡

virtaul-server添加两块网卡,桥接到vmnet12和13

real-server添加一块网卡,桥接到vmnet13 三台real-server配置相同

四、配置ENSP,打通网络

4.1 拓扑绘制

添加三朵云,右击设置

按上面步骤依次设置三朵云

4.2 地址规划

4.3 路由配置

R1配置

#
sysname R1
#
interface GigabitEthernet0/0/0
ip address 12.1.1.1 255.255.255.252
ospf network-type p2p
#
interface GigabitEthernet0/0/1
ip address 192.168.10.1 255.255.255.0
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 12.1.1.1 0.0.0.0
network 192.168.10.1 0.0.0.0
#

R2配置

#
sysname R2
#
acl number 2000
rule 5 permit source 172.16.1.0 0.0.0.255
#
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.252
ospf network-type p2p
nat outbound 2000 interface LoopBack 10
#
interface GigabitEthernet0/0/1
ip address 123.1.1.1 255.255.255.0
#
interface GigabitEthernet0/0/2
ip address 172.16.1.1 255.255.255.0
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
#
interface LoopBack10
ip address 10.10.10.10 255.255.255.255
#
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 10.10.10.10 0.0.0.0
network 12.1.1.2 0.0.0.0
network 123.1.1.1 0.0.0.0
#

五、LVS配置

5.1 virtual server设置

[root@virtserv ~]# cat /etc/redhat-release
Rocky Linux release 9.5 (Blue Onyx)

设置IP地址

注意:需要调整内网网卡不做为默认路由,否则产生无法ping通的问题。尤其在测试时执行

nmcli connection down ens160

关闭ens160网卡后,默认路由就走ens192,再启动ens160仍不会恢复,导致网络问题。

关闭防火墙

禁用selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

测试网络是否通

开启路由转发功能

echo 'net.ipv4.ip_forward = 1' > /etc/sysctl.conf

sysctl -p

安装ipvsadm包

dnf -y install ipvsadm

ipvsadm规则配置

ipvsadm -A -t 123.1.1.100:80 -s wrr

ipvsadm -a -t 123.1.1.100:80 -r 172.16.1.21:80 -g -w 1

ipvsadm -a -t 123.1.1.100:80 -r 172.16.1.22:80 -g -w 1

ipvsadm -a -t 123.1.1.100:80 -r 172.16.1.23:80 -g -w 1

保存配置

ipvsadm-save -n > /etc/sysconfig/ipvsadm

设置开机自启动

systemctl enable --now ipvsadm

若每次重启ipvsadm就清空配置,尝试如下设置

[root@virtserv ~]# find /etc -name *ipvsadm*
/etc/sysconfig/ipvsadm-config
/etc/sysconfig/ipvsadm
/etc/systemd/system/multi-user.target.wants/ipvsadm.service

[root@virtserv ~]# vim /usr/lib/systemd/system/ipvsadm.service

把里面的stop执行动作删除

修改后

systemctl disable --now ipvsadm

systemctl enable --now ipvsadm

5.2 real server设置

显示单台配置,其余类似

关闭防火墙、禁用selinux同virtual server

nmtui界面里没有lo接口

使用命令直接为lo增加虚拟IP

nmcli connection modify lo +ipv4.addresses 123.1.1.100/32

nmcli connection up lo

上面添加的虚拟IP,在系统重启后没有自动加载,但查看配置文件里有

未发现虚拟IP,如下图

配置文件中存在该虚拟地址,但autoconnect没开启

[root@realser2 ~]# cat /etc/NetworkManager/system-connections/lo.nmconnection
[connection]
id=lo
uuid=ee6498a6-1693-4ece-bbac-0b71a2e6755c
type=loopback
autoconnect=false
interface-name=lo
timestamp=1778590005

[loopback]

[ipv4]
address1=127.0.0.1/8
address2=123.1.1.100/32
method=manual

[ipv6]
addr-gen-mode=default
address1=::1/128
method=manual

[proxy]

使用下面命令将lo设置为自动连接,正常用名字lo即可,若提示名字冲突,可改为uuid

nmcli connection modify ee6498a6-1693-4ece-bbac-0b71a2e6755c autoconnect yes

设置非必要不响应arp请求,也不主动发

echo 'net.ipv4.conf.all.arp_ignore = 1' >> /etc/sysctl.conf

echo 'net.ipv4.conf.all.arp_announce = 2' >> /etc/sysctl.conf

echo 'net.ipv4.conf.lo.arp_ignore = 1' >> /etc/sysctl.conf

echo 'net.ipv4.conf.lo.arp_announce = 2' >> /etc/sysctl.conf

sysctl -p

安装nginx

dnf -y install nginx

echo 'real server 11111' > /etc/sysctl.conf

systemctl enable --now nginx

六、效果验证

七、存在问题

lvs不具备检测后端real server的服务是否正常的功能

当后端某一real server服务异常后

需要编写脚本进行检测

[root@virtserv ~]# cat check.sh
#!/bin/bash

rip1=172.16.1.21
rip2=172.16.1.22
rip3=172.16.1.23

while true; do

curl http://$rip1 &> /dev/null
if [ $? -eq 0 ]; then
ipvsadm -a -t 123.1.1.100:80 -r $rip1 -g &> /dev/null
else
ipvsadm -d -t 123.1.1.100:80 -r $rip1 &> /dev/null
fi

curl http://$rip2 &> /dev/null
if [ $? -eq 0 ]; then
ipvsadm -a -t 123.1.1.100:80 -r $rip2 -g &> /dev/null
else
ipvsadm -d -t 123.1.1.100:80 -r $rip2 &> /dev/null
fi

curl http://$rip3 &> /dev/null
if [ $? -eq 0 ]; then
ipvsadm -a -t 123.1.1.100:80 -r $rip3 -g &> /dev/null
else
ipvsadm -d -t 123.1.1.100:80 -r $rip3 &> /dev/null
fi

sleep 2

done

[root@virtserv ~]# chmod +x check.sh

[root@virtserv ~]# nohup sh /root/check.sh &

当后端real server服务连接不上时,自动删除,恢复后自动添加进来

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询