当前位置: 首页 > news >正文

使用LVS架设服务器集群系统实现负载均衡与高可用的知识点详解

一、LVS体系结构

        LVS(Linux Virtual Server)是一种基于Linux操作系统的虚拟服务器技术,用于实现负载均衡和高可用性。LVS通过将客户端的请求分发到多台后端服务器上,从而提高整体服务的处理能力和可靠性。LVS体系结构如下图所示:

LVS体系结构

使用LVS架设的服务器集群系统有三个部分组成:

《1》最前端的负载均衡层(用Load Balancer表示);

《2》中间的服务器群组层(用Server Array表示);

《3》最底端的数据共享存储层(用Shared Storage表示)

在用户看来,所有的内部应用都是透明的,用户只是在使一个虚拟服务器提供的高性能服务。

序号LVS的组成部分说明
1Load Balancer层

位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,LVS模块就安装在Director Server上,而Director的主要作用类似于一个路由器,它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给Server Array层的应用服务器(Real Server)上。

        同时,在Director Server上还要安装对Real Server服务的监控模块Ldirectord,此模块用于监测各个Real Server服务的健康状况。在Real Server不可用时把它从LVS路由表中剔除,恢复时重新加入。

2Server Array层

由一组实际运行应用服务的机器组成,Real Server可以是WEB服务器、MAIL服务器、FTP服务器、DNS服务器、视频服务器中的一个或者多个,每个Real Server之间通过高速的LAN或分布在各地的WAN相连接。

        在实际的应用中,Director Server也可以同时兼任Real Server的角色。

3Shared Storage层

是为所有Real Server提供共享存储空间和内容一致性的存储区域,在物理上,一般有磁盘阵列设备组成,为了提供内容的一致性。

        一般可以通过NFS网络文件系统共享数据,但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统(如:Red hat的GFS文件系统,oracle提供的OCFS2文件系统等)。

从整个LVS结构可以看出:

《1》Director Server是整个LVS的核心(目前,用于Director Server的操作系统只能是Linux和FreeBSD,linux2.6及其更高版本内核不用任何设置就可以支持LVS功能);

《2》对于Real Server,几乎可以是所有的系统平台(Linux、windows、Solaris、AIX、BSD系列都能很好的支持)。

二、IP负载均衡

        负载均衡技术有很多实现方案,有基于DNS域名轮流解析的方法、有基于客户端调度访问的方法、有基于应用层系统负载的调度方法,还有基于IP地址的调度方法,在这些负载调度算法中,执行效率最高的是IP负载均衡技术。

        LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件。lvs集群整个执行流程为:访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。

        当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,而Real Server节点如何返回数据给用户,是IPVS实现的重点技术,IPVS实现负载均衡机制有三种,分别是NAT、TUN和DR,详述如下:

 2.1、DR模式

        DR模式(即Virtual Server via Direct Routing),也就是用直接路由技术实现虚拟服务器。VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户。这种调度方式的性能最好的。如下图所示:

DR模式

LB(Load Balancer)负载均衡。

VIP(Virtual IP Address)虚拟IP地址。

RS(Real Server)真实物理机服务器。

序号说明
1DR模式是通过在调度器LB上修改数据包的目的MAC地址实现转发。因此数据包来源地址保持不变,目的地址仍然是VIP地址。
2请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此并发访问量大时使用效率很高(和NAT模式比)。
3因为DR模式是通过MAC地址改写机制实现转发,因此所有RS节点和调度器LB只能在一个局域网里面。
4RS主机需要绑定VIP地址在LO接口上,并且需要配置ARP抑制。
5RS节点的默认网关不需要配置成LB,而是直接配置为上级路由的网关,能让RS直接出网就可以。
6由于DR模式的调度器仅做MAC地址的改写,所以调度器LB就不能改写目标端口,那么RS服务器就得使用和VIP相同的端口提供服务。

 2.2、NAT/FULL NAT模式

        NAT模式(即:Virtual Server via Network Address Translation,也就是网络地址翻译技术实现虚拟服务器)。当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的Real Server地址,同时将报文的目标端口也改成选定的Real Server的相应端口,最后将报文请求发送到选定的Real Server。在服务器端得到数据后,Real Server将数据返回给用户时,需要再次经过负载调度器将报文的源地址和源端口改成虚拟IP地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。如下图所示:

NAT模式的优缺点
序号NAT模式的优点NAT模式的缺点
1NAT 模式不需要 LB IP 和realserver ip 在同一个网段。NAT技术将请求的报文和响应的报文都需要通过LB进行地址改写,因此网站访问量比较大的时候,LB负载均衡调度器有比较大的瓶颈,一般要求最多只能支持10-20台节点
2只需要在LB上配置一个公网IP地址就可以了。每台内部的realserver服务器的网关地址必须是调度器LB的内网地址。
3NAT模式支持对IP地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。
FULL NAT模式优缺点与注意事项
FULL NATT模式,与NAT模式基本一样,不同之处在于对报文的处理方面:
序号说明
1NAT模式client请求VIP 时,仅替换了package 的dst ip(目标IP地址)。
2FULL NAT  在client请求VIP 时,不仅替换了package 的dst ip,还替换了package的 src ip;VIP返回给client时也替换了src ip。
3FULL NAT模式也不需要LB IP和realserver ip 在同一个网段。
4FULL NAT因为要更新Source IP所以性能正常比NAT模式下降10%。

 2.3、IP TUNNEL模式

        TUN(即:Virtual Server via IP Tunneling) 也就是通过IP隧道技术实现虚拟服务器。在VS/TUN方式中,调度器采用IP隧道技术将用户请求转发到某个Real Server,而这个Real Server将直接响应用户的请求,不再经过前端调度器。此外,对Real Server的地域位置没有要求,可以和Director Server位于同一个网段,也可以在独立的一个网络中。因此,在TUN方式中,调度器将只处理用户的报文请求,从而使集群系统的吞吐量大大提高。

        它和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址。而是把客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器。

IP TUNNEL 模式
序号说明
1TUNNEL 模式必须在所有的realserver 机器上面绑定VIP的IP地址。
2TUNNEL 模式的vip ------>realserver 的包通信通过TUNNEL 模式,不管是内网和外网都能通信,所以不需要lvs vip跟realserver 在同一个网段内。
3TUNNEL 模式 realserver会把packet 直接发给client 不会给lvs了。
4TUNNEL 模式走的隧道模式,所以运维起来比较难,所以一般不用。

三、LVS负载调度算法说明

        LVS的调度算法决定了如何在集群节点之间分布工作负荷。当director调度器收到来自客户端访问VIP的上的集群服务的入站请求时,director调度器必须决定哪个集群节点应该处理请求。Director调度器用的调度方法基本分为两类:
《1》固定调度算法:rr,wrr,dh,sh。
《2》动态调度算法:lc,wlc,lblc,lblcr。

LVS负载调度算法说明
序号算法说明
1rr【轮询算法】它将请求依次分配给不同的rs节点,也就是RS节点中均摊分配。这种算法简单,但只适合于RS节点处理性能差不多的情况。
2wrr【加权轮询调度】它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。
3dh【目的地址哈希调度(destination hashing)】以目的地址为关键字查找一个静态hash表来获得需要的RS。
4sh【源地址哈希调度(source hashing)】以源地址为关键字查找一个静态hash表来获得需要的RS。
1lc

【最小连接数调度(least-connection)】IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。

2wlc【加权最小连接数调度】假设各台RS的权重依次为Wi,当前tcp连接数依次为Ti,依次去Ti/Wi为最小的RS作为下一个分配的RS。
3lblc【基于地址的最小连接数调度(locality-based least-connection)】将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。
4lblcr【带有复制的局部最少连接算法 lblcr 算法是在lblc 算法的基础上增加了一个node 列表,先依据lblc 算法计算出与源请求IP地址最近的一组node ,然后再决定把请求发送到最近一组中的最近的一台node 。 若此node没有超载则将请求转发给这台node, 如果超载则依据”最少连接”原则找到最少连接的node并将此node 加入集群组中。 并将请求转给此node。

四、LVS调度算法在生产环境选型建议

LVS调度算法在生产环境选型建议
序号说明
1

一般的网络服务(如:www,mail,mysql)等常用的LVS调度算法选择:

《1》基本轮询调度rr
《2》加权最小连接调度wlc
《3》加权轮询调度wrr

2基于局部性的最小连接lblc和带复制的给予局部性最小连接lblcr主要适用于【web cache】和【DB cache】。
3源地址散列调度SH和目标地址散列调度DH可以结合使用在【防火墙集群中】,可以保证整个系统的出入口唯一。
实际使用中这些算法的适用范围很多,工作中最好参考内核中的连接调度算法的实现原理,然后根据具体的业务需求合理的选型。

文章转载自:

http://qi7mkqkL.hffjj.cn
http://6Zx8EKHE.hffjj.cn
http://h4BpvM6o.hffjj.cn
http://g2p2YvDf.hffjj.cn
http://G9nfE3Zt.hffjj.cn
http://PQUS556v.hffjj.cn
http://XyI0KqTn.hffjj.cn
http://ov3vZrCL.hffjj.cn
http://gnUjuXWi.hffjj.cn
http://YoNI41Xp.hffjj.cn
http://FvsqAiyQ.hffjj.cn
http://aIKAUrup.hffjj.cn
http://s13t8uez.hffjj.cn
http://Rc23j7mY.hffjj.cn
http://ykABK6Wp.hffjj.cn
http://2FgHLnnv.hffjj.cn
http://PZucnvhV.hffjj.cn
http://aydqejIK.hffjj.cn
http://RVIhaK9G.hffjj.cn
http://D2gfpXVp.hffjj.cn
http://0u6bF4ZP.hffjj.cn
http://QumV40z4.hffjj.cn
http://EXIobg5J.hffjj.cn
http://x5HPPwt9.hffjj.cn
http://QcPJBIHt.hffjj.cn
http://VICud0ZR.hffjj.cn
http://qcCww8Fp.hffjj.cn
http://XdQfhzuZ.hffjj.cn
http://897rf2LX.hffjj.cn
http://SXClD9V1.hffjj.cn
http://www.dtcms.com/a/387491.html

相关文章:

  • 84-dify案例分享-使用Qwen-Image实现文生图、图生图
  • 留个档,Unity,Animation控制相机,出现抖动的问题记录
  • CentOS 8.5部署Zabbix6.0 server端
  • CentOS系统下安装Docker记录
  • CentOS 7 如何安装 EPEL 源?epel-release-latest-7.noarch.rpm 安装教程(附安装保存)
  • CentOS 7 源码版 PhpMyAdmin 安装指南(适配 Nginx+PHP-FPM 环境)
  • 在 WSL Ubuntu 上使用 Docker 搭建可被 Ansible 控制的受控节点环境
  • 数据赋能,安全护航——D-QS工程造价数字化平台的数据治理与行业应用
  • Matplotlib 可视化:从基础绘图到高级定制
  • 知识管理与高效学习技术
  • 【AI总结】万字长文预警!Spring Boot 4 全景深度解析:从虚拟线程到声明式 HTTP 客户端,再到云原生最佳实践
  • 小杰机器学习(eight)——tensorflow进行线性回归——算法实现、数据加载、模型定义、模型保存与加载、查看网络结构。
  • 什么是网络安全态势感知
  • O3.6opencv风格迁移和人脸识别
  • uniapp h5本地域名调试解决跨域
  • IvorySQL 与 deepin 完成兼容性认证,共创开源生态新篇章
  • vue和springboot和ngnix跨域问题
  • 云边云科技4G路由器:连锁门店智慧联网的可靠基石
  • Ubuntu修改环境变量
  • 3D影像地形图的制作:利用ArcGISPro
  • ZEMAX光学设计流程:从基础到复杂系统实战
  • Android 项目:画图白板APP开发(九)——撤销、恢复(覆盖前文所有功能)
  • 设计模式(C++)详解——组合模式(Composite Pattern)(2)
  • Android中获取用户的国家码
  • JVM性能优化总结
  • 【js】js将金额转千百十元角分的打印格式:
  • 硬件(十三)模拟转数字ADC转换
  • OpenEuler系统下部署MySQL数据库
  • 异步MySQL连接池实现
  • 用Python 连接 MySQL数据库测试实战脚本(文中含源代码)