高可用
在 AISIX Cloud 中,应用通过运行时环境中的 AISIX 网关发送请求,独立的控制面则负责管理这些网关。在 On-Premises 中由你运行控制面;在 Hybrid Cloud 中由 API7 运行控制面。
这种分离使流量层和管理层可以采用彼此独立的可用性策略。高可用部署必须同时考虑应用流量路径、AISIX 网关、上游服务,以及每个网关与 AISIX Cloud 控制面的连接。
高可用架构
下图展示了一种主动-主动参考模式,使实时流量不依赖于 AISIX Cloud 控制面路径。AISIX Cloud 控制面不是应用与上游服务之间的网络跳点。请根据可用性要求选择部署数量、网关实例数量和流量分配层级。
在此模式中,AISIX 网关跨独立故障域运行在两个主动部署中。全局负载均衡器在两个部署之间调度流量,每个部署的负载均衡器再将流量分配到多个网关实例。两个部署从同一 AISIX Cloud 环境接收配置。每个部署使用独立的网关证书;共享同一证书的实例仍会向控制面报告为不同的运行时实例。
控制面分别提供运维人员端点和网关管理端点。在此参考模式中,控制面 API、控制台和数据面管理器均以冗余服务副本运行。共享状态由稳定端点后的 PostgreSQL 复制部署提供。
这些组件描述的是一种高可用部署模式,并不代表 API7 托管的 AISIX Cloud 控制面的实际拓扑。图中也未规定具体的复制或故障转移实现。
AISIX Cloud 控制面组件
AISIX Cloud 控制面将用户管理、网关管理和共享状态分开。
| 组件 | 在架构中的作用 |
|---|---|
| AISIX Cloud 控制面端点 | 提供稳定的公共入口,并将请求路由到控制面 API。 |
| 控制面 API | 处理 AISIX Cloud Admin API 操作,并将浏览器请求反向代理到控制台。它负责管理组织、环境、资源、证书、用量和预算。 |
| 控制台 | 在控制面 API 后提供浏览器界面和身份认证工作流。 |
| 网关管理端点 | 接受由网关发起的 mTLS 连接,无需开放到网关主机的入站访问。 |
| 数据面管理器 | 下发已投射的配置,并从网关接收心跳、用量遥测和 AISIX Cloud 预算检查。 |
| PostgreSQL 高可用集群 | 存储共享控制面状态。在此参考拓扑中,复制和故障转移位于稳定服务端点之后。 |
责任边界取决于控制面部署选项。对于 On-Premises 高可用控制面,请使用 Helm。跨故障域运行控制面 API、数据面管理器和控制台的冗余副本,并将它们连接到外部高可用 PostgreSQL 端点。
随附的 PostgreSQL Chart 默认不提供此参考模式中所示的复制数据库。Docker Compose 部署包为单主机部署,不支持此拓扑。在 Hybrid Cloud 中,控制面由 API7 运行。请参阅 On-Premises 配置。
请求路径上的可用性
高可用覆盖运行时环境、AISIX Cloud 控制面和上游服务。
| 区域 | 可用性要求 |
|---|---|
| 应用流量 | 提供稳定的网关端点,并由全局流量层对每个部署执行健康检查。使用代理监听器的 /readyz 端点判断流量资格:它会移出正在排空或尚未获得配置的实例;只要运行中的实例仍能使用其持有的配置提供服务,就会保持该实例具备流量资格。 |
| AISIX 网关 | 跨独立故障域运行冗余实例。当实例必须在重启后从缓存配置恢复时,请持久化每个实例的状态目录。 |
| AISIX Cloud 控制面 | 对于 On-Premises,请跨故障域运行冗余控制面服务,并使用外部高可用 PostgreSQL 数据库。在 Hybrid Cloud 中,管理服务由 API7 运行。 |
| 上游服务 | 如果请求必须在模型或模型服务提供方故障时继续,请为模型路由配置重试和多个目标。请将每个 MCP 服务 器和 A2A Agent 部署在高韧性的服务端点之后,因为 AISIX 不会自动选择其他已注册的服务。 |
故障行为
实时流量路径与管理路径会彼此独立地发生故障。
| 故障 | 预期行为 |
|---|---|
| 一个网关实例故障 | 负载均衡层将新请求转发到该部署中的健康实例。 |
| 一个网关部署故障 | 全局负载均衡器将新请求转发到另一个健康部署。 |
| 网关与控制面的连接中断 | 如果流量仍能到达正在运行的网关,该网关可继续使用内存中最近一次接受的配置。在中断期间重启的网关可以从有效的持久化快照恢复;如果没有快照,则必须等到获取配置后才能接收流量。新的资源投射会停止,连接恢复后继续上报心跳。请通过 /status/config 或 aisix_config_* 指标监控配置新鲜度。监听中断会同时影响所有实例,因此这是运维信号,而非负载均衡器信号。AISIX Cloud 预算检查遵循其配置的故障行为;发送到控制面的失败遥测批次可能会被丢弃。 |
| 模型服务故障 | 只有已配置路由或故障转移时,AISIX 才能重试或改用其他模型目标。 |
| MCP 服务器或 A2A Agent 故障 | 在其配置的端点恢复前,对该服务的请求都会失败。AISIX 不会自动选择其他已注册的 MCP 服务器或 A2A Agent。 |
| 外部安全护栏服务故障 | AISIX 遵循配置的输入和输出故障行为。故障放行策略允许未经扫描的流量继续;故障关闭或强制策略会将其阻断。 |
部署建议
对于上图所示的主动-主动模式,请在客户运行的流量层采用以下实践:
- 在启用主动健康检查的全局负载均衡器后运行至少两个主动网关部署。
- 将每个部署放置在不同的故障域中,并使用冗余的部署负载均衡器将流量分配到多个网关实例。使用
/readyz作为流量资格探针:它会在网关尚无可用配置时阻止流量,并允许从有效缓存快照恢复的实例在重新连接控制面期间继续提供服务。配置监听停滞会同时影响所有实例,因此应将配置新鲜度作为运维信号,而不是负载均衡器信号。请配置探针间隔、故障与恢复阈值以及连接排空,以避免流量抖动和进行中的请求中断。 - 为每个部署签发独立网关证书,使各部署拥有独立的凭证生命周期。同一部署中的实例可共享该部署的证书包。请通过部署使用的 Secret 系统保护每个私钥。
- 当实例必须在重启后恢复证书包、部署身份和最近一次接受的配置时,为每个实例提供独立的持久化状态目录。请勿在实例之间共享可写状态目录。
api7/aisixHelm Chart 默认使用每个 Pod 独立的临时状态,因此由 Chart 管理的 Pod 重启后,必须重新连接并下载配置,才能接收流量。 - 确保每个网关实例都能主动发起到 AISIX Cloud 控制面端点的 mTLS 连接。
- 对必须在实例间共享的限流计数器和缓存条目使用 Redis。内存中的计数器和缓存条目仅属于单个网关进程。如果 Redis 是可用性依赖,请使用 Redis Cluster、Redis Sentinel 或通过兼容端点提供的托管 Redis 服务。
- 单独配置模型路由和故障转移。网关冗余并不能使单一模型或模型服务提供方具备高可用性。请将 MCP 服务器和 A2A Agent 部署在高韧性端点之后,因为 AISIX 不会在已注册服务之间执行故障转移。
- 监控
/readyz、网关心跳新鲜度、已应用配置状态、被拒绝资源和导出器健康状况。实时请求成功只能证明流量路径正常,不能证明管理路径或遥测路径正常。
网络和安全边界
请明确区分流量路径和管理路径:
- 通过 HTTPS 向应用公开网关负载均衡器。
- 根据每个模型服务提供方或服务的配置,保持网关到上游服务的 TLS。
- 允许每个网关实例主动发起到 AISIX Cloud 控制面的 mTLS 连接。网关主机无需开放来自控制面的入站访问。
- 将指标和健康检查端点限制在负载均衡器及平台运维人员使用的监控网络内。
实时 AI 请求通过运行时环境中的 AISIX 网关,不会经过 AISIX Cloud 控制面。发送到 AISIX Cloud 控制面的用量遥测不包含提示词和响应正文,但包含请求、调用方、路由、用量和错误元数据。启用内容捕获时,外部可观测性导出器可能包含请求和响应内容,因此应采用与其他日志和追踪系统相同的数据处理控制。