您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。 信息
使用入门
- 如何安装 Edge Microgateway?
- 请参阅安装 Edge Microgateway。
- 如何运行 Edge Microgateway?
- 请参阅 设置和配置 Edge Microgateway。
- 我需要数据库才能运行 Microgateway 吗?
- 通过 Edge Microgateway 代理的 API 可以与作为目标服务一部分运行的数据库进行交互。不过,Edge Microgateway 的运行独立于任何数据库或后端数据存储区。
操作
- Edge 上的哪些更改需要重启 Edge Microgateway?
- Edge Microgateway 会自动轮询 Apigee Edge 上所做的更改,例如对支持微网关的代理、产品或开发者应用所做的更改。默认轮询间隔为 600 秒;不过,您可以使用
config_change_poll_interval配置设置更改间隔。 请参阅 Edge Micro 属性。 - 如果您不想等待轮询间隔,请使用
edgemicro reload命令来获取最新更改。请参阅 重新加载微网关集群。 - 如何区分部署在 Edge 上的代理与 Edge Microgateway 上的代理?
- 配置 Edge Microgateway 时,系统会将部署在 Apigee Edge 上的支持 Microgateway 的代理列表下载到 Edge Microgateway 的本地配置中。以
edgemicro_为前缀命名的代理是支持微网关的代理。 - 使用 Edge Microgateway 进行日志记录有哪些选项?
- Edge Microgateway 具有内置的日志记录功能。如需了解详情,请参阅 管理日志文件。
- 您还可以编写自定义插件,以便将第三方日志记录服务与 Edge Microgateway 搭配使用。由于 Edge Microgateway 的工作方式,您无法使用 Apigee Edge Message Logging 政策来记录 Edge Microgateway 的消息。另请参阅 适用于 Microgateway 的日志记录插件社区文章。
- 能否在 Edge Microgateway 的不同实例之间重复使用密钥/密钥组合?
- 只要 Microgateway 实例的组织和环境相同,您就可以重复使用在配置期间生成的密钥/密钥对。
- 如何配置 Edge Microgateway 以在生产环境中启动?
- 您可以为启动命令参数(例如
EDGEMICRO_KEY、EDGEMICRO_SECRET、EDGEMICRO_ORG和EDGEMICRO_ENV)设置环境变量。 借助这些(以及其他)变量,您可以使用单个命令edgemicro start启动 Edge Microgateway。另请参阅 设置环境变量。 - 能否将自定义产品或开发者应用属性与 Edge Microgateway 搭配使用?
- 否。默认情况下,Edge Microgateway 仅处理与基本路由和安全相关的属性。不过,您可以使用以下可能的解决方法:
-
向 Edge Microgateway 部署到 Apigee Edge 的
edgemicro-auth代理添加自定义属性。使用 API 密钥或 OAuth 令牌安全机制时,这些属性将可用。 - 修改 OAuth 插件以处理这些属性。
-
向 Edge Microgateway 部署到 Apigee Edge 的
- 请求标头大小是否有限制?
- 如果您将 Node.js 升级到 v8.14.0 或更高版本,请注意,请求中允许的最大标头大小已从 80KB 减少到 8KB。 如果标头超过 8KB,则会导致 HTTP 431 错误。
- Node.js v11.6.0 中添加了一个 Node.js 配置选项,可用于更改默认的最大标头大小。借助此参数
--max-http-header-size,您可以指定 HTTP 标头的最大大小(以字节为单位)。 - 如需更改默认配置,请在命令行中设置
NODE_OPTIONS环境变量的值,如下所示:NODE_OPTIONS=--max-http-header-size=NUM_BYTES
例如:
NODE_OPTIONS=--max-http-header-size=80000
Edge Microgateway 使用哪些管理 API?
以下 Edge Microgateway 命令会调用 Apigee Edge 管理 API 来执行其工作,如 Edge Microgateway 的 CLI 参考文档中所述:
edgemicro configureedgemicro upgradeauthedgemicro upgradekvmedgemicro rotatekeyedgemicro cert checkedgemicro cert deleteedgemicro cert install
以下部分列出了每个命令使用的管理 API 调用。
edgemicro configure 和 upgradeauth 命令会调用以下管理 API:
- (列出部署)
GET: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/deployments - (获取部署信息)
GET: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth - (上传资源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=java&name=micro-gateway-products-javacallout-2.0.0.jar - (上传资源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=adjust-quota.js - (上传资源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=generate-jwk.js - (上传资源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=generate-verify-jwt.js - (上传资源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=jsrsasign-all-min.js - (上传资源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=jwt-initialization.js - (上传资源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=send-jwk-response.js - (上传资源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=send-product-list.js - (上传资源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=send-public-key.js - (上传资源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=set-jwt-variables.js - (上传资源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=set-quota-variables.js - (上传资源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=set-response.js - (上传资源)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=validate-params.js - (创建 API 代理)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis?action=import&validate=false&name=edgemicro-auth - (上传政策)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/policies - (上传代理)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/proxies?name=default - (部署代理)
POST: https://api.enterprise.apigee.com/v1/o/[org]/e/[env]/apis/edgemicro-auth/revisions/1/deployments
upgradekvm 命令会调用以下管理 API:
PUT: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway
rotatekey 命令会调用以下管理 API:
GET: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway/entries/private_key
cert check 命令会调用以下管理 API:
GET: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway
cert delete 命令会调用以下管理 API:
DELETE: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway
cert install 命令会调用以下管理 API:
POST: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps
部署
- 能否在目标服务运行的同一服务器上部署 Edge Microgateway?
- 能。Edge Microgateway 是一种轻量级进程,可以靠近目标服务运行,包括在同一台机器上运行。
- 我可以将现有的 Edge 代理软件包部署为 Edge Microgateway 部署吗?
- 否。支持 Edge Microgateway 的代理具有特定要求,不支持常规 Edge 代理的所有功能。请参阅第 2 部分:在 Apigee Edge 上创建实体
- 能否为同一 API 代理在 Edge 代理软件包部署和 Edge Microgateway 部署之间启用故障切换?
- 不能。Edge Microgateway 不了解 Apigee Edge 上非微网关 API 代理的部署。
- Edge Microgateway 的高可用性部署模型是什么?
- 如需详细了解如何使用 NGINX 作为负载均衡器来运行 Edge Microgateway,请参阅 使用 Apigee Edge Microgateway 和 NGINX 管理 API。
- 哪些负载均衡器可与 Edge Microgateway 搭配使用?
- Edge Microgateway 可与任何负载均衡器搭配使用。
- 我可以部署的 Edge Microgateway 代理数量是否有限制?
- 请参阅为常规 Edge 代理指定的产品配置限制。您可以在 Apigee Edge 组织和环境中部署并可通过 Edge Microgateway 调用的支持微网关的代理数量必须符合这些相同的限制。
- 能否将 Edge Microgateway 部署与特定组织和环境相关联?
- 配置 Edge Microgateway 实例时,您必须将其与特定的 Edge 组织和环境相关联。
- 如果我是多区域客户,是否可以将 Edge Microgateway 部署与特定区域相关联?
- Edge Microgateway 会自动选择与 Apigee Edge 交互的最佳区域。 您可以在要提供服务的每个区域中部署 Edge Microgateway 实例。
管理
- 我是否需要成为组织管理员才能配置和部署 Edge Microgateway?
- 能。您需要拥有组织管理员凭据才能配置和部署 Edge Microgateway。
- 我是否需要成为组织管理员才能运行 Edge Microgateway?
- 否。Edge Microgateway 是一款
Node.js应用,任何有权在给定机器上运行此类应用的人都可以运行它。 - 我组织中的任何用户都可以使用 Edge Microgateway 吗?
- 您无需成为 Apigee Edge 组织用户,即可通过 Edge Microgateway 进行 API 调用。不过,您必须拥有组织级权限,才能创建或更改部署在 Edge 上的 Edge Microgateway 感知代理。
性能
- 使用 Edge Microgateway 时需要考虑哪些性能因素?
- 如果 Edge Microgateway 与目标应用并置运行,请确保服务器具有足够的容量。
- 大规模运行 Edge Microgateway 的最佳实践是什么?
- Apigee 建议在不同的服务器上运行多个 Edge Microgateway 实例,这些实例由 NGINX 等负载均衡器提供支持。另请参阅 Apigee 社区中的 使用 Apigee Edge Microgateway 和 NGINX 管理 API 和 垂直水平扩缩。
- Edge Microgateway 的默认 TPS 是多少?Microgateway 实例需要哪些硬件要求
- Edge Microgateway 难以衡量硬件要求和 TPS。这取决于您的设置,包括调整 Edge Microgateway、插件使用情况、自定义插件以及配置 TLS 等其他事项。Apigee 通常建议您了解这些项的组合,并使用您的特定设置进行性能测试。
私有云部署
- Edge Microgateway 是否适用于 Edge Private Cloud?
- 能。如需了解详情,请参阅 Apigee Private Cloud 配置步骤。
插件
- 如何通过 Edge Microgateway 强制执行配额?
- 您可以选择向 Edge Microgateway 实例添加配额插件。如需了解详情,请参阅使用配额插件。
- Edge Microgateway 如何强制执行 Spike Arrest?
- 您可以选择向 Edge Microgateway 实例添加突峰抑制插件。如需了解详情,请参阅使用流量突增抑制插件。
- 除了
Node.js之外,还有其他方式可以为 Edge Microgateway 编写插件吗? - 不可以。插件必须用
Node.js编写。 - 如果 Edge Microgateway 无法将 Analytics 数据上传到 Edge,会发生什么情况?
- Edge Microgateway 具有内存缓冲区。如果缓冲区填满,系统会丢弃较旧的载荷,以确保 API 流量顺畅传输。
- 我可以向 Edge Microgateway 添加政策吗?
- 如果您将常规 Apigee Edge 政策附加到 Apigee Edge 中的支持微网关的代理,系统会忽略这些政策。相反,Edge Microgateway 使用插件来提供与 Edge 中的政策类似的功能,例如配额、突发流量限制、API 密钥安全性和 OAuth2 安全性。您还可以编写自定义插件。请参阅使用插件和开发自定义插件。
以下 Apigee 社区帖子和博客讨论了其他插件使用场景:
安全
- 如何保护
/products资源? - 概览
- 当您配置 Edge Microgateway 时,系统会将名为
edgemicro-auth的 API 代理部署到 Apigee Edge 上的组织:环境。此代理公开了一个/products端点,用于返回 API 产品列表。如果您在 2018 年 10 月 5 日或之前安装了 Edge Microgateway,Apigee 建议您采取措施来保护此端点,因为响应包含在您的 Apigee 组织中创建和修改 API 产品的开发者的电子邮件地址。 - 您可以通过升级 Edge Microgateway 或配置双向 TLS 来保护端点。下文将介绍这两种方式。
- 检查
/products端点是否受保护 -
如果您不确定
/products端点是否受到保护,请前往验证/products资源是否受到保护部分,按照其中的步骤操作,然后再继续。方法 1:升级 Edge Microgateway
如果您在 2018 年 10 月 5 日或之前安装了 Edge Microgateway,Apigee 建议您升级到最新版本的 Edge Microgateway。按照 升级 Edge Microgateway(如果您有互联网连接)中的步骤操作。
如果您目前无法升级,请参阅“方法 2”。
方法 2:配置双向 TLS
如果您目前无法升级 Edge Microgateway,Apigee 建议您使用双向 TLS(也称为双向 TLS)来保护 Edge Microgateway 与
edgemicro-auth代理之间的通信。- 打开文件
$HOME/.edgemicro/org-env-config.yaml。如果您找不到此文件,请参阅 Edge Microgateway 安装在何处。 - 将以下
tlsOptions块添加到org-env-config.yaml文件,以在 Edge Microgateway 和 Apigee Edge 之间启用双向 TLS:edge_config: bootstrap: >- https://domain/edgemicro/bootstrap/organization/org/environment/env jwt_public_key: 'https://domain/edgemicro-auth/publicKey' managementUri: 'https://api.enterprise.apigee.com' tlsOptions: agentOptions: requestCert: true cert: 'path/to/cert' key: 'path/to/key'例如:
tlsOptions: agentOptions: requestCert: true cert: '/Users/jdoe/twowayssl/ssl/client.key' key: '/Users/jdoe/twowayssl/ssl/ca.crt'您还可以添加以下可选的
agentOptions参数:ca:指定证书授权机构的路径。pfx:如果您希望使用 p12/pfx 文件而不是证书和密钥,请添加此参数。passphrase:pfx 文件的口令。ciphers:指定 TLS 加密方式。
- 确保部署
edgemicro-auth代理的虚拟主机已启用双向 TLS。 如需了解详情,请参阅 Apigee Edge 文档中的为双向 TLS 定义虚拟主机。以下屏幕截图展示了如何在 Apigee Edge 界面中对虚拟主机启用双向 TLS:
- 查看 Edge 界面中的
edgemicro-authAPI 代理,并确保在代理配置中指定了正确的虚拟主机。例如,如果您创建了名为mutualtls的启用 TLS 的虚拟主机,则代理的HTTPProxyConnectionstanza 应如下所示:<HTTPProxyConnection> <BasePath>/edgemicro-auth</BasePath> <Properties/> <VirtualHost>mutualtls</VirtualHost> </HTTPProxyConnection>
- 打开文件
/products 资源是否受到保护/products 资源是否受到保护。请务必在完成保护资源的相关步骤(方法 1 或方法 2)后执行此测试。您可以使用 cURL 执行此操作,例如:
curl -v https://your_domain/edgemicro-auth/products
/products 端点受到保护:
{
"error":"unauthorized",
"error_description": "authentication failed"
}或
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number
如果您看到类似如下所示的响应,则表示 /products 资源未受保护,开发者电子邮件地址可能会泄露:
{ "apiProduct":[ { "apiResources":[ "/", "/**" ], "approvalType":"auto", "attributes":[ ], "createdAt":1537374680948, "createdBy":"jdoe@foo.com", "description":"", "displayName":"mock", "environments":[ "test" ], "lastModifiedAt":1537374680948, "lastModifiedBy":"test@test.com", "name":"mock", "proxies":[ "edgemicro-auth", "edgemicro_mock" ], "quota":"null", "quotaInterval":"null", "quotaTimeUnit":"null", "scopes":[ "" ] } ] }
Apigee 还建议您测试 HTTP 虚拟主机:
例如:
curl -v http://your_domain/edgemicro-auth/products
如果 cURL 调用返回 API 产品列表,则开发者电子邮件地址可能已泄露。如果您不希望通过此非 TLS 虚拟主机公开端点,请务必将其从 edgemicro-auth HTTPProxyConnection 配置中移除。
如需保护资源,请执行以下任一操作:
目前,您无法续订特定 Edge Microgateway 实例的 JWT 令牌。
临时解决方法:
每个 JWT 令牌都有一个 exp 属性,用于指明令牌的失效日期。应用可以直接向 edgemicro-auth 令牌端点发出 API 调用,以计算过期时间并请求新令牌。例如,您可以进行如下 API 调用:
POST https: //{your_org}-{your_env}.apigee.net/edgemicro-auth/token
…,并包含如下 JSON 正文:
{ "client_id": {your_id}, "client_secret": {your_secret},
"grant_type": "client_credentials" }
另请参阅:
目前,系统仅检查基本路径,以确定与特定 OAuth 令牌关联的 API 产品是否已获批使用相应 API。
例如:
- 您可以使用基本路径和目标创建带有
edgemicro_前缀的代理。 - 您将此代理添加到产品中。我们将其称为
edgemicro-prod1。 - 当通过 Edge Microgateway 使用 API 密钥或 OAuth 令牌进行 API 调用时,Edge Microgateway 会检查 API 的基本路径是否与已获批的
edgemicro_*代理的基本路径相匹配,该代理已获批用于该密钥或令牌获批的产品列表。
另请参阅 Apigee 社区中的 When using the edgemicro gateway in the products which url needs whitelisting in the products used under resources?。
目前仅支持默认 Apigee SSL 证书。目前不支持自定义 SSL 证书。
解决方法:
如果您希望使用自定义(非 Apigee 默认)SSL 证书,可以选择以下方式:
-
使用非 SSL
jwt_public_key端点。修改 Edge Microgateway 配置文件以使用http://{org}-{env}.apigee.net/edgemicro-auth/publicKey-或- -
在启动 Edge Microgateway 之前,请设置以下环境变量:export
NODE_TLS_REJECT_UNAUTHORIZED ="0"
另请参阅 Apigee 社区中的 验证 SSL 证书上的 Edge Micro 安装错误。
edgemicro-auth 代理部署到 Edge,而此部署需要组织管理员凭据。您可以使用自己的令牌,但首先必须关闭 Edge Microgateway 的内置授权。具体操作步骤如下:
- 打开 Edge Microgateway 的配置文件。
-
将两项 OAuth 设置更改为 true,如下所示:
oauth: allowNoAuthorization: true allowInvalidAuthorization: true
edgemicro start -o [org] -e [env] -k [key] -s [secret]测试和调试
- 如何在负载测试期间防止出现“打开的文件过多”错误?
-
在某些情况下,系统可能会遇到打开的文件连接过多的情况,这可能会导致 Edge Micro 崩溃。默认日志记录需要通过微网关建立两个 HTTP 连接,分别用于传入和传出事务。
出于测试和基准比较目的,Apigee 建议将系统的 ulimit 命令设置为 unlimited:
ulimit -n unlimited。另请参阅 Apigee 社区中的负载测试期间的 Edge Microgateway 错误。 - 快速开发和调试技巧
-
如果您正在为 Edge Microgateway 开发插件,可能会发现对快速开发的支持有限。
目前,您可以参考以下提示:
- 对于启动 Edge Microgateway,您可以将环境变量 EDGEMICRO_KEY 和 EDGEMICRO_SECRET 设置为 Microgateway 启动命令所需的密钥/密钥对。 这样,您就可以启动 Edge Microgateway,而无需在命令行中输入密钥/Secret。另请参阅 Edge Microgateway 文档中的 设置环境变量。
-
以调试模式启动 Edge Microgateway,以便在命令终端中查看其他输出:
DEBUG=* edgemicro start -o [org] -e [env] -k [key] -s [secret]
业务和许可
- Apigee-127 与 Edge Microgateway 支持模式之间有何关系?
-
Apigee-127 是一个开源软件项目,以开源模式提供支持。也就是说,您可以在 GitHub 项目中提出问题,并尝试修复问题,然后提交拉取请求。Apigee-127 不需要或不包含与 Apigee 签订的任何软件许可协议。
另一方面,Edge Microgateway 是一款企业产品,Apigee 为 Apigee 客户提供支持。也就是说,Apigee 客户可以使用 Google Cloud Apigee Edge 支持来创建支持服务工单、功能请求和 bug 报告。