首页 > 解决方案 > 设置高可用性基础架构

问题描述

[问题说明] 我们有一个 Tier 0 服务,它背后配置了 haproxy LB 和多个后端服务器。目前,基础设施以大约 100 毫秒的速度为 P99 提供服务。现在,根据 100% 的可用性和 0 停机时间。有时我们会看到,一些后端服务器行为不端或超出 LB,并且那些后端服务器上的所有登陆请求都超时。所以我们希望有这样的配置,如果服务器上的任何请求花费超过 100 毫秒,那么这个相同的请求可以路由到另一个后端服务器,我们可以实现 ~100℅ 无超时。

[免责声明] 我理解在某个退休后如果仍然请求超时,那么它将为我们的 Tier - 0 服务的最终消费者提供超时服务。

[技术栈] HAProxy Java Java MySQL Azure

很高兴讨论这个问题,因为我搜索了很多但没有得到任何参考,我的想法是这样的,但是这可以通过其他方式实现,这样我们就可以在定义的服务 SLA 下实现无停机时间。

谢谢

标签: azuremicroservicesload-balancinghaproxyhigh-availability

解决方案


option redispatch指令将请求发送到不同的服务器。该retry-on指令说明了要重试的错误类型。该retries指令规定了重试的次数。

option redispatch 1
retry-on all-retryable-errors
retries 3

另外,您需要测试如何为以下设置超时

timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms

确保所有请求都是幂等的并且没有副作用。否则,你最终会给自己带来很多问题。


推荐阅读