Edge Microgate 常见问题解答

<ph type="x-smartling-placeholder"></ph> 您正在查看 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 命令来获取最新的更改。请参阅 <ph type="x-smartling-placeholder"></ph> 重新加载 microgateway 集群
如何区分 Edge 上部署的代理和 Edge Microgateway 上部署的代理?
配置 Edge Microgateway 时,系统会在 Apigee 上部署支持 microgateway 的代理列表 Edge 会下载到 Edge Microgateway 的本地配置。可感知 Microgateway 的代理 是以 edgemicro_ 前缀命名的应用。
使用 Edge Microgateway 进行日志记录时,我可以选择哪些选项?
Edge Microgateway 具有内置的日志记录功能。有关详情,请参阅 管理日志文件
您也可以撰写 <ph type="x-smartling-placeholder"></ph> 自定义插件,将第三方日志记录服务与 Edge Microgateway 搭配使用。原因 Edge Microgateway 可用,您无法使用 Apigee Edge 消息日志记录政策 为 Edge Microgateway 记录消息。另请参阅 <ph type="x-smartling-placeholder"></ph> 适用于 Microgateway 的 Logging 插件社区文章。
我可以在 Edge Microgateway 实例之间重复使用密钥/密钥组合吗?
只要 Microgateway 实例的组织和环境相同,您就可以 重复使用在配置过程中生成的密钥/密钥对。
如何将 Edge Microgateway 配置为在生产环境中启动?
您可以为启动命令参数设置环境变量,例如 EDGEMICRO_KEYEDGEMICRO_SECRETEDGEMICRO_ORGEDGEMICRO_ENV。 利用这些(和其他)变量,您可以开始 包含单个命令 edgemicro start 的 Edge Microgateway。另请参阅 设置环境变量
我能不能 通过 Edge Microgateway 使用自定义产品或开发者应用属性?
不会。默认情况下,Edge Microgateway 仅对与基本路由和 安全性。不过,您可以采用以下方法作为临时解决方法: <ph type="x-smartling-placeholder">
    </ph>
  1. 向 Edge Microgateway 部署到 Apigee 的 edgemicro-auth 代理添加自定义属性 Edge。使用 API 密钥或 OAuth 令牌安全性时,这些属性将可用。
  2. 修改 OAuth 插件以处理这些属性。
请求标头大小是否有限制?
如果您将 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

以下部分列出了每个命令使用的 Management API 调用。

edgemicro configureupgradeauth 命令调用 以下管理 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 命令会调用以下 Management API:

  • PUT: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway

rotatekey 命令会调用以下 Management API:

  • GET: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway/entries/private_key

cert check 命令会调用以下 Management API:

  • GET: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway

cert delete 命令会调用以下 Management API:

  • DELETE: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway

cert install 命令会调用以下 Management 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 上创建实体
我可以在 Edge 代理软件包之间启用故障切换吗 部署和 Edge Microgateway 部署)?
不会。Edge Microgateway 不了解 Apigee 上的非 microgateway API 代理部署 Edge。
什么是 Edge Microgateway 的高可用性部署模型有哪些?
如需详细讨论如何使用 NGINX 作为负载平衡器来运行 Edge Microgateway,请参阅 <ph type="x-smartling-placeholder"></ph> 使用 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 进行 API 调用 Microgateway。但是,您必须拥有组织级权限,才能创建或更改 Edge Microgateway 部署在 Edge 上的可识别代理。

性能

使用 Edge Microgateway 时有哪些性能注意事项?
如果运行 Edge Microgateway 与目标应用并置,请确保服务器 容量足够大。
大规模运行 Edge Microgateway 的最佳做法有哪些?
Apigee 建议在前端的不同服务器上运行多个 Edge Microgateway 实例 NGINX 等负载平衡器访问 Cloud Storage 中的资源。另请参阅 <ph type="x-smartling-placeholder"></ph> 使用 Apigee Edge Microgateway 和 NGINX 管理 API 纵向横向扩缩
什么是 Edge Microgateway TPS 默认以及 Microgateway 实例
使用 Edge Microgateway 很难衡量硬件要求和 TPS 测量结果。视情况而定 包括对 Edge Microgateway、插件使用、自定义插件 以及配置 TLS 等其他功能Apigee 通常建议您了解 对各项内容进行组合,并根据您的具体设置进行性能测试。

私有云部署

边缘 Microgateway 与用于私有云的 Edge 配合使用?
能。有关详情,请参阅 Apigee 私有云配置步骤

插件

如何在 Edge 中强制执行配额 Microgateway?
您可以选择向 Edge Microgateway 实例添加配额插件。有关详情,请参阅 使用配额 插件
斯派克被逮捕情况如何 是否强制执行了 Edge Microgateway?
您可以选择向 Edge Microgateway 实例添加高峰控制插件。对于 有关详情,请参阅使用 arrest 插件
是 除了 Node.js 之外,还有其他方法可以为 Edge Microgateway 编写插件吗?
不会。插件必须使用 Node.js 编写。
如果 Edge Microgateway 无法将 Analytics 数据上传到 Edge 会发生什么情况?
Edge Microgateway 具有内存缓冲区。如果缓冲区填满,系统会丢弃较旧的载荷 来让 API 流量平稳流动
我可以向 Edge 添加政策吗 Microgateway?
如果您将常规 Apigee Edge 政策附加到 microgateway-aware 则会被忽略。相反,Edge Microgateway 使用插件来提供 提供类似于 Edge 中政策的功能,例如配额、高峰控制、API 密钥安全性以及 OAuth2 安全性。您还可以编写自定义插件。请参阅 使用插件开发自定义插件

以下 Apigee 社区帖子和博客讨论了其他插件用例:

安全

如何保护 /products 资源?
概览
配置 Edge Microgateway 时, 部署了一个名为 edgemicro-auth 的 API 代理 到 Apigee Edge 上的组织:environment。此代理公开了一个 /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。按照 <ph type="x-smartling-placeholder"></ph> 如果您有互联网连接,请升级 Edge Microgateway

如果您目前无法升级,请转到方法 2。

方法 2:配置双向 TLS

如果您目前无法升级 Edge Microgateway,Apigee 建议保护 Edge Microgateway 与 edgemicro-auth 代理之间相互通信时, TLS(也称为双向 TLS)。

  1. 打开 $HOME/.edgemicro/org-env-config.yaml 文件。请参阅 如果找不到此文件,应将 Edge Microgateway 安装到哪里。
  2. 将以下 tlsOptions 代码块添加到 org-env-config.yaml 文件,用于启用 Edge Microgateway 和 Apigee Edge:
    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 加密。
  3. 确保部署 edgemicro-auth 代理的虚拟主机启用了双向 TLS。 如需了解详情,请参阅为双向 TLS 定义虚拟主机

    以下屏幕截图显示了如何在 Apigee Edge 界面中在虚拟主机上启用双向 TLS:

  4. 请查看 Edge 界面中的 edgemicro-auth API 代理,并确保 代理配置中指定了正确的虚拟主机。例如,如果您创建了已启用 TLS 的 名为 mutualtls 的虚拟主机,代理的 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 属性,用于指明令牌的失效日期。应用可以 计算过期时间,并通过直接调用 API 来请求新令牌, edgemicro-auth 令牌端点。例如,您可以进行如下 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" }

另请参阅:

在 Windows 上配置 SSL
如果您在 Windows 上运行 Edge Microgateway,则必须在机器上安装 OpenSSL 并将其添加到 PATH 中。 并非所有 Windows 计算机都附带 OpenSSL。请参阅 OpenSSL 文档,了解如何下载和 安装 OpenSSL。
我能否允许使用与 Edge Micro-aware 关联的 API 产品访问 API 资源 吗?

目前,系统仅会检查基本路径,以确定 API 是否已获准用于 API 产品 特定 OAuth 令牌相关联。

例如:

  1. 您使用基本路径和目标创建带有 edgemicro_ 前缀的代理。
  2. 您可以将此代理添加到产品。将其命名为 edgemicro-prod1
  3. 使用 API 密钥或 OAuth 通过 Edge Microgateway 进行 API 调用时 Edge Microgateway 会检查 API 的基本路径是否与 edgemicro_* 代理(已获准用于针对相应键批准的产品列表),或 令牌。

另请参阅 在产品中使用 Edgemicro 网关时,网址需要在产品中列入白名单 ?

我可以使用自定义 SSL 吗 证书?

只有默认的 Apigee SSL cert。目前不支持自定义 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 安装错误

我能否避免使用 将组织管理员账号与 Edge Microgateway 搭配使用?
Edge Microgateway 配置脚本会将 edgemicro-auth 代理部署到 Edge,而此 需要组织管理员凭据。
但是,完成这一初始部署后,您应该能够进行剩下的设置 而无需组织管理员凭据。另请参阅 上的此社区帖子 组织管理员凭据
我可以使用自己的 OAuth 吗 使用 Edge Microgateway 访问令牌?

您可以使用自己的令牌,但必须先关闭 Edge 的内置授权 Microgateway。具体操作步骤如下:

  1. 打开 Edge Microgateway 的配置文件。
  2. 将两个 OAuth 设置更改为 true,如下所示:

    oauth:
        allowNoAuthorization: true
        allowInvalidAuthorization: true
    
我收到 启动 Edge Microgateway 时出现访问遭拒错误
如果您在使用以下命令启动 Edge Microgateway 时收到访问遭拒的错误消息
edgemicro start -o [org] -e [env] -k [key] -s [secret]
密钥和密文可能由于某种原因无效。最好的做法是 使用 edgemicro genkeys 命令重新生成密钥。

测试和调试

如何 我防止出现“打开过多文件”的情况错误?

在某些情况下,您的系统可能会遇到打开文件连接过多的情况, 这可能会导致 Edge Micro 崩溃。默认日志记录需要两个 HTTP 连接, 通过 Microgateway 实现传入和传出事务。

出于测试和基准化分析目的,Apigee 建议您设置系统的 ulimit 命令 到无限制:ulimit -n unlimited。另请参阅 Edge Apigee 社区上的负载测试期间出现 Microgateway 错误

快速提示 开发和调试

如果您正在为 Edge Microgateway 开发插件,可能会发现支持快速 发展有限。

目前,我们在下面提供了一些提示:

  • 如需启动 Edge Microgateway,您可以设置环境变量 EDGEMICRO_KEY 和 EDGEMICRO_SECRET 添加到 Microgateway 启动命令所需的密钥/密钥对。 这样,您无需在命令中输入密钥/密钥即可启动 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 是一款 Enterprise 产品,Apigee 支持 Apigee 客户。也就是说,Apigee 客户可以创建支持服务工单、功能请求和 bug 使用 Google Cloud Apigee Edge 支持报告。