基于 openEuler 构建 LVS-DR 群集

1、环境准备

机器名称 IP配置 服务角色 备注
open_Euler1 192.168.121.150 Director Server 负载均衡服务器
open_Euler2 192.168.121.151 Real Server1(RS1) web服务器1
open_Euler3 192.168.121.152 Real Server2(RS2) web服务器2
Rocky8 192.168.121.160 Client 客户端

2、配置LVS-DR

2.1 RS配置

1.web服务软件配置

bash 复制代码
#两台RS都要配置哦
[root@open-Euler2 ~]# yum install nginx -y

[root@open-Euler3 local]# cd /usr/share/nginx/html/
[root@open-Euler3 html]# ll
total 16
-rw-r--r-- 1 root root 3454 Aug 28 14:40 404.html
-rw-r--r-- 1 root root 3497 Aug 28 14:40 50x.html
-rw-r--r-- 1 root root 3510 Aug 28 14:40 index.html
-rw-r--r-- 1 root root  368 Aug 28 14:40 nginx-logo.png

[root@open-Euler2 html]# echo "web test page,ip is `hostname -I`" > index.html 

[root@open-Euler2 html]# cat index.html 
web test page,ip is 192.168.121.151 

[root@open-Euler2 html]# systemctl enable --now nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

[root@open-Euler2 html]# curl localhost
web test page,ip is 192.168.121.151 

2.新建dummy连接并设置VIP

bash 复制代码
[root@open-Euler2 html]# nmcli con add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.121.155/32
Connection 'dummy-dummy1' (967d390d-a061-4093-a8bf-dabfa594ff8f) successfully added.
[root@open-Euler2 html]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:d2:55:f0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.121.151/24 brd 192.168.121.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fed2:55f0/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether d2:3f:51:40:4d:b3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.121.155/32 scope global noprefixroute dummy1
       valid_lft forever preferred_lft forever
    inet6 fe80::319b:601d:7ca6:d862/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

#!!!open-Euler3和open-Euler2一样的操作

Linux Dummy 接口基础概念

Dummy 接口 是 Linux 操作系统中的一个虚拟网络接口,它不与任何物理硬件设备关联,主要用于测试和配置网络环境。Dummy 接口可以模拟一个网络接口,允许你在没有实际网络硬件的情况下进行网络相关的操作和测试。

3.ARP抑制

bash 复制代码
[root@open-Euler2 html]# vim /etc/sysctl.conf #两台RS的该文件下添加以下内容
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.dummy1.arp_ignore=1
net.ipv4.conf.dummy1.arp_announce=2

2.1 配置LVS负载均衡服务

1.新建dummy连接并设置VIP

bash 复制代码
[root@localhost html]# nmcli con add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.121.155/32
Connection 'dummy-dummy1' (d2e66b9b-3e6a-4e8a-9666-d9aeca39a444) successfully added.
[root@localhost html]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:a6:7a:36 brd ff:ff:ff:ff:ff:ff
    inet 192.168.121.150/24 brd 192.168.121.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fea6:7a36/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether c2:aa:c3:a0:56:a6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.121.155/32 scope global noprefixroute dummy1
       valid_lft forever preferred_lft forever
    inet6 fe80::7141:4a0e:46aa:7611/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

2.下载管理IP虚拟服务器(IPVS)的命令行工具

bash 复制代码
[root@localhost html]# yum install ipvsadm -y

3.手工执行配置添加LVS服务并增加两台RS

bash 复制代码
[root@localhost html]# ipvsadm -A -t 192.168.121.155:80 -s rr
[root@localhost html]# ipvsadm -a -t 192.168.121.155:80 -r 192.168.121.151:80 -g
[root@localhost html]# ipvsadm -a -t 192.168.121.155:80 -r 192.168.121.152:80 -g
[root@localhost html]# 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.121.155:80 rr
  -> 192.168.121.151:80           Route   1      0          0         
  -> 192.168.121.152:80           Route   1      0          0  

                     
[相关参数说明]
[root@Directory ~]# ipvsadm --help
-A  添加虚拟服务器
-t  设置群集地址(VIP,Virtual IP)
-s  指定负载调度算法
-a  添加真实服务器
-d  删除真实服务器
-r  指定真实服务器(Real Server)的地址
-m  使用NAT模式;-g、-i分别对应DR、TUN模式
-w  为节点服务器设置权重,默认为1

3.测试

bash 复制代码
[root@Rocky8 ~]# for ((i=1;i<=6;i++));
> do
> curl 192.168.121.155
> done
web test page,ip is 192.168.121.152 
web test page,ip is 192.168.121.151 
web test page,ip is 192.168.121.152 
web test page,ip is 192.168.121.151 
web test page,ip is 192.168.121.152 
web test page,ip is 192.168.121.151 
[root@Rocky8 ~]# 

这样就可以看到轮询算法rr的效果了

相关推荐
苏生Susheng4 分钟前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施
2601_9623049111 分钟前
把出片接进自动化流水线:2026 年批量 AI 视频生成工具的脚本契约与同类项目对照
运维·人工智能·自动化
曹牧12 分钟前
C#:文本文件读取
服务器·前端·c#
Ruiery14 分钟前
Linux 6.6内核 IOMMU 深度解析(七):DMA API 与 IOMMU 集成 — 从 dma_map_single 到 iommu_map
linux·运维·服务器
snow@li38 分钟前
服务器运维:Alibaba Cloud Linux 4 LTS 64位 根目录全景深度解析文章
linux·运维·服务器
实战派K8S&DB40 分钟前
《基于 Dify + FastAPI + PyTiDB 搭建大模型驱动的 TiDB 智能运维 Agent》
运维·数据库·分布式·云原生·tidb·fastapi
苏生Susheng1 小时前
【软件实施】Linux企业运维常用命令手册
java·linux·运维·服务器·springboot·springcloud·软件实施
西索斯coding1 小时前
doubao-seed-2.1-turbo 调用一直 401 怎么办?pro 版同样的 Key 却正常——5 分钟排查定位指南
java·服务器·数据库·ai
myy-learn2 小时前
31-TCP并发
服务器·网络·tcp/ip
名字还没想好☜2 小时前
Docker buildx 多架构镜像实战:一次构建 amd64+arm64,告别 exec format error
运维·docker·eureka·架构·kubernetes