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