Cloudflare Load Balancing API 为每个池和端点添加全局健康状态。它还让您了解我们的网络在更广泛的层面上看到的情况。Cloudflare 使用法定人数(quorum)系统确定池和端点健康状态。法定人数来自负责在区域运行健康监视器请求的 PoP,并使用多数结果。
排查故障时,使用 Cloudflare API 以编程方式访问 Cloudflare Load Balancing。Health Monitor Events 和 Load Balancer Monitors 路由是访问负载均衡事件日志和重新配置 Cloudflare 监视器的绝佳工具。
您可以从 Cloudflare API 的 List Health Monitor Events 命令获取端点健康的按数据中心细分:
GET user/load_balancing_analytics/events如果健康监视器请求失败,细分将包含原因。
常见故障原因和解决方案如下所列。
我们的健康监视器请求未能与端点建立 TCP 连接。
这通常发生在 Cloudflare 与端点之间存在网络故障,和/或防火墙拒绝允许我们的连接时。确保您的网络和防火墙配置不会干扰负载均衡流量。
端点未在配置的超时时间内返回 HTTP 响应。如果超时设置较低——例如 1 或 2 秒——就会发生这种情况。
我们建议增加 HTTP 响应超时以允许端点响应。
Cloudflare 收到的 HTTP 状态码与 Cloudflare 监视器配置的 expected_codes 属性中定义的值不匹配。
响应代码必须与 expected_codes 匹配。使用 List Monitors API 命令确认值正确。
如果监视器配置为使用 HTTP 连接而端点重定向到 HTTPS,您也可能看到此问题。在此情况下,响应代码通常为 301、302 或 303。
要么将 Cloudflare 监视器配置更改为使用 HTTPS,要么将 follow_redirect 的值设置为 true,以便我们可以解析正确的状态码。
从端点返回的响应体不包含监视器中配置的 expected_body 的(不区分大小写)值。
请注意,我们仅读取响应的前 10 KB。如果您返回更大的响应,且 expected_body 不在前 10 KB 中,健康监视器请求将失败。
确保 expected_body 在响应体的前 10 KB 内。
证书不受公共证书颁发机构(CA)信任。
如果您使用自签名证书,我们建议要么使用公开信任的证书,要么将监视器上的 allow_insecure 属性设置为 true。
我们的健康监视器(客户端)无法将服务器证书上的名称与请求的主机名匹配。
使用 List Monitors 命令确认 Cloudflare 监视器中设置的 header 值正确,并使用 Update Monitors 命令进行任何必要的更改。
如果您使用较旧版本的 TLS 或端点未配置 HTTPS,可能会发生此错误。
确保端点支持 TLS 1.0 或更高版本并配置为 HTTPS。
服务器无法识别客户端提供的名称。设置 host header 时,我们在初始 TLS 握手中将其设置为 ServerName。如果未设置,我们不会提供 ServerName,这可能导致此错误。
在监视器对象中设置 host header。
无法从我们的网络到达 IP 地址。常见原因是 ISP 或托管提供商网络问题(例如 BGP 级别),或 IP 不存在。
确保 IP 准确,如果是,检查是否存在 ISP 或托管提供商网络问题。
如果您尝试创建超出套餐包含数量的对象(监视器、池或端点),您将收到此错误。
如果使用仪表板,您将无法创建其他对象。
如果您使用 Cloudflare API,您将收到错误消息。
- 需要创建更多对象(负载均衡器、池、端点或监视器)的 Enterprise 客户应联系账户团队讨论此问题。
- 自助服务客户可以升级 Load Balancing 订阅以获得更多端点,从而增加负载均衡容量。
数据传输未得到确认,数据重传未成功。
确认 SYN-ACK 握手是否在端点发生,并联系 Cloudflare 支持。
表示浏览器与 Web 服务器的连接不安全。
更换 wifi 网络、连接到有线网络,或验证网络连接稳定。
由于网络不可用,Cloudflare 无法连接到端点。这通常由网络问题或错误的 IP 引起。
检查 Cloudflare 负载均衡器配置中为端点输入的 IP,或通过 DNS 为端点主机名返回的 IP。
通常由 HTTP 502 错误或 bad gateway 引起。
确保端点响应请求,且没有应用崩溃或处于高负载。
端点主机名不存在。
确认端点解析到 IP 地址。
客户端从端点接收数据时发生网络错误。
确认端点是否经历高流量或错误。
监视器中存在配置错误,未对池端点运行检查。
查看监视器配置,确保它与对端点的预期请求匹配。
端点的主机名解析为内部或橙云代理的 IP 地址。未对池端点运行检查。
Cloudflare 不允许使用由 Cloudflare 代理的端点主机名。
您的账户或 zone 未启用 Load Balancing。
Enterprise 客户请联系 Cloudflare 账户团队。Free、Pro 和 Business 客户应启用 Load Balancing。
如果您在配置负载均衡器端点时尝试设置 host header 值,您将收到错误。
Cloudflare 现在将配置的端点 host header 限制为与账户关联 zone 的直接子域的完全限定域名(FQDN)。例如,此 host header 将与负载均衡器本身相同的 zone,但池可在多个负载均衡器中使用。
当您尝试删除负载均衡器地理导向 区域引用的池时,您将收到此错误。
从负载均衡器的地理导向配置中移除池。如果您的负载均衡器不再使用地理导向,您需要重新启用地理导向,然后移除池。
如果故障无法分类为上述任何其他类型的故障。