欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 使用LVS的 NAT 模式实现 3 台RS的轮询访问

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

2025/3/31 17:15:07 来源:https://blog.csdn.net/qq_74430033/article/details/146532925  浏览:    关键词:使用LVS的 NAT 模式实现 3 台RS的轮询访问

LVS 是一种 Linux 系统下的负载均衡解决方案,它通过将请求分配到多台真实服务器(RS)上,增强系统的可伸缩性与可靠性。LVS 支持多种负载均衡模式,其中 NAT 模式是最常用的一种。NAT 模式通过在负载均衡器(LVS 主机)上进行源地址或目标地址的转换,将客户端的请求转发到后端的真实服务器,并通过 IP 地址的映射返回响应。

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

节点划分:

主机角色系统网络IP
clientclientredhat9.5仅主机192.168.113.100/24
lvslvsredhat9.5仅主机/NAT

192.168.113.200/24 VIP

192.168.116.8/24 DIP

nginxrs1redhat9.5NAT192.168.116.7/24
nginxrs2redhat9.5NAT192.168.116.17/24
nginxrs3redhat9.5NAT192.168.116.27/24

 1.配置RS

rs1:

[root@localhost ~]# hostnamectl hostname rs1
[root@localhost ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.116.7/24 ipv4.gateway 192.168.116.8 connection.autoconnect yes
[root@localhost ~]# nmcli c up ens160# 安装nginx
[root@rs1 ~]# dnf install nginx -y
# 修改默认访问页
[root@rs1 ~]# echo $(hostname -I) > /usr/share/nginx/html/index.html
# 启动服务
[root@rs1 ~]# systemctl start nginx
# 测试
[root@rs1 ~]# curl localhost
192.168.116.7

rs2: 

[root@localhost ~]# hostnamectl hostname rs2
[root@localhost ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.116.17/24 ipv4.gateway 192.168.116.8 connection.autoconnect yes
[root@localhost ~]# nmcli c up ens160# 安装nginx
[root@rs2 ~]# dnf install nginx -y
# 修改默认访问页
[root@rs2 ~]# echo $(hostname -I) > /usr/share/nginx/html/index.html
# 启动服务
[root@rs2 ~]# systemctl start nginx
# 测试
[root@rs2 ~]# curl localhost
192.168.116.17

rs3: 

[root@localhost ~]# hostnamectl hostname rs3
[root@localhost ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.116.27/24 ipv4.gateway 192.168.116.8 connection.autoconnect yes
[root@localhost ~]# nmcli c up ens160# 安装nginx
[root@rs3 ~]# dnf install nginx -y
# 修改默认访问页
[root@rs3 ~]# echo $(hostname -I) > /usr/share/nginx/html/index.html
# 启动服务
[root@rs3 ~]# systemctl start nginx
# 测试
[root@rs3 ~]# curl localhost
192.168.116.27

2.配置LVS

开启主机之前,先编辑虚拟机,设置两张网卡:

 

#查看网络设备连接名称
[root@localhost ~]# nmcli c show
NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  716944d5-683d-3297-9f0b-39530d65c935  ethernet  ens224 
ens160              c6adadcb-89ef-3ed8-a265-09260f58abe1  ethernet  ens160 
lo                  3919112a-6bb6-4ad3-a213-3ce8394ca9a9  loopback  lo
# 修改连接名称
[root@localhost ~]# nmcli c modify 'Wired connection 1' connection.id ens224
# 查看修改结果
[root@localhost ~]# nmcli c show
NAME    UUID                                  TYPE      DEVICE 
ens224  716944d5-683d-3297-9f0b-39530d65c935  ethernet  ens224 
ens160  c6adadcb-89ef-3ed8-a265-09260f58abe1  ethernet  ens160 
lo      3919112a-6bb6-4ad3-a213-3ce8394ca9a9  loopback  lo#修改主机名
[root@localhost ~]# hostnamectl hostname lvs
#配置仅主机模式网卡
[root@localhost ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.113.200/24 ipv4.gateway 192.168.113.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.116.8/24 ipv4.gateway 192.168.116.2 connection.autoconnect yes
[root@lvs ~]# nmcli c up ens224 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
#查看网络设备
[root@lvs ~]# ip a
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:e4:e3:d3 brd ff:ff:ff:ff:ff:ffaltname enp3s0inet 192.168.113.200/24 brd 192.168.113.255 scope global noprefixroute ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fee4:e3d3/64 scope link noprefixroute valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:e4:e3:dd brd ff:ff:ff:ff:ff:ffaltname enp19s0inet 192.168.116.8/24 brd 192.168.116.255 scope global noprefixroute ens224valid_lft forever preferred_lft foreverinet6 fe80::64ad:fb0d:fceb:b517/64 scope link noprefixroute valid_lft forever preferred_lft forever

 3.配置客户端

开启主机之前,先编辑虚拟机,将NAT模式改为仅主机模式:

#修改主机名
[root@localhost ~]# hostnamectl hostname client
#配置仅主机网卡
[root@localhost ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.113.100/24 ipv4.gateway 192.168.113.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
[root@localhost ~]# nmcli c up ens160

 4.功能测试

启动ipvsadm服务:

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

 配置一条规则:

[root@lvs ~]# ipvsadm -A -t 192.168.113.200:80 -s rr

对规则增加RS

[root@lvs ~]# ipvsadm -a -t 192.168.113.200:80 -r 192.168.116.7:80 -m -w 2
[root@lvs ~]# ipvsadm -a -t 192.168.113.200:80 -r 192.168.116.17:80 -m -w 2
[root@lvs ~]# ipvsadm -a -t 192.168.113.200:80 -r 192.168.116.27:80 -m -w 2

列出当前LPVS表

[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.113.200:80 rr-> 192.168.113.7:80              Masq    2      0          0         -> 192.168.113.17:80             Masq    2      0          0         -> 192.168.113.27:80             Masq    2      0          0        

重启服务器

[root@lvs ~]# systemctl restart ipvsadm

配置内核转发参数

[root@lvs ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
#生效配置命令
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1

 在客户端来测试

[root@client ~]# curl 192.168.113.200
192.168.116.27
[root@client ~]# curl 192.168.113.200
192.168.116.17
[root@client ~]# curl 192.168.113.200
192.168.116.7
[root@client ~]# curl 192.168.113.200
192.168.116.27
[root@client ~]# curl 192.168.113.200
192.168.116.17
[root@client ~]# curl 192.168.113.200
192.168.116.7
[root@client ~]# curl 192.168.113.200
192.168.116.27
[root@client ~]# curl 192.168.113.200
192.168.116.17
[root@client ~]# curl 192.168.113.200
192.168.116.7

总结:

  1. LVS NAT 模式原理

    LVS NAT 模式通过在负载均衡器上修改目标 IP 地址,将请求转发给后端的真实服务器。当响应返回时,LVS 将源 IP 地址修改为客户端的 IP 地址,从而确保数据能正确返回给客户端。该模式的优点是负载均衡器无需直接与客户端通信,可以隐藏真实服务器的 IP 地址,从而增强安全性。
  2. 负载均衡算法

    轮询(Round Robin)是一种常见的负载均衡算法,能够将请求均匀分配给各台服务器,适用于负载较为均衡的环境。
  3. 高可用性与容错性

    LVS 的健康检查机制能够实时监控真实服务器的状态,一旦某台服务器不可用,负载均衡器会自动将流量转移到其他健康服务器,确保系统的高可用性。如果 LVS 本身发生故障,配置高可用性(如使用 Keepalived)可以保证 LVS 的故障转移,进一步提升系统的容错能力。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词