许可证管理
API7 网关需要有效的许可证才能运行。许可证用于控制可用功能(例如 API 网关和开发者门户),并定义部署中数据面可使用的最大 CPU 核心数,分为生产和非生产两份额度。
许可证属性
每个许可证包含以下属性:
| 属性 | 描述 |
|---|---|
| 序列号 | 许可证的唯一标识符。 |
| 客户 | 获得许可的组织名称。 |
| 生效日期 | 许可证开始生效的日期。 |
| 到期日期 | 许可证到期的日期。 |
| 最大 DP 核心数 | 生产网关组下数据面实例可使用的最大 CPU 核心总数。 |
| 最大非生产 DP 核心数 | 非生产网关组下数据面实例可使用的最大 CPU 核心总数。API7 企业版从 3.10.5 版本开始支持。 |
| 功能列表 | 获得许可的功能,例如 API7 Gateway 和 API7 Portal。 |
| 部署 ID | 与许可证绑定的特定部署 ID。 |
| 免费试用 | 是否为试用许可证。 |
上传许可证
使用控制台
- 登录 API7 控制台。
- 如果没有激活 的许可证,系统会提示你在登录时上传许可证。
- 上传许可证文件,然后点击 Activate(激活)。
使用 Admin API
调用 Admin API 上传许可证:
如果 API7 网关不在本地运行,请将 localhost 替换为控制台或 Admin API 的主机名。
curl -k "https://localhost:7443/api/license" -X PUT \
-H "Authorization: Bearer $API7_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"license": "<LICENSE_CONTENT>"
}'
添加 ?dry-run=all 查询参数,可以仅验证许可证而不应用:
curl -k "https://localhost:7443/api/license?dry-run=all" -X PUT \
-H "Authorization: Bearer $API7_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"license": "<LICENSE_CONTENT>"
}'
使用许可证文件路径
对于 Kubernetes 等自动化部署场景,可以配置控制面从文件加载许可证。系统每 5 秒轮询一次该文件,以检测内容变更。
在控制面配置中指定许可证 文件路径:
dashboard_configuration:
license:
file_path: "/path/to/license.txt"
此方法适用于 GitOps 工作流:将许可证存储为 Kubernetes Secret,并挂载到控制面 Pod 中。
检索许可证详细信息
获取当前许可证详细信息,包括运行时状态:
curl -k "https://localhost:7443/api/license" \
-H "Authorization: Bearer $API7_TOKEN"
响应中包含许可证属性及其当前运行时状态。
核心数额度
许可证包含两份相互独立的核心数额度:
| 额度 | 适用范围 | 许可证属性 |
|---|---|---|
| 生产 | 环境为 production 的网关组下的数据面实例 | max_dp_cores |
| 非生产 | 环境为 non_production 的网关组下的数据面实例 | max_non_production_dp_cores |
每个网关组只属于其中一份额度,因此预发布或测试网关组不会消耗生产核心数。设置网关组环境的方式请参考网关组。3.10.5 之前创建的网关组按生产处理。
3.10.5 之前签发的许可证不包含非生产额度,读取到的值为 0。只要所有网关组都是生产环境,这类许可证的行为与之前完全一致;如果需要运行非生产网关组,请申请包含非生产核心数的许可证。
如何跟踪核心使用情况
控制面每天午夜分别统计前一天两份额度各自的峰值核心数,并与许可证中对应的值进行比较。
网关 Worker 进程如何影响许可核心数
API7 许可证中的 max_dp_cores 属性定义生产网关组允许使用的数据面核心数上限,max_non_production_dp_cores 属性定义非生产网关组单独的数据面核心数上限。两份额度使用相同的统计方式。
运行时的数据面核心数用量根据每个网关数据面实例中实际生效的 NGINX Worker 进程数计算,不直接根据 Kubernetes 的 apisix.resources.requests.cpu、apisix.resources.limits.cpu 或 Pod 的实际 CPU 利用率计算。
下表中的 CPU 配置仅用于说明许可证的统计方式,并非推荐的生产配置。有关性能相关配置,请遵循 CPU 资源和 Worker 进程中的指导。
| 运行中的数据面实例 | nginx.workerProcesses | CPU 请求 / 限制 | 计入的数据面核心数用量 |
|---|---|---|---|
| 1 个 Pod | 1 | 500m / 500m | 1 |
| 1 个 Pod | 1 | 500m / 1200m | 1 |
| 2 个 Pod | 每个 Pod 为 1 | 每个 Pod 为 500m / 500m | 1 + 1 = 2 |
| 2 个 Pod | 分别为 2 和 4 | 不影响统计方式 | 2 + 4 = 6 |
因此,如果实际生效的 Worker 进程数仍为 1,将 Pod 的 CPU 限制从 500m 增加到 1200m 不会改变其计入的数据面核心数用量。仅调整 CPU 资源配置不会将许可证用量变为 0.5 或 1.2 个数据面核心。
许可证运行时状态
每份额度根据自身的核心使用情况,独立在三种运行时状态之间转换:
| 状态 | 描述 | 影响 |
|---|---|---|
| 正常 | 核心使用量未超过许可证限制。 | 所有功能均可用。 |
| DP 核心数超限 | 核心使用量超过限制,开始计算 7 天宽限期。 | 所有功能仍可用,但会显示警告。 |
| 受限 | 宽限期结束后,核心数仍超过限制。 | 写操作被阻止,读操作不受影响。 |
每份额度只根据自身的用量进入或退出上述状态。当其中一份进入受限状态时:
- 阻止:在消耗该额度的网关组中创建或更新服务、路由、消费者、插件、SSL 证书及其他配置资源。不属于任何网关组的操作(例如管理用户、角色和门户)由生产额度的运行时状态决定,因此只有生产额度受限时才会被阻止。
- 允许:另一份额度下网关组的全部操作,以及读取配置、查看控制台和上传新许可证。
要解除受限状态,请减少受影响网关组的数据面核心数(例如减少网关副本数),或上传该额度更高的许可证。
许可证到期
当许可证过期时:
- 读取操作(查看配置、控制台)继续工作。
- 写入操作(创建或更新资源)被阻止。
- 你仍然可以上传新许可证。
请监控许可证到期日期并提前安排续订。如需许可证,请联系 API7 销售团队或申请试用许可证。
免费试用许可证
免费试用许可证可用于评估目的:
- 最长持续时间:90 天。
- 试用期从部署日期开始。
要申请试用许可证,请访问 api7.ai/try。