欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > LVS集群

LVS集群

2025/2/12 12:43:55 来源:https://blog.csdn.net/2401_83342251/article/details/145579150  浏览:    关键词:LVS集群
特性NAT 模式DR 模式
工作原理Director 修改请求/响应的 IP 地址和端口,流量双向经过 DirectorDirector 仅修改请求的 MAC 地址,响应由 Real Server 直接返回客户端
性能较低(需处理双向流量,易成瓶颈)高(仅处理入站流量,适合高并发场景)
IP 要求Real Server 使用私有 IP,Director 需公网 IP

Real Server 与 Director 需在同一局域网,

VIP 需全局可见

配置复杂度简单(仅需配置 NAT 规则)复杂(需配置 ARP 抑制和 lo 接口 VIP)
扩展性受限于 Director 带宽和处理能力扩展性强(Director 压力小)
安全性隐藏后端服务器 IP暴露后端服务器 IP(需额外安全措施)
适用场景中小规模、私有网络环境大规模、高性能需求场景

一、DR模式集群

1.工作原理

集群由 Director Server(负载均衡器)和多台 Real Server(后端真实服务器)组成,它们处于同一局域网。Director Server 拥有对外提供服务的 VIP(虚拟 IP 地址),同时 Real Server 也需配置 VIP。客户端通过访问 VIP 发起请求。客户端请求报文的源 IP 为 CIP(客户端 IP),目标 IP 为 VIP,到达 Director Server 的内核空间。IPVS 判断为集群服务后,不改变源 IP 和目标 IP,仅修改数据帧的目标 MAC 地址为选中 Real Server 的 MAC 地址,源 MAC 地址为 Director Server 的 MAC 地址,然后在局域网上发送给 Real Server。Real Server 处理完请求后,响应报文直接发回给客户端,不经过 Director Server。这个方式是三种调度中性能最好的,也是我们生产环境中使用最多的。适用于高并发场景。

2.实验步骤

真实服务器(rs1)的设置

[root@rs1 ~]# yum install nginx -y
[root@rs1 ~]# echo "I am rs1 " > /usr/share/nginx/html/index.html
[root@rs1 ~]# systemctl start nginx
[root@rs1 ~]# curl localhost
I am rs1 
[root@rs1 ~]# nmcli c add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.8.10/32
[root@rs1 ~]# vim /etc/sysctl.conf
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
[root@rs1 ~]# sysctl -p       #使配置生效

真实服务器(rs2)的设置

[root@rs2 ~]# yum install nginx -y
[root@rs2 ~]# echo "I am rs2 " > /usr/share/nginx/html/index.html
[root@rs2 ~]# systemctl start nginx
[root@rs2 ~]# curl localhost
I am rs2 
[root@rs2 ~]# nmcli c add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.8.10/32
[root@rs2 ~]# vim /etc/sysctl.conf
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
[root@rs2 ~]# sysctl -p

LVS负载均衡器设置 

[root@lvs ~]# nmcli c add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.8.10/32
[root@lvs ~]# yum install ipvsadm -y
[root@lvs ~]# ipvsadm -At 192.168.8.10:80 -s rr
[root@lvs ~]# ipvsadm -at 192.168.8.10:80 -r 192.168.8.139:80 -g
[root@lvs ~]# ipvsadm -at 192.168.8.10:80 -r 192.168.8.140:80 -g
#-A 用于添加虚拟服务器,-t 指定公网 IP 和端口,-s rr 表示采用轮询调度算法;
#-a 用于添加真实服务器,-r 指定真实服务器的 IP 和端口,-g 表示使用 DR 模式(默认为DR模式)。[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.8.10:80 rr-> 192.168.8.139:80             Route   1      0          0-> 192.168.8.140:80             Route   1      0          0
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm     #保存LVS规则
[root@lvs ~]# systemctl enable ipvsadm    #开机自动加载

client的测试(注意访问的是VIP

二、NAT模式集群

1.工作原理

负载均衡器 连接外部网络与内部 后端真实服务器 所在局域网。负载均衡器 配置有公网 IP 和内部私有 IP,后端真实服务器 仅配置内部私有 IP。客户端通过公网 IP 访问集群。客户端请求报文的源 IP 为 CIP,目标 IP 为公网 IP(负载均衡器 的公网 IP)。负载均衡器 接收请求后,将目标 IP 修改为内部选中的 后端真实服务器 的私有 IP,源 IP 保持不变,然后转发给 后端真实服务器。后端真实服务器 处理请求后,响应报文发送给 负载均衡器,负载均衡器 再将响应报文的源 IP 修改为公网 IP,目标 IP 修改为 CIP,最后发送给客户端。适用于小型网络或对网络改造要求不高的场景。

在 Linux 系统中,ip_forward 参数控制着内核是否允许转发数据包。默认情况下,为了提高安全性,大多数 Linux 发行版都将 ip_forward 设置为 0,这意味着系统不会转发数据包。如果你想让系统能够像路由器一样工作,转发不同网络之间的数据包,就需要将 ip_forward 设置为 1

2.实验步骤

真实服务器(rs1 rs2)的配置

[root@all ~]# yum install nginx -y
[root@all ~]# echo "my ip is `hostname -I`" > /usr/share/nginx/html/index.html
[root@all ~]# systemctl start nginx

LVS负载均衡器设置 


# 客户端不需要配置网关,由于和VIP在同一网段之下,访问的是VIP
[root@lvs ~]# nmcli c modify dummy-dummy2 ipv4.addresses 172.25.254.100/24
[root@lvs ~]# nmcli c up dummy-dummy2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)[root@lvs ~]# yum install ipvsadm -y# 添加虚拟服务器,监听公网 IP 的 80 端口,使用轮询算法
[root@lvs ~]# ipvsadm -At 192.168.8.10:80 -s rr 
# 添加真实服务器,-m 表示 NAT 模式
[root@lvs ~]# ipvsadm -at 192.168.8.10:80 -r 192.168.8.139:80 -m
[root@lvs ~]# ipvsadm -at 192.168.8.10:80 -r 192.168.8.140:80 -m
[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.8.10:80 rr-> 192.168.8.139:80             Route   1      0          0-> 192.168.8.140:80             Route   1      0          0
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm     #保存LVS规则
[root@lvs ~]# systemctl enable ipvsadm    #开机自动加载

三、LVS的缺点

关闭rs1的nginx服务

[root@rs1 ~]# systemctl stop nginx

会发现出错,它不能对 后端的rs 做健康检查,如果后端服务器挂了,请求还是会被调度过去,没有对故障的rs 做剔除;那么haproxy,nginx做负载均衡就能解决这种问题。

版权声明:

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

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