LVS DR模式实验

ensp + vmware workstation模拟实验环境

实验拓扑

IP地址规划

|----------------|------|------------------|--------------|---------|
| | 接口 | IP地址 | 网关 | 虚拟IP |
| Client | - | 192.168.10.20/24 | 192.168.10.1 | |
| Virtual Server | 外网 | 123.1.1.100/24 | 123.1.1.1 | 与物理接口相同 |
| Virtual Server | DIP | 172.16.1.101/24 | - | |
| Real Server1 | RIP1 | 172.16.1.21/24 | 172.16.1.1 | |
| Real Server1 | lo | 123.1.1.100/32 | | |
| Real Server2 | RIP2 | 172.16.1.22/24 | 172.16.1.1 | |
| Real Server2 | lo | 123.1.1.100/32 | | |
| Real Server3 | RIP3 | 172.16.1.23/24 | 172.16.1.1 | |
| Real Server3 | lo | 123.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地址 ![](https://i-blog.csdnimg.cn/direct/24de3e49d0fa4c4c8d496b10b7847346.png)![](https://i-blog.csdnimg.cn/direct/1c0527b8cab64c949efecb781366de73.png) ![](https://i-blog.csdnimg.cn/direct/afe6b0cb878d49dab9ec8553bf499452.png) ![](https://i-blog.csdnimg.cn/direct/424072f4495f4197b002b3f3506d7378.png) ![](https://i-blog.csdnimg.cn/direct/090ba8f3902d455c998273e6a4a9d87b.png) 注意:需要调整内网网卡不做为默认路由,否则产生无法ping通的问题。尤其在测试时执行 nmcli connection down ens160 关闭ens160网卡后,默认路由就走ens192,再启动ens160仍不会恢复,导致网络问题。 ![](https://i-blog.csdnimg.cn/direct/6065fcb9f35341dfaeb90135098fe73a.png) ![](https://i-blog.csdnimg.cn/direct/dfe45af04e624e7b9b7b64f9d2ffee8f.png) 关闭防火墙 ![](https://i-blog.csdnimg.cn/direct/475462dc4b83439d92a5a9d40bccea2a.png) 禁用selinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config ![](https://i-blog.csdnimg.cn/direct/f92bbbb8b4884e1694f32da4287198b8.png) 测试网络是否通 ![](https://i-blog.csdnimg.cn/direct/2fc4eb30c9c642328144a51b209c7b07.png) 开启路由转发功能 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执行动作删除 ![](https://i-blog.csdnimg.cn/direct/9ea9043300ef4bafbb57537ed3f3441c.png) 修改后 ![](https://i-blog.csdnimg.cn/direct/ff65e7bb275e4defb859a59bb49bcaea.png) systemctl disable --now ipvsadm systemctl enable --now ipvsadm ### 5.2 real server设置 显示单台配置,其余类似 关闭防火墙、禁用selinux同virtual server ![](https://i-blog.csdnimg.cn/direct/cf1390240b41455284f094a955a0c8e6.png) nmtui界面里没有lo接口 使用命令直接为lo增加虚拟IP nmcli connection modify lo +ipv4.addresses 123.1.1.100/32 nmcli connection up lo 上面添加的虚拟IP,在系统重启后没有自动加载,但查看配置文件里有 未发现虚拟IP,如下图 ![](https://i-blog.csdnimg.cn/direct/c08a2b3b1b384a718a0ab2192f46f594.png) 配置文件中存在该虚拟地址,但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服务连接不上时,自动删除,恢复后自动添加进来 ![](https://i-blog.csdnimg.cn/direct/c3f72c3bda774ade872f93a37c0deebc.png)![](https://i-blog.csdnimg.cn/direct/8feeeee9877b4639bd45b189e63660e6.png)

相关推荐
DarrenHChen_EDA12 天前
【Backend Flow工程实践 23】Backend-to-PV Handoff:从 DEF/GDS 到物理验证,后端如何完成签核交接?
lvs·eda·pv·gds·drc·backend flow·def
计算机安禾14 天前
【Linux从入门到精通】第48篇:Linux集群与负载均衡——LVS与Keepalived高可用
linux·负载均衡·lvs
bukeyiwanshui22 天前
20260423 一、 负载均衡-LVS 全解析
运维·负载均衡·lvs
Harvy_没救了22 天前
【网络架构】Keepalived + LVS(DR) + MariaDB 双主备实践
网络·架构·lvs
特长腿特长23 天前
LVS_DR 模式的原理
linux·运维·网络·云原生·centos·lvs
特长腿特长23 天前
LVS的DR模式和NET模式的基础案例
服务器·php·lvs
源远流长jerry25 天前
LVS 负载均衡完全指南:从入门到精通
运维·负载均衡·lvs
翻斗包菜1 个月前
LVS+Keepalived 高可用集群搭建详解(OpenEuler24 实战版
lvs
|华|1 个月前
LVS+Keepalived群集
lvs