AWS Serverless架构部署OneHub大模型API网关实战指南

核心摘要

  • 采用Master-Slave架构分离管理流量与API请求流量,实现职责隔离与弹性扩展
  • 基于Aurora Serverless V2实现存算分离,支持0.5-256 ACU自动扩缩容
  • 通过CloudFront VPC Origin隐藏源站,配合Shield Standard提供DDoS防护
  • 全栈Serverless架构实现按需付费,闲时成本趋近于零

AWS Serverless架构部署OneHub大模型API网关实战指南

为什么需要LLM Gateway统一管理层

在企业级AI应用开发中,单一LLM供应商往往无法满足多样化的业务需求。当团队同时接入OpenAI、Claude、AWS Bedrock等多家模型服务时,会面临以下工程挑战:

  • 凭据管理分散:各供应商的API Key需要集中存储和轮换
  • 接口协议差异:不同供应商的请求格式增加业务代码复杂度
  • 用量监控困难:跨平台的调用统计和成本核算缺乏统一视图
  • 权限控制缺失:难以对不同团队实施细粒度的模型访问控制

开源项目OneHub(基于one-api演进)提供了完善的多租户API分发能力,本文将详解如何在AWS上构建生产级部署架构。

架构设计与核心组件

整体架构特点

本方案采用全托管Serverless服务栈,具备以下架构优势:

  • CloudFormation一键部署:基础设施即代码,可重复、可审计
  • 零运维负担:ECS Fargate、Aurora Serverless均为全托管服务
  • 弹性伸缩:根据CPU/内存指标自动扩缩容,高峰期承载高并发
  • 安全纵深防御:源站私有化部署,CloudFront统一入口

Master-Slave节点职责分析

通过源码分析,OneHub的NODE_TYPE环境变量决定了节点行为差异:

  • Master节点:执行定时任务、数据库写入操作、系统配置管理
  • Slave节点:处理API请求、从数据库同步配置、支持水平扩展

关键部署约束:Master节点必须保持单实例,避免定时任务重复执行;Slave节点可根据负载动态扩展。

ECS集群部署规划

Task Definition配置策略

创建两个独立的Task Definition,通过环境变量区分节点类型:

# Master Task Definition 关键配置
environment:
  - name: NODE_TYPE
    value: master
  - name: SESSION_SECRET
    value: ${SessionSecret}
  - name: SQL_DSN
    value: ${DatabaseConnectionString}
# Slave Task Definition 关键配置
environment:
  - name: NODE_TYPE
    value: slave
  - name: SYNC_FREQUENCY
    value: 60

Service部署配置

针对两种节点类型创建独立的ECS Service:

  • Master Service:固定1个Task实例,禁用自动扩展
  • Slave Service:启用Application Auto Scaling,建议以CPU利用率70%为扩展阈值

建议开启Availability Zone Rebalancing,确保Task均匀分布在多个可用区,提升服务可用性。

数据库层设计

Aurora Serverless V2选型理由

Aurora Serverless V2 for MySQL是本方案的最佳数据库选择:

  • 精细化扩缩容:支持0.5 ACU起步,最小扩展粒度0.5 ACU
  • 按需计费:存储按实际使用量收费,无需预置容量
  • 原生高可用:自动故障转移,RPO接近零
  • 运维简化:内置RDS Data API,可通过Query Editor直接执行SQL

安全配置要点

部署时务必替换以下敏感参数的默认值:

# CloudFormation参数配置
DatabasePassword: [使用强密码,建议32位以上]
SessionSecret: [随机生成的会话密钥]
UserTokenSecret: [用户令牌加密密钥]

流量分发与ALB规则配置

路由策略设计

使用ALB Listener Rules实现流量分离:

  • LLM API请求:路由至Slave Target Group
  • 管理操作请求:路由至Master Target Group
{
  "Conditions": [
    {
      "Field": "path-pattern",
      "Values": ["/v1/chat/*", "/v1/completions/*", "/v1/embeddings/*"]
    }
  ],
  "Actions": [
    {
      "Type": "forward",
      "TargetGroupArn": "arn:aws:elasticloadbalancing:...:slave-tg"
    }
  ]
}

实践建议:上述路径规则需根据实际接入的LLM供应商API格式进行调整,避免与管理接口路径冲突。

网络安全架构

纵深防御设计

本方案采用CloudFront VPC Origin架构,实现源站零暴露:

  • ECS Task:部署于私有子网,通过NAT Gateway访问外网
  • Aurora集群:部署于私有子网,仅允许ECS安全组入站
  • ALB:部署于私有子网,禁止公网直接访问
  • CloudFront:作为唯一公网入口,自带Shield Standard防护

安全收益

此架构无需额外配置即可获得:

  • 源站无公有IP,攻击面最小化
  • Shield Standard自动抵御L3/L4层DDoS攻击
  • 可通过AWS WAF在CloudFront层统一配置防护规则
  • 利用全球PoP节点降低API访问延迟

运维与可观测性

日志与监控

  • 容器日志:自动发送至CloudWatch Logs,支持Logs Insights查询分析
  • 数据库运维:通过RDS Query Editor直连数据库,无需堡垒机
  • 容器调试:启用ECS Exec可直接登录运行中的容器排查问题
# 使用ECS Exec连接容器
aws ecs execute-command \
  --cluster onehub-cluster \
  --task arn:aws:ecs:region:account:task/xxx \
  --container onehub \
  --interactive \
  --command "/bin/sh"

成本估算与优化建议

主要成本构成

以默认配置(256 CPU + 512 Memory,约1/4 vCPU)为例:

  • ECS Fargate:3个Task实例的计算费用
  • Aurora Serverless V2:ACU使用量 + 存储费用
  • CloudFront:数据传输费用
  • NAT Gateway:固定费用 + 数据处理费用

成本优化策略

  • 非生产环境可将Aurora最小ACU设为0.5,实现闲时接近零成本
  • 评估是否可使用Fargate Spot运行Slave节点,节省最高70%计算成本
  • 配置CloudFront缓存策略,减少源站请求量

部署注意事项

首次部署问题:新AWS账号或从未使用过ECS的账号,首次创建堆栈可能报错提示缺少ECS服务链接角色。解决方法:删除失败的堆栈后重新创建,AWS会自动创建所需的服务链接角色。

Bedrock模型配置:在OneHub管理界面配置AWS Bedrock渠道时,需参考官方文档设置正确的模型映射关系,确保API调用能正确路由到目标模型。

需要优化您的 AWS 架构? 如果您正在规划企业级LLM Gateway部署,或需要对现有AI基础设施进行架构评审和成本优化,欢迎联系我们获取专业的AWS架构咨询服务。

AWS账单代付

AWS/阿里云/谷歌云官方认证架构师,专注云计算解决方案。