场景:广州地域一台公网 CLB(不是传统型负载均衡),HTTPS 监听 443,一条 URL 转发规则,后端协议 HTTP。两个可用区各 2 台 CVM,权重都大于 0,未开会话保持。健康检查是 HTTP GET /ready,正常状态码只保留 2xx,响应超时 2 秒,检查间隔 5 秒,健康阈值和不健康阈值都是 3。下单接口在这四台上,依赖同地域云数据库 MySQL 8.0。
现象:
/ready 都返回 500。十几秒后,绑定后端服务详情里四台都变成异常。异常之后新请求没有被拒绝,仍打到这四台上,下单几乎全部失败。只异常一个可用区时,流量会切到另一组,这点符合预期。/ready 已返回 200,控制台健康状态还要再连续成功几次才变回健康。这段时间业务已经能成功,健康检查告警还在响。已尝试:
/ready 改为只探活进程、不探数据库。全部异常不再出现,但数据库不可用时流量照样进来,重试一样把连接打满。问题:
/ready 该不该包含数据库依赖?包含会把四台一起打成异常并继续转发,不包含又摘不掉真实故障。客户端重试在这个窗口里该怎么限制,才不会在恢复瞬间把数据库连接打满?相似问题