健康检查:第一时间发现节点失效
生产环境的采集与访问任务最怕单点代理突然失效。与其人工盯着监控换节点,不如提前设计好健康检查、熔断与备用节点机制,让代理故障在秒级自愈。健康检查有三种落地方式:
- 主动探活: 每 30~60 秒通过代理请求一次轻量回显接口,连续 3 次失败即把节点标记为不可用。
- 被动统计: 对真实业务请求的失败率与平均耗时做滑动窗口统计,超过阈值自动给节点降权。
- 错误分类: 区分连接失败、认证过期与目标站封禁三类错误,封禁要换出口,认证过期要续凭证,处理方式完全不同。
熔断与自动切换策略
可以借鉴微服务里的熔断思路,避免反复把请求打向一个已经坏掉的节点:
- 失败率超阈值后熔断该节点,后续请求立即切换,不再等待超时。
- 进入半开状态:每隔 60 秒放行少量探测请求,成功则恢复节点,失败则继续熔断。
- 切换时遵循优先级:同区域备用节点优先,跨区域节点兜底,把延迟波动控制在最小范围。
备用节点与多供应商容灾
- 主备双通道: 常备一家主力供应商与一家备用供应商,备用账号提前完成充值与白名单配置,故障时才能无缝顶上。
- 出口去重: 切换时跳过最近使用过的 IP,防止连续命中同一个坏地址,造成"切了等于没切"。
- 会话迁移: 带登录态的任务切换前先对原节点做一次快速重试,确认失败再迁移会话,减少重新登录的代价。
用 HAProxy 快速落地健康检查
不想自己写调度代码时,HAProxy 的 check 与 backup 参数即可实现探活与自动接管:
backend proxy_nodes
balance roundrobin
default-server inter 5s fall 3 rise 2
server p1 10.0.0.1:8080 check
server p2 10.0.0.2:8080 check
server backup1 10.0.0.3:8080 check backup
配置含义:每 5 秒检查一次,连续 3 次失败踢出节点,2 次成功重新纳入;标记为 backup 的服务器只在主力全部不可用时启用。应用侧再配合客户端超时与一次重试,就组成了完整的故障转移链路。
Article ID: 87
(本文仅供技术交流,请遵守法律法规)