跳到主要内容
版本:1.2.0

离线韧性

临时失去控制面连接时,实时流量路径与管理工作流的行为会有所不同。运行中的 AISIX 网关可以在重新连接期间继续使用最近一次接受的配置提供服务,但无法接收新资源,部分 AISIX Cloud 服务也仍然依赖连接。

离线韧性保护的是依赖网关现有配置的流量。它并不意味着控制面可有可无,也无法让自身发生故障的外部上游恢复可用。

继续使用已接受的配置

网关应用有效的投射配置后,会将该快照保存在内存中,并在配置连接不可用时继续使用它提供服务。AISIX 不会仅因未收到更新的配置事件就让网关退出流量服务。应将配置新鲜度用于运维告警,而不是用作负载均衡器的健康判定条件。

连接恢复前,资源变更不会到达网关。控制面在中断期间接受的变更会等待投射,不会影响正在提供服务的快照。

从缓存配置重启

在托管模式下,AISIX 每次成功应用配置后,都会将最近一次接受的快照缓存到磁盘。默认路径为 /var/lib/aisix/config_cache.json;将 managed.snapshot_cache_path 设为空字符串可禁用该缓存。参见 AISIX Cloud 启动配置

重启后的网关只有在启用缓存且缓存包含有效快照时,才能在重新连接期间提供服务。AISIX 会忽略缺失、不可读、损坏或不兼容的缓存。

没有可用快照时,网关在连接成功并应用有效配置之前没有任何东西可以提供服务,而两个就绪端点对此的表现并不相同。指标/状态监听器上的 GET /status/ready 在整个等待期间返回 503/readyz 则完全没有响应:承载它的代理监听器在应用第一个配置之前不会绑定,因此针对它的探测得到的是被拒绝的连接,而不是 503。参见启动与第一个配置

如果重启后的实例需要恢复快照,请持久化网关状态目录。每个网关实例都应有独立的可写状态目录,不要让多个副本共享同一目录。api7/aisix Helm Chart 默认使用临时状态,因此替换后的 Pod 必须重新连接并获取配置,才能接收流量。这一点是在套接字层面强制的,而不仅仅在 Service 层面:在第一次应用配置成功之前,该 Pod 没有代理端口。

快照包含未经加密的模型服务提供方凭证和其他敏感配置。请像保护配置存储一样限制缓存目录及其备份的访问权限;Base64 编码不能保护密钥。

依赖连接的工作流

网关分别处理以下依赖控制面的工作流:

工作流断开连接时的行为
资源投射新增和更新的资源不会到达网关,最近一次接受的快照继续提供服务。
AISIX Cloud 预算AISIX 最多复用上次决策 AISIX_DP_BUDGET_STALE_MAX_SECONDS 秒,默认值为 600。没有缓存决策时,会拒绝请求。超过该过期窗口后,按上次决策返回的故障模式处理。参见预算的可用性与缓存
AISIX Cloud 用量遥测失败的批次会被丢弃。AISIX 不会持久化、重试这些批次,也不会在连接恢复后重放它们。实时请求不会为了保留遥测数据而失败或延迟。
外部可观测性导出器网关直接向各个已配置的目标发送数据,因此仅控制面连接中断不会影响导出。导出仍然依赖网关与目标之间的连接。
心跳与证书轮换心跳状态停止更新。证书轮换需要控制面连接;当前证书仍然有效时,网关会继续使用它。

检测与恢复

正在使用快照提供服务的网关仍处于流量就绪状态。请单独检查管理路径的健康状态:

  • GET /status/config 报告 source.connected: false,并保留已应用的版本号和配置哈希。
  • GET /status/ready 在应用有效配置后仍返回 200;重启后没有可用快照时返回 503
  • aisix_config_* 指标提供连接状态、已应用配置和加载失败信息,可用于告警。
  • 心跳停止后,AISIX Cloud 中的网关状态会过期。

完整的状态字段、指标和告警示例参见配置状态。指标与状态监听器不提供认证,应仅允许私有网络访问。

恢复时,请恢复网关到 AISIX Cloud 控制面端点的 DNS、网络和 TLS 连接。确认心跳恢复,对比已发布和已应用的版本号,并通过恢复后的网关发送调用方可见的请求。实时请求成功可以确认流量路径恢复,但无法恢复中断期间被丢弃的遥测批次。

下一步

参阅高可用,了解更全面的故障域设计。参阅资源投射,验证恢复后的网关是否应用了预期版本。