LVS负载均衡集群架构介绍

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介:

为什么需要使用负载均衡呢?这是一个必较重要的问题 
实际生产环境中某单台服务器已不能负载日常用访问压力时,就需要使用负载均衡,把用户的请求数据分担到(尽可能平均分配)后端所有功能同等的集群的节点上,同样也是为了解决单台服务器故障问题,从而提高用户的访问体验。

1、LVS的介绍 
LVS(linux virtual server)LINUX虚拟服务器,是一个虚拟的服务器集群系统,可以在linux和unix系统中运行,1985年开发研究的项目 
http://www.linuxvirtualserver.org/zh/ 官方网站

IPVS(lvs)发展史

linux2.2内核时,IPVS就已经以内核补丁的形式出现
从2.4。24版本以后IPVS已经成为linux内核官方标准内核的一部分

LVS工作原理 
LVS负载均衡调度技术是在linux内核中实现的,我们使用配置LVS时,不是直接配置内核中的IPVS,而是通过IPVS的管理工具IPVSADM来管理配置,LVS集群负载均衡器接受所有入站客户端的请求,并根据算法来决定由哪个集群的节点来处理请求。

LVS相关术语介绍

虚拟IP地址(VIP)
    用于向客户端提供服务的IP地址(配置于负载均衡器上)
真实的IP地址(RIP)
    集群中节点服务器的IP地址 
负载均衡器IP地址(DIP) 
   负载均衡器的IP地址,物理网卡上的IP,用与同外网连接的地址 
客户端主机IP地址(CIP)
    终端请求用户的主机IP地址

2、LVS负载均衡工作模式介绍 
NAT网络地址转换模式(VS/NAT) 
通过网络地址转换,调度器LB重写请求报文的目标地址,根据算法将请求分配给后端的真实主机服务器,真实服务器响应处理报文后返回给调度器LB,经过LB的报文源地址被重写,再返回给请求的客户端用户

LVS负载均衡集群架构介绍
过程详解:
1:客户端请求CIP(10.10.0.1:80),目标的地址是VIP(1.1.1.1:80)
2:数据经过LB,目的地址将被LB改写成后端服务器其中一个主机地址(RIP1192.168.1.1:80)
3:服务器接收到数据请求后返回应答信息(源地址:192.168.1.:80,目的地址:1.1.1.1:80,因此处的网关地址需指向LB)给LB
4:LB需将源数据地址改写成VIP地址(1.1.1.1:80,但实际的源地址是RIP1的地址)
5:LB将数据返回给请求的客户端用户,完成整个流程的访问
因此WEB访问量很大的时候,LB就会有很大的负载压力,一般支持10-20台节点,但是这种模式支持IP和端口的转换功能,即10.10.0.1:80----->1.1.1.1:80-------->192.168.1.1:8080

TUN隧道模式(VS/TUN) 
LB将请求的报文通过IP隧道转发给真实服务器,这样LB只要需要处理请求入站报文,因此可提高访问效率

LVS负载均衡集群架构介绍
过程详解:
1:客户端发送请求数据包(源:CIP10.10.1.1:80,目的地址:VIP1.1.1.1:80)
2:数据包到达LB后,LB将数据包重新封装成另一个IP包(源目地址不变,增加一个IP头),通过隧道转发给真实服务器
3:真实服务器收到数据包后进行解包,数据包信息是(源:CIP 10.10.1.1:80,目的地址:VIP 1.1.1.1:80),最终发现目的地址不是自己(因此需要在服务器LO上绑定一个VIP地址),这样才会处理数据,返回处理数据
4:客户端接收到返回的数据(源地址VIP 1.1.1.1:80,目的地址CIP 10.10.1.1:80),符合TCP/IP的原理,因此整个访问过程完成

注:这时肯定有朋友发现这里会有一个问题,每台服务器上都绑定了一个相同VIP地址,用户访问时的目的地址也是VIP,当数据包达到路由器后经过转发至内网,内网可能会产生多台回应数据包的机器,然后用户收到的最快回应的内网机器发来的数据,这样一来数据包也就没有经过LB,就不是负载均衡了,所以需要做抑制ARP的功能,使所有真实服务器不再响应目的地址是VIP的请求,只要LB来响应请求,从而达到负载均衡。在实际生产环境中很少使用这种模式

DR模式(Direct Routing)直接路由模式 
此模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器,而真实服务器将响应后的数据直接回应给请求的客户端,此模式要求LB与真实服务器需要有一块物理网卡都是连接在同一网段上 
LVS负载均衡集群架构介绍

过程详解:
1:客户端发出请求数据包(源CIP 10.10.1.1:80 目的 VIP1.1.1.1:80)
2:LB接收到数据包后,不转换地址及端口,也不重新封装,只是将数据帧中的目的地址的MAC地址改写算法调度的真实机的MAC地址,将数据包转发出去
3:真实机收到数据后,但是发现数据包中目的地址不是自己(所以事先也得在LO上绑定一个VIP地址,同时配置抑制ARP),这样真实机做出响应直接回复客户端
4:客户端收到回复的数据包(源VIP 1.1.1.1:80 目的CIP 10.10.1.1:80),完成整个访问过程

注:LB只能改写目的MAC地址,因此它不能改变请求报文的目的端口端口,LVS只支持unix和linux,但集群节点服务器可以是win系统,此种模式配置相当麻烦

FULLNAT模式(淘宝开源) 
LVS负载均衡集群架构介绍
解决了上述三种的缺点,解决了真实服务器能跨越VLAN通讯,只需要连接到内网即可 
入站时,目标IP更改为真实服务器的IP,源IP更改为内网的本地IP(一组内网IP) 
出站时,目标IP更改为客户端的IP,源IP更换为VIP

3、LVS调度算法介绍 
LVS的调度算法决定了如何在集群节点之间分配负载压力(访问请求)

调度算法:
rr轮循调度:将请求依次分配给集群的节点,这种算法适用于各个节点处理能力基本相同的情况下
wrr加权轮循调度:根据节点的权重来分配,权重较高的优先分配
wlc加权最小连接数调度:按权重和连接数的数量来分配
lc最小连接数调度:按连接数的数量来分配

实际生产环境LVS调度算法选型 
一般网络服务,如HTTP、MAIL、MYSQL常用的调度算法有:rr、wlc、wrr



本文转自 民工哥 51CTO博客,原文链接:http://blog.51cto.com/mingongge/2062874

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
14天前
|
弹性计算 负载均衡 网络协议
阿里云SLB深度解析:从流量分发到架构优化的技术实践
本文深入探讨了阿里云负载均衡服务(SLB)的核心技术与应用场景,从流量分配到架构创新全面解析其价值。SLB不仅是简单的流量分发工具,更是支撑高并发、保障系统稳定性的智能中枢。文章涵盖四层与七层负载均衡原理、弹性伸缩引擎、智能DNS解析等核心技术,并结合电商大促、微服务灰度发布等实战场景提供实施指南。同时,针对性能调优与安全防护,分享连接复用优化、DDoS防御及零信任架构集成的实践经验,助力企业构建面向未来的弹性架构。
153 76
|
21天前
|
存储 NoSQL Redis
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 +  无锁架构 +  EDA架构  + 异步日志 + 集群架构
|
1月前
|
并行计算 PyTorch 算法框架/工具
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
本文探讨了如何通过技术手段混合使用AMD与NVIDIA GPU集群以支持PyTorch分布式训练。面对CUDA与ROCm框架互操作性不足的问题,文章提出利用UCC和UCX等统一通信框架实现高效数据传输,并在异构Kubernetes集群中部署任务。通过解决轻度与强度异构环境下的挑战,如计算能力不平衡、内存容量差异及通信性能优化,文章展示了如何无需重构代码即可充分利用异构硬件资源。尽管存在RDMA验证不足、通信性能次优等局限性,但该方案为最大化GPU资源利用率、降低供应商锁定提供了可行路径。源代码已公开,供读者参考实践。
80 3
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
|
2月前
|
负载均衡 网络协议 Linux
LVS,软负载均衡
LVS(Linux Virtual Server)是一项广泛应用的负载均衡技术,由章文嵩博士于1998年发起,自Linux 2.4.24版本起成为官方内核的一部分。LVS通过四层负载均衡技术实现高性能、高可用的服务器集群,支持多种调度算法和工作模式(如D-NAT、full-NAT、IP隧道、DR),适用于HTTP、数据库等应用。相比7层负载均衡器(如Nginx、HAProxy),LVS具有更高的并发处理能力和更低的资源消耗,适合大规模流量分发。本期文章详细介绍了LVS的工作原理、优势与不足,并对比了常见的负载均衡产品,帮助读者根据具体需求选择合适的解决方案。
179 5
LVS,软负载均衡
|
2月前
|
弹性计算 负载均衡 Java
【上云基础系列 02-01】通过SLB+1台ECS+ESS弹性伸缩,搭建一个精简版的上云标准弹性架构(含方案及教程)
通常,构建一个弹性架构(即使是一个最基础的入门版),至少需要2台ECS。但是,很多小微企业刚开始上云的时候,为了节省成本不愿意购买更多的服务器。通过 “ALB+ESS弹性伸缩+1台ECS+RDS”方案,在保障低成本的同时,也不牺牲业务架构的弹性设计,更避免了很多人因为节省成本选择了单体架构后频繁改造架构的困局。 方案中的几个设计非常值得小微企业借鉴:(1)通过ALB/RDS的按量付费,节省了初期流量不大时的费用;(2)通过ESS弹性伸缩,不需要提前购买服务器资源,但是当业务增长或减少时却保持了资源弹性自动扩缩容。
|
6月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
329 6
|
1月前
|
存储 SQL 并行计算
【赵渝强老师】达梦数据库MPP集群的架构
达梦数据库提供大规模并行处理(MPP)架构,以低成本实现高性能并行计算,满足海量数据存储和复杂查询需求。DM MPP采用完全对等无共享体系,消除主节点瓶颈,通过多节点并行执行提升性能。其执行流程包括主EP生成计划、分发任务、各EP并行处理及结果汇总返回。为确保高可用性,建议结合数据守护部署。
|
3月前
|
负载均衡 算法
架构学习:7种负载均衡算法策略
四层负载均衡包括数据链路层、网络层和应用层负载均衡。数据链路层通过修改MAC地址转发帧;网络层通过改变IP地址实现数据包转发;应用层有多种策略,如轮循、权重轮循、随机、权重随机、一致性哈希、响应速度和最少连接数均衡,确保请求合理分配到服务器,提升性能与稳定性。
554 11
架构学习:7种负载均衡算法策略
|
4月前
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
758 4
|
5月前
|
人工智能 云计算 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日~10日在江苏张家港召开的CCF ChinaNet(即中国网络大会)上,众多院士、教授和业界技术领袖齐聚一堂,畅谈网络未来的发展方向,聚焦智算集群网络的创新变革。
阿里云引领智算集群网络架构的新一轮变革