我有一个设置,其中服务器 A 充当客户端,通过 HAProxy 与服务器 B 通信。服务器 B 运行四个类似的 Golang Fiber 实例,每个实例都在 EC2 t3xlarge 实例上启用了 Prefork。服务器 B 每秒处理数千个请求。但是,我注意到健康检查存在问题,HAProxy 返回了 502 错误,这可能表示健康检查失败。
前端配置:
frontend apifront
bind *:9898
maxconn 50000
mode http
log global
default_backend apiserver
后端配置:
backend apiserver
mode http
option http-keep-alive
timeout connect 5s
timeout server 30s
timeout queue 60s
timeout check 5s
timeout http-request 10s
timeout http-keep-alive 10s
http-reuse safe
log global
option httpchk GET /health
balance roundrobin
server apiserver1 localhost:9881 check
server apiserver2 localhost:9882 check
server apiserver3 localhost:9883 check
server apiserver4 localhost:9884 check
观察结果:
- 所有服务器的健康检查失败次数均超出预期。
- 从服务器 A 的日志中可以看到,HAProxy 经常返回 502 错误
问题:
- 在此设置中是否会出现频繁的健康检查失败和 502 错误的行为?
- 有没有办法排除故障并找出健康检查失败的根本原因?
- 可以进行哪些调整或微调以提高健康检查的可靠性并减少 502 错误?
- 作为服务器设置配置的新手,我应该考虑最佳实践或额外检查吗?
任何关于解决此问题的见解或指导都将不胜感激。我还准备提供有关我的设置的更多详细信息,以提供帮助。谢谢!