您现在的位置是:首页 >技术教程 >基于 CentOS 7 构建 LVS-DR 群集网站首页技术教程

基于 CentOS 7 构建 LVS-DR 群集

春光犹上人间 2024-06-17 10:14:38
简介基于 CentOS 7 构建 LVS-DR 群集

如有错误,敬请谅解!

此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!!

前言:

对比 LVS 负载均衡群集的 NAT 模式和 DR 模式其各自的优势 

DR 模式

      原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。

     优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。

     缺点:需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。

 

NAT模式:

      原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP)。真实服务器响应完请求后,查看默认路由,把响应后的数据包发送给负载均衡器,负载均衡器在接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。

     优点:集群中的服务器可以使用任何支持TCP/IP的操作系统,只要负载均衡器有一个合法的IP地址。

      缺点:扩展性有限,当服务器节点增长过多时,由于所有的请求和应答都需要经过负载均衡器,因此负载均衡器将成为整个系统的瓶颈。

两者的区别:

        DR模式不使用调度器为公司网关,而是路由设备,调度器只是分配访问的请求任务而回应的web页面,不经过调度器,直接通过网络设备回应,不容易造成阻塞而且所有节点都使用VIP地址。

         在nat模式群集中,LSV负载均衡调度器是所有节点的访问internet的网关服务器其外网口地址也最为整个群集的VIP地址,调度器是整个公司网关任何请求都要经过调度器,包括回应的。

正文:

关于LVS

        LVS通过工作于内核的ipvs模块来实现功能,其主要工作于netfilter的INPUT链上。除此之外,还需要一个用户态工具,ipvdadm,用于用户负载集群定义和集群服务管理。

LVS DR模式工作原理

LVS DR模式的流程大概如下:

        1、客户端发送请求至VIP,也就是访问服务,请求报文源地址是CIP,目标地址为VIP;

        2、LVS调度器接收到请求,报文在PREROUTING链检查,确定目的IP是本机,于是将报文发送至INPUT链,ipvs内核模块确定请求的服务是我们配置的LVS集群服务,然后根据用户设定的均衡策略选择某台后端RS,并将目标MAC地址修改RIP的MAC地址。因为调度器和后端服务器RS在同个网段,因此直接二层互通,将请求发给选择的RS处理;

        3、因为报文目的mac是本机,且RS上有配置VIP,因此RS能接收该报文。后端服务处理完请求后,将响应直接发往客户端,此时源IP地址为VIP,目标IP为CIP。

LVS详细介绍请移至:https://www.jianshu.com/p/eae3fd16bb6c

基于 CentOS 7 构建 LVS-DR 群集。

模式特点:
* 集群节点,必须在一个网络中。
* 真实服务器必须将网关指向负载调度器。
* RIP 通常都是私有 IP,仅用于各个集群节点通信。
* 负载调度器必须位于客户端和真实服务器之间,充当网关。
* 支持端口映射。
* 负载调度器操作系统必须是 Linux ,真实服务器可以使用任意系统。

        前提条件:需要添加仅主机模式(外网模式)的IP地址,再重新开一台虚机,新开的虚机充当外网角色与它们的网络要能ping通。  

LVS2:
[root@lvs2 ~]# nmcli con mod ens33  ipv4.gateway 192.168.150.11
[root@lvs2 ~]# nmcli con up ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)

1、负载调度器开启路由转发:

方法一:  临时开启:
[root@lvs1 ~]# echo 1 >/proc/sys/net/ipv4/ip_forward
[root@lvs1 ~]# cat /proc/sys/net/ipv4/ip_forward    //0为未开启。1为开启。
1
[root@lvs1 ~]# echo 0 > /proc/sys/net/ipv4/ip_forward
 
方法二: 永久开启:
[root@lvs1 ~]# sysctl -w net.ipv4.ip_forward=1 >> /etc/sysctl.conf
[root@lvs1 ~]# sysctl -p
net.ipv4.ip_forward = 1

2、安装负载分配工具

# yum -y install ipvsadm
# ipvsadm -v    #查看版本信息

3、 配置负载调度器:创建虚拟服务器,VIP必须是本机真实ip地址

1.添加ipvsadm TCP 集群
[root@lvs1 ~]# ipvsadm -A -t 192.168.80.128:80 -s rr   //添加一个VIP,地址为:192.168.80.128:80,指定调度算法。
 
2.添加ipvsadm 节点
[root@lvs1 ~]# ipvsadm -a -t 192.168.80.128:80 -r 192.168.150.12:80 -m   //添加一个真实的服务器192.168.150.12:80
[root@lvs1 ~]# ipvsadm -a -t 192.168.80.128:80 -r 192.168.150.13:80 -m     //添加一个真实的服务器192.168.150.13:80

4、查看群集节点状态     Masq----地址伪装NAT模式        Route---DR模式

[root@lvs1 ~]# ipvsadm -ln 

5、 删除整个虚拟服务器

# ipvsadm -D -t 192.168.80.128:80    

6 、保存IPVS集群策略 设置到文件进行持久化:

1.保存IPVS集群设置到文件进行持久化:
[root@lvs1 ~]# ipvsadm-save >> /etc/sysconfig/ipvsadm
2.启动ipvsadm服务并设置开机自启动
[root@lvs1 ~]# systemctl start ipvsadm
[root@lvs1 ~]# systemctl enable ipvsadm

如有错误,请联系作者删除

并恳请同行朋友予以斧正,万分感谢!

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。