使用LVS的 NAT 模式实现 3 台RS的轮询访问

发布于:2025-03-25 ⋅ 阅读:(24) ⋅ 点赞:(0)

架构图,需要三台RS进行轮询访问,则架构图会和下图有点差距。 

节点规划

   主机      角色        系统               网络                           IP 

   client       client      redhat 9.5      NAT                      192.168.19.100/24

    lvs           lvs           redhat 9.5     NAT、仅主机        192.168.111.111.27/24

    nginx       rs1         redhat 9.5      NAT                192.168.111.111.7/24

    nginx       rs2          redhat 9.5      NAT                192.168.111.111.17/24

    nginx       rs3          redhat 9.5      NAT                192.168.111.111.27/24

注意:本实验所有防火墙均关闭。setenforce 均为0

配置nginx

默认rs三台主机都下载nginx。

rs1

1.写入页面

[root@rs1 ~]# echo $(hostname -I) > /usr/share/nginx/html/index.html

2.重启服务
[root@rs1 ~]# systemctl restart nginx

3.测试nginx

[root@rs1 ~]# curl 192.168.111.17
192.168.111.17

注:其他两台均相同操作

配置lvs

修改虚拟网络

lvs服务器有两块网卡,第一块网卡采用仅主机模式,IP 地址为 192.168.19.200,第二块网卡
采用 NAT 模式,IP 地址为192.168.111.8
[root@localhost ~] # hostnamectl hostname lvs
[root@localhost ~] nmcli c modify ens160 ipv4.method manual    ipv4.addresses 192.168.19.200/24 ipv4.gateway 192.168.19.2 ipv4.dns   223.5.5.5 connection.autoconnect yes
[root@localhost ~] # nmcli c up ens160

安装软件 

为了防止等会不能上外网先把 ipvsamd 软件安装。
[root@lvs ~] # dnf install ipvsadm -y

配置 NAT模式的网卡

[root@lvs ~] # nmcli c modify ens224 ipv4.method manual ipv4.addresses
192.168.111.8/24 ipv4.gateway 192.168.111.2 connection.autoconnect yes
[root@lvs ~] # nmcli c up ens224
Connection successfully activated (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/5)

 做 LVS 规则匹配

[root@lvs ~] # ipvsadm -A -t 192.168.19.200:80 -s rr
# 为规则增加 RS
[root@lvs ~] # ipvsadm -a -t 192.168.19.200:80 -r 192.168.111.7:80 -m -w   2
[root@lvs ~] # ipvsadm -a -t 192.168.19.200:80 -r 192.168.111.17:80 -m - w 2
[root@lvs ~] # ipvsadm -a -t 192.168.19.200:80 -r 192.168.111.17:80 -m - w 2
[root@lvs ~] # 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.10.200:80 rr
- > 192 .168.111.7:80 Masq 2 0 0
- > 192 .168.72.111:80 Masq 2 0 0
-> 192.168.72.111:80 Masq 2 0 0

 配置内核参数

[root@lvs ~] # echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
配置好后执行如下的命令来生效。
[root@lvs ~] # sysctl -p

配置客户端

[root@localhost ~] # hostnamectl hostname client
[root@localhost ~] # nmcli c modify ens160 ipv4.method manual
ipv4.addresses 192.168.19.100/24 ipv4.gateway 192.168.19.2 ipv4.dns
223.5.5.5 connection.autoconnect yes
[root@localhost ~] # nmcli c up ens160

功能测试 

启动ipvsadm来测试服务

[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl start ipvsadm

 

在客户端测试

[root@client ~]# curl 192.168.19.200

192 .168.111.7
[root@client ~] # curl 192.168.19.200
192 .168.111.17
[root@client ~] # curl 192.168.19.200
192 .168.111.27
[root@client ~] # curl 192.168.19.200
192 .168.111.7
[root@client ~] # curl 192.168.19.200
192 .168.111.17
[root@client ~] # curl 192.168.19.200
192 .168.111.27
[root@client ~] # curl 192.168.19.200
192 .168.111.7