设置高可用性基础架构

Setting High Availability Infrastructure

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

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

[技术栈] 代理服务器 Java Java MySQL 蔚蓝

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

谢谢

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

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

此外,您还需要测试如何为以下内容设置超时

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

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