问题陈述我们有一个Tier 0服务,它有haproxy LB和多个配置在它后面的后端服务器。目前,基础架构以大约100毫秒的速度为P99提供服务。现在,根据100%的可用性和0停机时间。有时我们会看到,一些后端服务器行为不佳或脱离LB,所有在这些后端服务器上登陆的请求都会超时。因此,我们希望有这样的配置,如果服务器上的任何请求花费超过100ms,那么相同的请求可以路由到另一个后端服务器,我们可以实现~100℅无超时。
免责声明我理解,在某个特定的退休之后,如果仍然请求超时,那么它将为我们的Tier -0服务的最终消费者提供超时服务。
技术堆栈HAProxy Java Java MySQL Azure
我很高兴讨论这个问题,因为我搜索了很多,但没有得到任何参考,我的想法,但这是可能的,通过其他方法,以便我们可以实现无停机和在定义的SLA的服务。
谢谢
发布于 2021-08-31 05:17:24
option redispatch
指令将请求发送到不同的服务器。retry-on
指令说明要重试的错误类型。retries
指令规定了重试的次数。
option redispatch 1
retry-on all-retryable-errors
retries 3
此外,您还需要测试如何为以下各项设置超时
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
确保所有请求都是幂等的,并且没有副作用。否则,你最终会给自己带来很多问题。
https://stackoverflow.com/questions/68993131
复制相似问题