
背景介绍
在现代的互联网架构中,无论是企业还是个人开发者,都会遇到单点故障和高并发访问的问题,为了解决这些问题,引入了负载均衡(Server Load Balancer,简称SLB),SLB通过将访问流量根据预设的转发策略分发到后端多台服务器上,从而扩展应用系统的服务能力并消除单点故障,提高系统的整体可用性。
一、SLB基础原理
负载均衡技术原理浅析
负载均衡是一种分摊到多个操作单元上的计算负载的方法,其目的是加快响应速度,避免单个操作单元过载,从而提升整体系统的性能和可靠性,常见的负载均衡方法包括轮询、加权轮询和最小连接数等。
2.1 四层负载均衡
四层负载均衡工作在OSI模型的传输层,主要处理基于IP地址、端口号、协议类型等信息的流量转发,它适用于TCP/UDP协议,通过修改数据包的目标地址实现流量转发。
2.2 七层负载均衡

七层负载均衡工作在OSI模型的应用层,可以处理HTTP、HTTPS等协议,它不仅能根据IP和端口进行流量转发,还能根据内容(如URL、浏览器类别、语言等)进行智能转发,具备更强的灵活性和控制力。
2.3 二层负载均衡
二层负载均衡基于MAC地址进行流量转发,适用于局域网内的负载均衡。
2.4 三层负载均衡
三层负载均衡基于IP地址进行流量转发,通常用于不同子网间的负载均衡。
负载均衡健康检查原理浅析
健康检查是SLB的重要功能之一,用于定期检查后端服务器的运行状态,常用的健康检查方式包括TCP探针、HTTP探针和ICMP探针等,健康检查机制确保只有健康的后端服务器才会接收流量,从而保证服务的高可用性。
负载均衡网络流量路径说明
客户端请求首先到达SLB,SLB根据配置的转发策略将请求分发到后端服务器,后端服务器处理请求并返回数据,SLB再将数据返回给客户端,整个过程中,SLB负责流量的分配和健康检查。
负载均衡高可用概要说明

SLB通过消除单点故障,提高了系统的可用性,常见的高可用方案包括主备模式和集群模式,在主备模式下,主SLB出现故障时,备SLB自动接管;在集群模式下,多台SLB共同工作,分担流量和健康检查任务。
二、SLB使用限制
产品与业务规格限制
1.1 SLB的相关资源或功能存在限制
部分资源或功能可以通过提交工单申请调整,但有些限制无法调整,某些特定的调度算法或超时时间设置可能无法更改。
1.2 后续阿里云会推出性能保障型实例
用户可以配置和查询具体的性能指标,并查看其实时运行数据,这将进一步提高SLB的使用透明度和可控性。
技术限制
2.1 仅支持TCP/UDP和HTTP/HTTPS协议
SLB目前仅支持这四种协议,其他协议暂不支持。
2.2 后端服务器仅支持ECS
不支持第三方云服务器作为后端服务器。
2.3 仅支持轮询、加权轮询和最小加权连接数调度算法
这三种调度算法各有优缺点,用户可以根据实际需求选择合适的算法。
2.4 不支持7层SSL Session超时时间和HTTP Keep-alive超时时间的调整
这些参数有全局统一的默认值,用户无法自行调整。
2.5 金融云SLB仅允许开放特定端口
出于安全性考虑,金融云SLB仅允许开放80、443、2800-3300、6000-10000、13000-14000等端口。
三、SLB常见误区
1.误区:SLB后端只需添加一台ECS即可
用户在SLB后端只添加一台服务器时,虽然链路能跑通,但失去了SLB消除单点故障的基本能力,如果这台仅有的ECS出现异常,那么整个业务访问也会出现异常,建议至少添加两台以上ECS,以便单一服务器出现异常时,业务仍能持续正常访问。
2.误区:后端ECS能正常访问,但SLB无法访问,则说明SLB出现了异常
用户通过SLB访问业务出现异常,但通过hosts绑定后端ECS的公网IP能正常访问,用户据此推断后端业务是正常的,认为是SLB服务端出现异常导致业务访问异常,由于负载均衡的数据转发和健康检查都是通过内网进行的,所以从后端ECS的公网IP进行对比访问测试并不能反映真实情况,建议出现异常时,在后端ECS之间通过内网IP做对比访问测试。
3.误区:SLB的VIP能ping通就说明配置是正常的
用户通过ping SLB的VIP地址来判断SLB服务的有效性,其实这种测试非常不可靠,因为ping响应是由SLB服务端直接完成的,与后端ECS无关,只要配置了任意监听,即便相应监听处于异常状态,SLB VIP ping也是正常的,相反,如果SLB没有配置任何监听,其VIP是ping不通的,对于4层服务,建议通过telnet监听端口进行业务可用性测试;对于7层服务,建议通过实际的业务访问进行可用性测试。
4.误区:已经调整了健康检查间隔,结果还会出现访问超时
用户反馈已经调大了健康检查的最大间隔时间,但客户端访问仍然由于访问超时收到504错误,这是因为健康检查及业务转发是由SLB服务端相同的服务器承载,但却是完全不同维度的处理逻辑,来自客户端的请求经由SLB转发给后端ECS后,SLB服务端会有接收数据的超时窗口,而另一方面,SLB服务端持续对后端ECS根据检查间隔配置进行健康检查,这两者之间没有直接关系,唯一的影响是在后端ECS健康检查失败后,SLB不会再对其进行数据转发,建议客户端访问超时时,结合业务与SLB默认超时时间进行比对分析;健康检查超时时,结合健康检查与业务超时时间进行比对分析。
5.误区:从后端日志看,健康检查间隔与监听配置的间隔时间不一致
用户反馈通过SLB后端ECS的业务日志进行统计分析,发现健康检查的间隔非常短,与创建监听时配置的健康检查间隔时间不一致,这是因为LVS集群内所有节点都会独立、并行地遵循该属性去对后端ECS进行定期健康检查,由于各LVS节点的检查时间并不同步,所以从后端ECS上进行单独统计会发现来自负载均衡的健康检查请求在时间上并不会遵循上述时间间隔,如果健康检查频率过高对业务造成影响,可以参阅知识点“健康检查导致大量日志的处理”进行处理。
6.误区:大量健康检查形成DDoS攻击,导致服务器性能下降
用户认为SLB服务端使用上百台机器进行健康检查,大量健康检查请求会形成DDoS攻击,造成后端ECS性能降低,无论何种模式的健康检查,其规模均不足以达到DDoS攻击的量级:SLB集群会利用多台机器(假定为M个,个位数级别),对后端ECS的每个服务监听端口(假定为N个),按照配置的健康检查间隔(假定为O秒,一般建议最少2秒)进行健康检查,以TCP协议健康检查为例,每秒由健康检查产生的TCP连接建立数为:M*N/O,从该公式可以看出,M和N都是固定的且值很小,所以最终健康检查带来的每秒TCP并发请求数主要取决于创建的监听端口数量,健康检查不会对后端服务器性能造成显著影响。
四、SLB使用最佳实践
基本配置步骤
1.1 准备工作
开通一台负载均衡实例和与负载均衡同一个地域的两台ECS服务器,创建好以后,可以在负载均衡的控制台看到这样一台实例。
1.2 创建监听
给负载均衡创建一个监听,监听可以简单理解为对应后端服务器里面的一个应用,比如一个网站,点击监听,然后点击添加监听,假设后端服务器里面有一个http的网站前端协议端口,我们可以将前后端协议端口都写成80,然后根据自己的需要选择调度算法。
1.3 健康检查配置
可以选择TCP方式进行健康检查,健康检查端口会默认和后端服务器的端口保持一致,直接确认即可,现在一个监听就配置好了。
1.4 后端服务器配置
接下来要去规定这台负载均衡的后端服务器是哪些,点击后端服务器,然后点击未添加服务器,将我们刚才创建的两台服务器勾选,然后批量添加即可,这里有一个权重需要注意,这里的权重是一个比例的概念,如果两台服务器写的都是100,那么流量将会以1:1的方式被转发到后端的两台服务器上,到此为止,我们就完成了负载均衡的一个简单配置。
高级配置技巧
2.1 会话保持
会话保持是指将来自同一客户端的所有请求都转发到同一台后端服务器上,这样可以确保用户的会话信息在同一个服务器上处理,避免因服务器切换导致的会话丢失,常见的会话保持方式包括Cookie插入和IP哈希等。
2.2 SSL终止
SSL终止是指将客户端与负载均衡之间的HTTPS连接转换为负载均衡与后端服务器之间的HTTP连接,这样可以减少后端服务器的加密解密负担,提高整体性能,配置SSL终止时,需要上传证书并在监听器中启用相关选项。
2.3 内容缓存
缓存是指将经常访问的内容缓存到负载均衡服务器上,减少后端服务器的压力,常见的缓存策略包括LRU(最近最少使用)和LFU(最不常用)等,配置内容缓存时,需要指定缓存键、缓存时间和缓存空间等参数。
五、常见问题及FAQs
Q: 如何选择合适的调度算法?
A: 根据业务需求选择合适的调度算法,轮询适合长连接服务;加权轮询适合服务器性能不一的情况;最小连接数适合短连接服务,具体可参考官方文档中的调度算法说明。
Q: 如何优化SLB的性能?
A: 可以通过调整健康检查频率、开启会话保持、配置内容缓存等方式优化SLB的性能,还可以通过增加或减少后端服务器的数量来应对不同的负载情况。
Q: 如何处理健康检查失败的情况?
A: 如果健康检查失败,SLB会自动将请求转发到其他健康的后端服务器上,如果所有后端服务器都不健康,则会返回错误码给用户,建议及时排查故障原因并恢复服务。
小伙伴们,上文介绍了“负载均衡slb使用手册”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复