为什么通过负载均衡无法访问后端业务?
造成负载均衡无法访问后端业务的原因有很多,遇到这种问题的时候,我们要学会如何去排查。
- 排查是否可直接访问后端主机:负载均衡器无法将请求发送到后端主机,可能是因为后端主机当前宕机或不可访问。可以直接访问后端主机的IP地址来进行排查,确保后端主机正常运行。
- 排查健康检查是否正常:如果后端主机未通过健康检查,则负载均衡器将不会将请求发送到该主机。请确保后端主机在健康检查中通过,并检查健康检查的设置是否正确。
- 排查后端主机配置是否正确:在“后端云主机组”页面查看已添加的后端主机的参数,云主机权重如果设置为0,则不会向这个主机转发流量;业务的端口需要与实际的业务端口相同。
- 检查访问控制配置是否正确:在监听器基本信息页面,查看访问控制配置是否正确,是否已经放通了客户端的IP地址。
- 网络配置问题:可能存在网络配置问题,导致负载均衡器无法与后端主机建立连接。确保网络配置正确,并检查网络访问权限、路由表、子网等设置。
- 会话保持配置错误:如果应用程序需要会话保持,但会话保持配置有误,负载均衡器可能会将请求发送到不同的后端主机,导致会话状态丢失。确保会话保持配置正确,并检查会话保持策略和负载均衡器的支持。
如何检查请求的不均衡?
可以通过以下方式检查请求的均衡:
- 基于轮询算法:如果某个主机处理的请求数量明显少于其他云主机,那么可以认为存在请求不均衡的情况。
- 基于权重算法:如果某个主机的权重值过高或过低,可能会导致请求不均衡。
- 基于源IP算法:同一个IP发出的请求都会分发到同一个后端,导致流量不均衡。
- 基于响应时间:如果某个后端的响应时间较长,可能意味着该主机的负载较高或存在性能问题,需要进行调整。
- 基于健康检查:负载均衡器定期对后端主机进行健康检查,如果某个主机无法正常响应或处于宕机状态,负载均衡器将不再将请求分发给该主机,从而避免请求不均衡。
- 基于会话保持:如果开启会话保持,负载均衡器会将同一个客户端的请求始终分发到同一个后端主机上,以确保会话的连续性。如果客户端的数量相对较少,并且会话保持的配置不合理,可能会导致请求不均衡的问题。
如何检查弹性负载均衡服务不通或异常中断?
要检查弹性负载均衡(ELB)服务是否不通或异常中断,可以采取以下步骤:
- 检查负载均衡器的状态:登录到管理控制台,检查负载均衡器的状态。确保负载均衡器处于运行状态,没有错误或警告信息。
- 检查负载均衡器的健康检查状态:负载均衡器通常会执行健康检查来确定后端服务的可用性。检查负载均衡器的健康检查状态,确保后端实例通过了健康检查,没有标记为不可用或异常。
- 检查安全组规则和网络访问控制列表(ACL):确保负载均衡器的安全组规则和网络ACL允许来自客户端和后端实例的流量通过。如果有必要,可以针对特定的端口和协议进行更详细的配置。
- 检查后端实例的状态:确保后端实例正在运行,并且没有故障或异常。检查后端实例的状态和日志,确保应用程序或服务正常工作。
- 检查DNS解析:负载均衡器通常使用域名解析将来自客户端的流量转发到后端实例。检查域名解析是否正确配置,并确保有向负载均衡器发出的请求能够正常解析到正确的IP地址。
- 监控分析:使用云监控服务来监视负载均衡器的性能和资源使用情况。
如何排查ELB的异常返回码?
常见异常返回码有400、401、403、500等,这里可以参考下表进行排查处理。
状态码 | 状态码含义 | 可能原因 |
---|---|---|
400 | 错误请求 | 客户端发送的请求格式不符合HTTP规范。 请求的语法可能存在错误。 无效的参数或参数不完整 |
401 | 未授权 | HTTP40错误代表用户没有访问权限,需要进行身份认证。 |
403 | 禁止访问 | 一般是后端主机返回,后端主机拦截了该请求。 |
404 | 资源未找到 | 后端主机返回错误码,需排查后端主机业务。 ELB转发策略配置不正确,未指定到正确的后端主机。 |
408 | 请求超时 | 当客户端向主机发送请求后,主机在规定的时间内没有响应 |
413 | 请求实体过大 | 当因请求的实体过大,超出主机的处理能力,导致主机无法处理请求时就会返回此错误代码。 |
414 | URI太长 | 客户端发送的请求URL或查询字符串参数过大。 |
499 | 客户端主动断开连接 | ELB还未将响应信息返回给客户端,客户端主动断开连接。此错误码仅记录在访问日志中。 |
500 | 主机内部错误 | 后端主机返回,为主机内部错误。 |
501 | 未实现 | ELB服务无法识别此请求。 |
502 | 错误的网关 | ELB未正确配置后端主机的监听通信端口。 ELB在尝试建立连接或向后端服务发送数据时从后端主机收到了TCP RST。 后端主机响应格式错误,或者包含无效的HTTP响应头。Ÿ 未正确配置后端主机,例如未正确配置路由、网络ACL等。 |
503 | 服务不可用 | 一般是后端主机返回,表示后端服务不可用。 |
504 | 网关超时 | 负载均衡设备或代理服务器无法在设定的超时时间内将请求转发到可用的上游服务器而引起的。 |
负载均衡请求不均衡,怎样排查?
- 检查是否开启了会话保持。如果配置了会话保持,而客户端的个数又比较少时,很容易导致不均衡。
- 检查后端云主机的健康检查状态是否正常,特别要关注下是否有健康检查状态一会正常一会异常的情况。健康检查异常或者状态切换都会导致流量不均衡。
- 检查负载均衡算法是否是源IP算法。此时同一个IP发过来的请求都会分发到同一个后端,导致流量不均衡。
将云主机添加到ELB后端时是否设置了权重,权重不同,分发的流量也不同。
为什么云监控EIP带宽使用统计与弹性负载均衡监控的网络流出速率数据不一致?
以下一些因素可能导致云监控EIP带宽使用统计与ELB监控的网络流出速率数据不一致:
- 内网外网访问:云监控EIP带宽使用统计通常只包括外网访问的数据,而弹性负载均衡监控可能同时包括外网和内网访问的数据。这意味着,如果有内网访问,弹性负载均衡监控的网络流出速率数据会比云监控EIP带宽使用统计更高。
- 限流情况:当流量超过EIP的带宽限制时,EIP会被限流,而弹性负载均衡内部的访问不会受到限制。这可能导致弹性负载均衡监控的网络流出速率数据在超过EIP带宽时仍然较高,而云监控EIP带宽使用统计可能受到限流影响而较低。
压测性能上不去,如何检测?
- 检查后端云主机的负载状态,如果CPU达到100%,可能是后端应用达到性能瓶颈。
- 查看流量是否超过绑定到弹性负载均衡的EIP的带宽,带宽超限后,会有大量丢包和请求失败,影响压测性能。
- 如果是短连接测试,可能是客户端端口不足导致建立连接失败,可以通过客户端处于time_wait状态的连接数量来判断。可通过增加客户端IP来解决。
- 后端云主机的监听队列backlog满了,导致后端云主机不回复syn_ack报文,使得客户端连接超时。可以通过调整net.core.somaxconn参数来调大backlog的上限值。
如何检查弹性负载均衡业务访问延时大?
通过弹性IP直接访问云主机,绕过弹性负载均衡进行访问,以确定访问延时大的问题是由弹性负载均衡引起的,还是前端网络问题或后端云主机问题。
检查后端主机的性能和健康状态。如果后端主机存在性能问题或负载过高,可能会导致访问延迟增加。
检查网络的带宽、延迟和丢包率等指标,确保网络状况良好。网络问题可能会导致业务的访问延迟增加。
如果以上步骤无法解决问题,您可以联系客服寻求技术支持解决。
负载方式选择了“源IP算法”,但是同一个IP地址同时出现在了两台后端主机上是什么原因?
如果后端主机下线后重新上线,弹性负载均衡会重新进行一致性Hash运算并对后端主机进行编号。这可能导致之前分配给某个主机的IP地址被分配给另一台云主机,从而出现同一个IP地址同时出现在了两台后端主机上的情况。
为什么配置了访问控制白名单后还能访问后端主机?
监听器配置了访问控制白名单后,仅允许特定IP访问负载均衡,仅转发来自所选访问策略组中设置的IP地址或地址段的请求。但是作为后端主机的云主机,除了作为负载均衡的后端主机接收流量,同时其本身IP地址也可以被其他方式访问。如果需要对作为后端主机的云主机进行访问控制,可以通过配置网络ACL或者安全组规则实现,详见 网络ACL的简介 和 安全组概述。