我们可以通过Google Cloud Load Balance来重试错误请求吗?

时间:2019-02-27 13:25:14

标签: google-cloud-platform load-balancing

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

谢谢

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:0)

关于安东尼所说的话,并基于官方文档1

  

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

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

但是您真正要的是重试之后是否可以将请求发送到另一个实例。

实例没有处理请求的优先级顺序,负载平衡器将仅将请求发送到正常的后端。后端的选择将取决于您定义的某些参数,例如CPU负载。如果负载平衡器的响应为5xx,则表示没有健康的后端。

您将需要解决这些5xx错误:后端可能无法处理收到的负载量,Web服务器未在侦听正确的端口或运行状况检查未正确配置。