如有错误,敬请谅解!
此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!!
前言:
对比 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
如有错误,请联系作者删除
并恳请同行朋友予以斧正,万分感谢!