ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Higress网关容错实战:4种故障场景下的自动防护机制

Higress网关容错实战:4种故障场景下的自动防护机制 Higress网关容错实战4种故障场景下的自动防护机制【免费下载链接】higress AI Gateway | AI Native API Gateway项目地址: https://gitcode.com/GitHub_Trending/hi/higress凌晨的发布窗口一次网关 reload 让数万个 SSE 长连接在同一秒断开用户端表现为整屏刷新。Higress 作为 AI 原生的云原生网关用无中断配置下发、智能路由与故障转移机制回答这个问题长连接业务如何做到配置更新不闪断。️ 把控制面与数据面拆开Higress 的动机很直接阿里内部既要解决 Tengine reload 对长连接业务的破坏又要补上 gRPC/Dubbo 场景下传统接入层缺位的负载均衡能力。为此它采用控制平面与数据平面分离的架构——Controller 负责配置管理与服务发现数据平面基于 Envoy 做流量代理。分离带来的直接收益控制面单点故障时数据平面持有的已下发配置继续生效流量代理不中断数据平面扩缩容也不触碰控制面的状态。单点故障被限制在自己那一层不向另一侧扩散。网关自身的可用性探针由helm/core/templates/_pod.tpl定义failureThreshold 设为 30 意味着连续 30 次探针失败才标记 Pod 不可用避免抖动误杀readinessProbe: httpGet: path: /healthz/ready port: 15021 failureThreshold: 30 periodSeconds: 2下面按生产中最常遇到的四类故障拆解。 把配置锁在本地配置源挂了怎么办Higress 的控制面同时监听 Kubernetes API Server 与外部注册中心Nacos、Consul、Zookeeper、Eureka 各自有独立实现分别在registry/nacos/watcher.go、registry/consul/watcher.go、registry/zookeeper/watcher.go中。某个源断连时其余源的监听循环不受影响注册关系继续收敛。兜底发生在数据平面一侧pkg/ingress/config/ingress_config.go维护配置缓存控制面推送中断期间数据平面沿用最后一次成功下发的配置快照继续转发。触发条件是一次性推送失败系统行为是保留快照而非清空结果是短暂断连不触发空路由请求不会拿到 503。 将故障实例的流量切走后端实例挂了怎么办摘除坏实例依赖 Envoy 的主动健康检查探测失败的实例从负载均衡池中移除流量自动转移到健康实例整个切换对客户端透明无需人工介入。算法侧由pkg/ingress/kube/annotations/loadbalance.go支持通过load-balance注解选择轮询、最小连接、一致性哈希等策略一致性哈希保证会话类请求在实例变更时仍落在原节点。灰度场景下pkg/ingress/config/kingress_config.go对分流权重做归一化处理各目标权重之和不是 100 时按比例折算并修正为精确的 100%。weight : float32(routeDestination.Weight) / float32(weightTotal) routeDestination.Weight int32(weight * 100) 用预算管住重试流量突然打爆怎么办先看重试。HTTPRoute 配置了 retry 时pkg/ingress/kube/gateway/istio/conversion.go生成的重试条件固定包含四类触发retryOn : []string{connect-failure, refused-stream, unavailable, cancelled}连接失败、流被拒绝、服务不可用、已取消的流会自动重试默认重试 2 次。但重试本身可能是故障放大器——后端整体变慢时重试流量把剩余容量再打一遍形成雪崩。为此 Gateway API 的 RetryConstraint 会映射为 RetryBudgetpkg/ingress/kube/gateway/istio/backend_policies.go中默认最小重试并发数为 10超出预算的请求直接快速失败重试流量被限制在预算百分比内。再叠加金丝雀分流坏版本只承接 5% 的流量故障半径就被锁死在小比例里。 用插件补齐框架外场景框架没覆盖的场景怎么办内置机制之外Higress 允许以 WASM 插件注入自定义容错逻辑插件按路由粒度挂载加载失败不影响既有流量。plugins/wasm-go/extensions/下提供了一批面向 AI 场景的现成插件ai-load-balancer 做多模型负载均衡与故障转移ai-cache 缓存响应降低后端压力ai-quota 对 Token 消耗做流控三者可以组合使用。 用混沌用例自证容错机制是否真的生效靠端到端测试回答。test/e2e/搭建完整的压测与故障注入环境CI 流水线中按固定顺序跑通构建、部署、注入、验证四个阶段覆盖的故障注入用例分四类实例级杀掉后端 Pod验证流量在秒级内转移到健康副本、源级停掉注册中心验证多源监听与缓存快照兜底、网络级分区与丢包验证重试预算生效、压力级高并发打满连接池验证 P99 延迟与错误率不失控。test/e2e/conformance/tests/下的用例则用于回归验证不同负载下的恢复能力。 从部署到监控的三步落地拓扑控制面与数据面各部署多副本生产环境跨可用区分布单副本挂掉不产生全局影响。更新策略配置变更走渐进发布先以金丝雀比例放 5% 流量观察错误率稳定后再逐步放量到 100%。监控大盘接入 Prometheus/Grafana盯住四个指标——请求成功率、P99 延迟、5xx 错误率、连接失败率P99 持续越过基线 200ms 即视为劣化信号。回到开头那次 reload 事故在 Higress 上配置更新经由控制面增量下发到 Envoy已建立连接不重建长连接业务无感再叠加故障实例自动摘除、重试预算封顶、金丝雀分流故障从全局闪断收敛为局部、可控、可观测。控制面数据面分离配置本地兜底流量自动切走重试有预算封顶。【免费下载链接】higress AI Gateway | AI Native API Gateway项目地址: https://gitcode.com/GitHub_Trending/hi/higress创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表