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