首页/AI/大模型部署与运维速查/网关高可用:别让网关成单点

网关高可用:别让网关成单点

网关按无状态服务部署:两副本起步 + 前置负载均衡/虚拟 IP,配额计数与配置放外部存储;任一副本可随时重启替换。

网关为什么会成为新的单点

推理引擎通常按多副本部署,但所有流量都要先经过网关,如果网关只有一个副本,它就成了整条链路里唯一的必过节点:引擎再稳,网关一挂全部模型同时不可用。把网关做成高可用的前提是它本身无状态——会话、配额计数、配置与密钥都放在外部,任一副本可以随时被替换,前面再有一层能感知健康的入口。

基本信息

部署形态两副本起步,前端负载均衡或虚拟地址
状态要求无状态,会话与计数外置到共享存储
调度要求副本反亲和,避免集中在同一台物理机
配置管理集中下发,避免各副本配置漂移
发布方式滚动升级,先摘流量再更新

典型使用场景

  • 对外正式服务:网关必须避免单点,否则升级窗口等于服务中断窗口
  • 多引擎集群:网关承担模型路由,是唯一需要严格做冗余的组件
  • 突发流量:多副本可以横向扩展,单副本扩容受单机资源限制
  • 滚动升级:无状态设计让副本可以逐个替换而不中断流量
  • 故障演练:主动下线一个副本,验证流量是否被平滑接管

形态与验证

形态与验证
负载均衡 / 虚拟地址
   ├─ 网关副本 A ─┐
   └─ 网关副本 B ─┴→ 引擎实例组

验证步骤:
  1 同时查看两个副本的健康检查状态
  2 主动摘除一个副本,确认请求成功率不受影响
  3 升级一个副本后重新纳入,观察是否有配置漂移
  4 检查配额计数在副本切换后是否延续

去掉单点的检查单

层面单点风险做法
接入单条解析记录、无虚拟地址多记录加健康检查,或使用虚拟地址与负载均衡
副本单副本运行两副本起步,反亲和部署
状态计数与配置在本地文件外置到共享存储集中管理
发布升级即全停滚动升级,先摘流量再更新
密钥各副本手工维护集中管理并统一下发
副本间无状态是前提:会话与计数若留在本地内存,切换副本时用户会感到上下文丢失、配额被重置,负载均衡的会话保持会让问题暂时隐藏。
定期做一次主动摘除演练:不做演练时,健康检查配置错误、副本实际未接入这类问题往往到真故障时才发现。

易错点

  • 网关默默单副本运行:挂了才想起没有冗余,全部模型同时不可用
  • 健康检查只看端口不看业务:副本进程存活但转发异常,流量仍被送往故障节点
  • 状态留在本地:切换副本后配额与计数重置,用户感知为使用限制异常
  • 升级时全量重启:引擎正常却出现整体不可用,升级窗口变成事故窗口

数据来源与参考

  • LiteLLM 官方文档:部署(docs.litellm.ai)
  • Nginx 官方文档:负载均衡(nginx.org/en/docs)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌