网关组与网关实例
本文将介绍 API7 网关中的高级功能:网关组与网关实例的概念及用法。
概述
网关实例 是处理流量的单个代理,而 网关组 是一个逻辑单元,结合了一个或多个 API 网关实例。这确保了 API 处理的一致性,并简化了整个组的管理。网关组内的多个网关实例独立运行,以实现横向扩展和负载均衡。虽然使用集中配置,但网关实例不共享状态。
默认网关组足以应付简单的场景,例如只有一个集群或生产环境。高级网关组用于复杂的场景,针对不同的子公司、业务线、集群和环境(如 UAT 和 Staging)有单独的 API 策略。虽然 API7 企业版缺乏多个集群和环境的概念,但你可以通过命名和标记网关组来实现相同的目标。
一个网关组包含一个或多个网关实例,但每个网关实例只属于一个网关组。网关实例可以部署在相同或不同的虚拟机、裸机服务器或 Kubernetes 节点上。这样的组合可以满足用户在多条业务线、集群、工作区和环境中的不同需求。
例如,在下图中,有两个团队在公司中使用 API 网关:支付团队和报价团队。支付团队拥有生产和 UAT 环境,而报价团队只有一个生产环境。在这种情况下,可以创建三个网关组:Payment Prod
、Payment UAT
和 Quote Prod
,并用 Env:Prod
和 Env:UAT
对它们进行标记。
主要功能
API 网关组管理:将 API 网关集合作为共享相同配置的逻辑单元进行管理。这简化了管理,并确保了跨网关实例的一致策略实施。
业务对齐的网关分区:通过将企业的业务线和解决方案分配给专用的 API 网关组来隔离它们。这种架构方法可以更好地协调 API 基础架构和组织的功能域。
物理隔离:网关组在不同的物理环境(包括数据中心、云平台和虚拟机)中隔离多个 API 网关实例。这有效防止了网关组之间的干扰,提高了系统的稳定性和安全性。
弹性扩展:网关组根据流量波动动态添加或删除 API 网关实例,以满足业务需求。这提高了资源利用率并降低了运营成本。
可扩展且灵活的基础架构:API 网关组的逻辑架构与单个网关实例的物理部署分离。这种方法为 API 基础架构提供了更大的灵活性和可扩展性。
细粒度的权限控制:网关组可以为不同的网关实例和 API 启用不同的权限配置,以符合合规性要求。
Ingress Controller:支持 Kubernetes Ingress Controller,使用 API7 企业版作为高性能反向代理。使用声明式方式来配置 API7 企业版提供的资源。
用例
隔离开发、测试、UAT 和生产环境
API 的部署和发布要经过不同的阶段和环境,这取决于公司的 API 管理流程。假设你的公司有四个环境:开发、测试、UAT 和生产。如果不使用网关组,你需要部署 4 个独立的 API7 企业版实例,每个实例都有独立的控制平面和数据平面。开发人员、QA 和运维工程师需要通过不同域名的 API7 企业版控制平面来开发、测试和发布同一个 API。
这种方法有很大的缺点。当你有 5 条业务线时,每条业务线有 4 个环境,你需要部署总共 20 套 API7 企业版,造成资源浪费,增加管理成本。
利用 API7 企业版的网关组功能,你可以轻松克服这一挑战。你可以创建 20 个不同的网关组,遵循结合业务线和环境名称的命名约定,并添加标签以便过滤和选择。此外,可以应用基于角色的访问控制(RBAC)来实现细粒度的权限控制。这样一来,开发人员就只能修改开发环境中的配置。
管理跨不同区域的多个集群
对于拥有全球客户群的公司来说,要管理跨多个区域和集群的 API 服务,同时确保数据合规性,是一项挑战。 假设你的公司在北美、欧盟和亚太地区运营,每个地区有 4 个生产集群。如果没有网关组,你需要维护 12 套 API 网关控制平面和数据平面。 然而,这种方法很容易出现配置不一致的问题。
一致的 API 网关配置并不能保证记录器、秘密和可观察性工具的加密、隐私和合规性--需要额外的工作。
API7 的网关组提供了一个解决方案,可以使用一个控制平面集中管理和配置跨多个地区的 API 网关集群。你可以使用环境变量、服务发现和注册中心来简化和统一管理和维护,从而降低总体维护成本。
此外,API7 网关支持多层网络,可以在不同区域实现无缝的数据处理和合规性。如果一个名为 John 的美国用户从欧洲登录,欧盟集群可以根据他的用户 ID 确定并将他的 API 请求重定向到北美集群。这种能力确保了合规性和高效的 API 请求处理。
满足不同项目的服务级别目标
不同项目的服务的服务级别目标(SLO)各不相同。例如,支付服务的 SLO 可以是 99.999%,而历史订单服务的 SLO 可能是 99%。可以针对每个服务使用特定的策略,以符合其各自的 SLO。
基础设施和运营团队可以在多个区域部署支付服务。然后为该网关组分配更多的网关实例和更高质量的机器资源,并为其设置严格的警报策略和详细的可观察性指标。相反,对 SLO 要求较低的历史订单服务可以采用轻量级部署策略,放松警报和监控,以减少资源分配。
网关实例状态
网关实例状态表示网关实例(数据面)与控制面之间的连接。每个网关实例会定期报告。只有健康的网关实例才能处理 API 流量。
- 健康:网关实例运行正常。
- 仅心跳:此状态表示配置交付失败,即使网关实例通过心跳探针与 API7 控制面保持连接。
- 连接丢失:API7 网关控制面超过 30 秒但少于 2 小时未检测到网关实例。
- 离线:API7 网关控制面超过 2 小时未检测到网关实例。在这种情况下,如果网关实例仍然无法连接到 API7 网关控制面,则网关实例将在 7 天后被移除。