阿里云SLB常见误区和注意事项

阿里云SLB常见误区和注意事项

前言

阿里云负载均衡(Server Load Balance)简称SLB的引入,可以降低单台服务器的负载压力,防止高并发流量对业务的冲击,提高业务的可用性,动态的对后端服务器扩容或缩容对业务进行弹性调整。

SLB功能

1.高可用和负载均衡

SLB服务通过设置vip,将同一地域的多台云服务器资源虚拟成一个高性能,高可用的应用服务池,再根据应用的指定方式,将来自客户的网络请求分发到云服务池中。

2.健康检查以及故障摘除

SLB服务会对云服务池中的ECS进行健康检查,自动隔离异常状态的ECS,从而解决了ECS的单点问题,同时提高了应用的整体服务能力。

3.攻击防范

SLB服务还具备TCP与Http抗DDos攻击的特性,增强了应用服务器的防护能力。SLB需要配合ECS使用

SLB技术架构

整个SLB系统由三部分组成:

1.四层负载均衡(TCP/UDP协议)

2.七层负载均衡(HTTP/HTTPS协议)

3.控制系统

四层负载均衡,采用开源软件LVS,并根据云计算需求对其进行了制定化;

七层负载均衡,采用开源软件Tengine

控制系统,用于配置和监控负载均衡系统

技术限制

1.仅支持tcp/udp http/https四种协议

2.后端服务器仅支持ECS,不支持第三方服务器

3.仅支持轮询,加权轮询和最小加权连接数这三种调度算法

不支持七层SSL Session超时时间的调整。当前全统一300秒

4.不支持HTTP keep-alive 超时时间的调整。配置为15秒

备注:如果客户端访问 SLB HTTP 监听时使用长连接, 那么这条连接最长的空闲时间为 15 秒, 即如果超过 15 秒没有发送任何 HTTP 请求, 这条连接将会被 SLB 主动断开。如果您的业务可能会出现超过 15 秒的空闲, 需要从业务层面检测连接的断开并重新发起连接。

5.不支持转发超时时间的调整:

当前配置: TCP 900s,UDP 300s,HTTP 60s,HTTPS 60s上述配置是指 SLB 服务端从后端接收数据并进行转发的超时时间,并非健康检查超时时间间隔。如果超时,通常会向客户端返回 504 错误码。

6.金融云 SLB 基于安全性考虑,仅允许开放特定的端口:80,443,2800-3300,6000-10000,13000-14000

SLB常见误区

1.SLB的vip可以ping通说明配置正常

一般发生在监控和排错时候,能Ping通vip只是说明SLB服务端对你响应了,与后端ECS无关。所以建议:

如果是四层业务,通过telnet监听端口进行业务可用性测试,对于七层业务,直接通过curl或者实际业务的访问进行测试。

2.已经调整了健康检查时间间隔,还会出现访问超时

这是两个方面的时间概念,二者没什么关系。

客户端访问超时,应该结合业务与SLB默认超时时间对比分析;健康检查超时,集合健康检查与业务超时间对比分析。

3.从后端日志看,健康检查间隔与配置的间隔时间不一致

LVS集群内所有节点,都会独立,并行的遵循该属性对后端ECS进行定期健康检查。由于对各lvs节点的检查并不同步,如果从某一个ECS进行单独统计,则会发现来子负载均衡的健康检查请求在时间上并不会遵循上述时间间隔。

建议:如果健康检查频率过高对业务造成影响,可以参阅知识点 健康检查导致大量日志的处理 进行处理。

4.移除服务器与权重设置为0是一样的

  • 移除后端服务器:会导致该服务器的连接中断,新建连接不会转发该ECS上
  • 权重设置为0:已经建立的连接不会中断,除非客户端超时或主动断开,新连接不会转到ECS上

建议:在业务调整或服务器维护时,提前将相应服务器的权重置零,直至连接持续衰减至零。操作完成后,再恢复权重配置,以降低对业务的影响。

如何选择合适协议?

配置健康检查

健康检查用于实时探测后端 ECS 上的业务可用性,以避免新增连接被分发到异常服务器对业务造成影响。由于是 SLB 依赖的核心服务,所以 4 层协议(TCP/UCP)的健康检查无法关闭。

在配置健康检查时,注意如下要点:

  • 根据业务情况合理选择 TCP 或 HTTP 模式健康检查TCP 模式健康检查只能检查端口的可用性,对 7 层 HTTP 状态无法感知。所以,Web 类 7 层业务建议配置 HTTP 模式健康检查。TCP 模式健康检查由于在连接建立后即主动发送 RST 断开连接,所以可能会导致业务层面认为是非正常中断,导致产生大量相关联的错误日志。该问题可以参阅 健康检查导致大量日志的处理 进行处理。如果使用 HTTP 健康检查模式,建议合理调整后端日志配置,避免健康检查 HEAD 请求过多对 IO 性能造成影响。
  • 合理配置健康检查间隔
    根据实际业务需求配置健康检查间隔,避免因为健康检查间隔过长导致无法及时发现后端 ECS 出现问题。具体请参考:健康检查的相关配置,是否有相对合理的推荐值?
  • 合理配置检查端口与检查 URL对于 4 层 TCP 协议,由于虚拟服务器组可以由后端 ECS 不同的端口承载业务,因此在配置健康检查时不要设置检查端口,而应该”默认使用后端服务器的端口进行健康检查”。否则可能导致后端 ECS 健康检查失败。对于 7 层 HTTP 协议,使用虚拟服务器组合转发策略时,确保健康检查配置策略中的 URL 在后端每台机器上都可以访问成功。使用 HTTP 模式健康检查时,不要对根目录进行检查。建议配置为对某个静态页面或文件进行检查以降低对主页的冲击。但是,相应的,这可能会导致误判:健康检查 URL 虽然访问是正常的,但主页实际上已经出现异常。
  • UDP 健康检查
    当前 UDP 协议健康检查可能存在服务真实状态与健康检查不一致的问题:如果后端 ECS 服务器是 Linux 服务器,在大并发场景下,由于 Linux 的防 ICMP 攻击保护机制,会限制服务器发送 ICMP 的速度。此时,即便服务已经出现异常,但由于无法向前端返回 “port XX unreachable” 报错信息,会导致负载均衡由于没收到 ICMP 应答进而判定健康检查成功,最终导致服务真实状态与健康检查不一致。如果相应服务器非正常关机,由于也不会返回 “port XX unreachable” 报错信息。所以也会导致健康检查处于”正常”状态的误报。

选择与配置后端 ECS

在后端 ECS 的选择与配置时,注意如下要点:

  • 在同一个服务器集中,同时加入不同可用区的服务器,以实现同城容灾
  • 根据服务器规格的差异,配置与之成正比的权重
  • SLB 后端最少配置两台以上 ECS,以避免单台 ECS 出现异常导致整个业务也出现异常
  • 后端 ECS 建议无状态部署:即只用于计算,而数据调用与存储后连至后端的 OSS、RDS 等公共服务。这样可以无需为 ECS 之间的数据同步问题而困扰。
  • 建议基于相同的镜像或自定义镜像创建后端 ECS 服务器,以保障配置的一致性。
  • 后端 ECS 归属安全组及系统内部防火墙必须对 SLB 服务端地址段进行访问放行。

调整后端 ECS 的操作建议

新增后端服务器

在往 SLB 内新增服务器时,注意如下要点:

  • 建议新增服务器时,将权重置零,在确保业务正常运行后,再调整权重使其上线。
  • 如果业务是长连接,在新增服务器时,建议先将相应监听的调度算法修改为轮询模式,然后逐步调高新增服务器的权重,以降低对该新增服务器的过高冲击。

调整、维护业务和后端服务器

在后端 ECS 服务器的日常调整、维护过程中,注意如下要点:

  • 选择合适的业务窗口,定期对后端 ECS 进行重启操作(操作前先创建快照进行备份),以便应用系统补丁,并主动触发、感知系统内部错误导致的服务器无法正常启动等问题。
  • 业务更新或系统维护时建议的操作步骤:

移除服务器

如果确认服务器不再使用,不建议直接移除服务器。而是参阅前述步骤,将相应服务器权重置零。待已建立连接全部正常断开后,再移除该服务器。

常见问题的排查思路

SLB 在使用过程中的常见问题与排查思路可以参阅下列文档,本文不再详述:

典型案例

后端 ECS 负载不均

问题场景:
后端 ECS 规格均一致,但其中几台服务器的 PPS 一直非常高。而新加入的服务器,相对负载非常低。
业务高峰期,相关服务器健康检查异常,导致服务器下线,并进一步导致其它服务器负载升高,引发整个 SLB 后端出现雪崩式异常,业务受到严重影响。

排查思路:

  1. 业务监听使用 WRR 调度算法,在 SLB 服务端统计,在单位时间内分发到各服务器的连接数是均衡的。
  2. 异常服务器上的连接数持续居高不下,尝试调高 OS 层面的 TCP 连接数限制等配置,无明显效果。
  3. 和客户交流,结合业务分析,相关连接来源正常,都是正常的业务连接。但业务场景是物联网的监控数据上报,使用的是长连接。所以除非主动断开相关连接,否则相关连接会持续堆积。

应对措施:

  1. 将负载较低的服务器的权重值调低。
  2. 将监听的调度算法修改为 WLC。
  3. 将异常服务器的权重值置零。
  4. 将负责较低的服务器的权重值逐步调高。

以上步骤用于将负载逐步转移到新加入的服务器,并避免对新增服务器及异常服务器的冲击。

  1. 待异常服务器的连接数下降到合理水平后,将其重新上线(重新配置权重)。
  2. 由于后端服务器负载总体偏高,导致业务高峰期多台服务器无法满足业务需求,出现雪崩式异常。所以,同步建议客户对 SLB 后端服务器进行扩容。

参考:

https://yq.aliyun.com/articles/80055#7

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Loading...