基于 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服务软件配置
#两台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
[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抑制
[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
[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)的命令行工具
[root@localhost html]# yum install ipvsadm -y
3.手工执行配置添加LVS服务并增加两台RS
[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.测试
[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的效果了