我们可以让Google Cloud Load Balance在出错时重试请求吗?

问题描述 投票:0回答:2

有时几个实例只响应错误5xx,我想知道是否有解决方案将请求重定向到其他实例?

谢谢

google-cloud-platform load-balancing
2个回答
0
投票

根据GCP LB文档,只重试超时,然后仅在特殊情况下。不会重试错误代码响应。

要解决此问题,您可以在实例组上创建HTTP运行状况检查(还有https,tcp和http2运行状况检查)。

创建HTTP运行状况检查

$ HOST_HEADER=www.example.com
$ gcloud beta compute health-checks create http hc-http-port-80 \
    --description="Simple HTTP port 80 health check" \
    --check-interval=5s \
    --timeout=5s \
    --healthy-threshold=2 \
    --unhealthy-threshold=2 \
    --port=80 \
    --host=${HOST_HEADER}

创建后,您可以将其与LB关联

$ cloud compute backend-services update [BACKEND_SERVICE_NAME] \
    --region [REGION] \
    --health-checks [HEALTH_CHECK_NAME]

查找后端服务ID如果您不知道后端服务的名称,可以使用此命令获取它

gcloud compute backend-services list \
    --filter="loadBalancingScheme=EXTERNAL" \
    --filter="protocol=HTTP"

0
投票

关于安东尼提到的内容,并根据官方文档1

“HTTP(S)负载平衡在某些情况下重试失败的GET请求,例如响应超时耗尽时。”

在这里,您可以找到有关如何配置响应超时2的官方指南。

但实际上你要求的是,如果重试之后,请求可以发送到另一个实例。

没有关于哪个实例将处理请求的优先级顺序,负载均衡器将仅将请求发送到健康的后端。后端的选择将在您定义的某些参数上进行,例如CPU负载。如果负载均衡器以5xx响应,则意味着没有健康的后端可用。

您需要努力减轻这些5xx错误:可能后端无法处理收到的负载量,Web服务器没有监听正确的端口,也可能没有正确配置健康检查。


© www.soinside.com 2019 - 2024. All rights reserved.