您正在查看 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 上所做的更改,例如对 Microgateway 感知代理、产品或开发者应用所做的更改。默认轮询间隔为 600 秒;不过,您可以使用
config_change_poll_interval
配置设置更改间隔。请参阅 edgemicro 属性。 - 如果您不想等待轮询间隔,请使用
edgemicro reload
命令获取最新更改。请参阅 重新加载微网关集群。 - 如何区分部署在 Edge 上的代理与部署在 Edge Microgateway 上的代理?
- 在您配置 Edge Microgateway 时,系统会将部署在 Apigee Edge 上的 Microgateway 感知代理列表下载到 Edge Microgateway 的本地配置。微网关感知型代理的名称以
edgemicro_
为前缀。 - 使用 Edge Microgateway 进行日志记录时,有哪些选项?
- Edge Microgateway 具有内置日志记录功能。如需了解详情,请参阅 管理日志文件。
- 您还可以编写自定义插件,以便将第三方日志记录服务与 Edge Microgateway 搭配使用。由于 Edge Microgateway 的工作原理,您无法使用 Apigee Edge 消息日志记录政策记录 Edge Microgateway 的消息。另请参阅 适用于 Microgateway 的 Logging 插件社区文章。
- 我可以在 Edge Microgateway 实例之间重复使用密钥/Secret 组合吗?
- 只要 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 configure
edgemicro upgradeauth
edgemicro upgradekvm
edgemicro rotatekey
edgemicro cert check
edgemicro cert delete
edgemicro cert install
以下部分列出了每个命令使用的管理 API 调用。
edgemicro configure
和 upgradeauth
命令会调用以下管理 API:
- (list deployments)
GET: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/deployments
- (get deployment info)
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
- (create api proxy)
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
- (upload proxies)
POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/proxies?name=default
- (deploy proxy)
POST: https://api.enterprise.apigee.com/v1/o/[org]/e/[env]/apis/edgemicro-auth/revisions/1/deployments
upgradekvm
命令会调用以下 Management 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 上非 Microgateway API 代理部署。
- Edge Microgateway 的高可用性部署模型是什么?
- 如需详细了解如何使用 NGINX 作为负载平衡器运行 Edge Microgateway,请参阅 使用 Apigee Edge Microgateway 和 NGINX 管理 API。
- 我可以将哪些负载平衡器与 Edge Microgateway 搭配使用?
- Edge Microgateway 可与任何负载平衡器搭配使用。
- 我可以部署的 Edge Microgateway 代理数量是否有限制?
- 请参阅为常规 Edge 代理指定的产品配置限制。您可以在 Apigee Edge 组织和环境中部署并通过 Edge Microgateway 调用的 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 建议在由 NGINX 等负载平衡器充当前端的不同服务器上运行多个 Edge Microgateway 实例。另请参阅 Apigee 社区中的 使用 Apigee Edge Microgateway 和 NGINX 管理 API 和 纵向横向扩缩。
- 默认情况下,什么是 Edge Microgateway TPS,以及 Microgateway 实例需要哪些硬件要求
- 使用 Edge Microgateway 时,很难评估硬件要求和 TPS 测量结果。这取决于您的设置,您的设置包括调整 Edge Microgateway、插件使用情况、自定义插件以及配置 TLS 等其他功能。Apigee 通常建议您了解这些组合项,并使用您的具体设置进行性能测试。
私有云部署
- Edge Microgateway 是否适用于 Edge for Private Cloud?
- 能。如需了解详情,请参阅 Apigee 私有云配置步骤。
插件
- Edge Microgateway 如何强制执行配额?
- 您可以选择向 Edge Microgateway 实例添加配额插件。如需了解详情,请参阅使用配额插件。
- 如何使用 Edge Microgateway 强制执行 Spike Arrest?
- 您可以选择向 Edge Microgateway 实例添加突发流量抑制插件。如需了解详情,请参阅使用突发流量抑制插件。
- 除了
Node.js
之外,是否还有其他方法可以为 Edge Microgateway 编写插件? - 不能。插件必须以
Node.js
编写。 - 如果 Edge Microgateway 无法将 Google Analytics 数据上传到 Edge,会发生什么情况?
- Edge Microgateway 具有内存缓冲区。如果缓冲区已满,系统会丢弃较早的载荷,以便 API 流量顺畅传输。
- 我可以向 Edge Microgateway 添加政策吗?
- 如果您将常规 Apigee Edge 政策附加到 Apigee Edge 中 microgateway-aware 代理,这些政策会被忽略。不过,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-auth
API 代理,并确保代理配置中指定了正确的虚拟主机。例如,如果您创建了一个名为mutualtls
的支持 TLS 的虚拟主机,则代理的HTTPProxyConnection
诗节应如下所示:<HTTPProxyConnection> <BasePath>/edgemicro-auth</BasePath> <Properties/> <VirtualHost>mutualtls</VirtualHost> </HTTPProxyConnection>
- 打开文件
/products
资源是否受保护/products
资源是否受到保护。请务必在完成保护资源的步骤(选项 1 或选项 2)后执行此测试。您可以使用 c网址 执行此操作,例如:
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
如果 c网址 调用返回 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" }
另请参阅:
- Edge Microgateway 文档中的使用 OAuth 令牌或 API 密钥保护 API。
- 在 Apigee 社区中,了解在 Bearer 令牌过期时续期该令牌的流程。
目前,系统仅会检查基本路径,以确定 API 是否已获准与特定 OAuth 令牌关联的 API 产品。
例如:
- 您创建一个带有基本路径和目标的
edgemicro_
前缀代理。 - 您可以将此代理添加到商品。我们将其命名为
edgemicro-prod1
。 - 当通过 Edge Microgateway 使用 API 密钥或 OAuth 令牌进行 API 调用时,Edge Microgateway 会检查 API 的根路径是否与已获准使用该密钥或令牌的
edgemicro_*
代理的根路径匹配。
另请参阅 Apigee 社区中的 在产品中使用 edgemicro 网关时,哪些网址需要在“资源”下使用的商品中列入许可名单?。
目前仅支持默认 Apigee SSL 证书。目前不支持自定义 SSL 证书。
解决方法:
如果您想使用自定义(非 Apigee 默认)SSL 证书,可以选择以下任一方式:
-
使用非 SSL
jwt_public_key
端点。修改 Edge Microgateway 配置文件以使用http://{org}-{env}.apigee.net/edgemicro-auth/publicKey
-or- -
在启动 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 崩溃。默认日志记录需要通过 Microgateway 建立两个 HTTP 连接,分别用于传入和传出事务。
出于测试和基准测试目的,Apigee 建议将系统的 ulimit 命令设置为无限:
ulimit -n unlimited
。另请参阅 Apigee 社区中的负载测试期间 Edge Microgateway 错误。 - 快速开发和调试的技巧
-
如果您正在为 Edge Microgateway 开发插件,可能会发现对快速开发的支持有限。
目前,请参考以下提示:
- 如需启动 Edge Microgateway,您可以将环境变量 EDGEMICRO_KEY 和 EDGEMICRO_SECRET 设置为 Microgateway 启动命令所需的密钥/密文对。 这样,您无需在命令行中输入密钥/密钥即可启动 Edge Microgateway。另请参阅 Edge Microgateway 文档中的 设置环境变量。
-
在 DEBUG 模式下启动 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 报告。