我使用了 ELB 负载均衡器,不过遇到一个问题,均衡器里面目标机器有 A,B 两台,当两台同时工作时,项目可以正常访问,当其中一台故障了,项目就会出现 502,我测试了一段时间,发现是 ELB 检测故障的问题,ELB 需要一定的时间才可以检测出故障机器,有没有什么办法可以做到无缝检测?
1
Firxiao 2019-06-26 10:22:59 +08:00
你需要配置健康检查
|
2
xuuuu 2019-06-26 10:31:35 +08:00
目标组里有个健康检查的配置,默认 30s 检查一次(最小 5s),还有个判断为故障的阈值,默认 2 次(最低 2)
|
3
ETiV 2019-06-26 10:38:03 +08:00 via iPhone
无缝不可以,顶多像#2 那样,10 秒后 LB 才感知到后台跪了
|
4
liangming1 OP |
5
fredcc 2019-06-26 14:21:36 +08:00
不可能是无缝,如果是一次健康检测请求失败就分离并终止实例,这样子在实际生产环境没法运行的。服务器随便抖动下负载均衡下面就没有可用实例了。健康检测的概念是连续成功访问几次才视为实例可用,或者连续失败多少次后才视为实例不可用
|
6
Firxiao 2019-06-26 14:22:49 +08:00
后端应用是 http? 是的话 可以试试 alb. 效果应该会好一些.
|
7
liangming1 OP @Firxiao 好的,我去研究一下。elb 我是放弃了。
|
8
petelin 2019-06-26 21:07:56 +08:00 via iPhone
@liangming1 为什么不在客户端上想办法加个重试就会好很多啊
|
9
liangming1 OP @petelin 是可以在客户端上加个判断重连,不过会影响体验,所以没那么做。
|