Edge Microgate 常見問題

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。
info

開始使用

如何安裝 Edge Microgateway?
請參閱「安裝 Edge Microgateway」。
如何執行 Edge Microgateway?
請參閱「 設定及配置 Edge Microgateway」。
我需要資料庫才能執行 Microgateway 嗎?
透過 Edge Microgateway 代理的
API 可能會與資料庫互動,而資料庫是目標服務的一部分。不過,Edge Microgateway 的運作方式與任何資料庫或後端資料儲存區無關。

作業

在 Edge 上進行哪些變更時,需要重新啟動 Edge Microgateway?
Edge Microgateway 會自動輪詢 Apigee Edge 上的變更,例如微閘道感知 Proxy、產品或開發人員應用程式的變更。預設輪詢間隔為 600 秒,但您可以使用 config_change_poll_interval 設定變更間隔。請參閱「 edgemicro 屬性」。
如不想等待輪詢間隔,請使用 edgemicro reload 指令擷取最新變更。請參閱「 重新載入微閘道叢集」。
如何區分部署在 Edge 的 Proxy 與 Edge Microgateway 的 Proxy?
設定 Edge Microgateway 時,系統會將部署在 Apigee Edge 上的微閘道感知 Proxy 清單,下載到 Edge Microgateway 的本機設定。微閘道感知 Proxy 的名稱會加上 edgemicro_ 前置字元。
使用 Edge Microgateway 記錄時,有哪些選項?
Edge Microgateway 內建記錄功能。詳情請參閱「 管理記錄檔」。
您也可以編寫自訂外掛程式,搭配 Edge Microgateway 使用第三方記錄服務。由於 Edge Microgateway 的運作方式,您無法使用 Apigee Edge Message Logging 政策,記錄 Edge Microgateway 的訊息。另請參閱「 Logging Plugin for Microgateway」社群文章。
我可以在 Edge Microgateway 執行個體之間重複使用金鑰/密碼組合嗎?
只要 Microgateway 執行個體的機構和環境相同,您就可以重複使用設定期間產生的金鑰/密碼組合。
如何設定 Edge Microgateway,以便在正式環境中啟動?
你可以為啟動指令參數設定環境變數,例如 EDGEMICRO_KEY、EDGEMICRO_SECRET、EDGEMICRO_ORG 和 EDGEMICRO_ENV。您可以使用這些 (和其他) 變數,透過單一指令 edgemicro start 啟動 Edge Microgateway。另請參閱「 設定環境變數」。
我可以將自訂產品或開發人員應用程式屬性搭配 Edge Microgateway 使用嗎?
不會。根據預設,Edge Microgateway 只會處理與基本路徑和安全性相關的屬性。不過,您可以採取下列任一做法:
  1. 將自訂屬性新增至 Edge Microgateway 部署至 Apigee Edge 的 edgemicro-auth Proxy。使用 API 金鑰或 OAuth 權杖安全機制時,即可使用這些屬性。
  2. 修改 OAuth 外掛程式,對這些屬性採取行動。
要求標頭大小是否有限制?
如果將 Node.js 升級至 v8.14.0 以上版本,請注意,要求允許的標頭大小上限已從 80 KB 縮減至 8 KB。如果標頭超過 8 KB,就會導致 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:

  • (列出部署作業) 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 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
  • (上傳 Proxy) POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/proxies?name=default
  • (部署 Proxy) 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 Proxy 套裝組合部署為 Edge Microgateway 部署作業嗎?
否。支援 Edge Microgateway 的 Proxy 有特定需求,且不支援一般 Edge Proxy 的所有功能。請參閱第 2 部分:在 Apigee Edge 上建立實體
我可以為同一個 API Proxy,在 Edge Proxy 套件部署作業和 Edge Microgateway 部署作業之間啟用容錯移轉嗎?
否。Edge Microgateway 不知道 Apigee Edge 上非微閘道 API Proxy 的部署作業。
Edge Microgateway 的高可用性部署模型為何?
如要深入瞭解如何使用 NGINX 做為負載平衡器來執行 Edge Microgateway,請參閱「 使用 Apigee Edge Microgateway 和 NGINX 管理 API」。
Edge Microgateway 可搭配哪些負載平衡器使用?
Edge Microgateway 可搭配任何負載平衡器使用。
我部署的 Edge Microgateway 代理伺服器數量是否有限制?
請參閱為一般 Edge 代理指定的產品設定限制。您在 Apigee Edge 機構和環境中部署的微閘道感知 Proxy 數量,以及透過 Edge Microgateway 呼叫的 Proxy 數量,都必須符合這些限制。
我可以將 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 感知 Proxy。

效能

使用 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 for Private Cloud?
可以。詳情請參閱「 Apigee Private Cloud 設定步驟」。

外掛程式

如何透過 Edge Microgateway 強制執行配額?
您可以視需要將配額外掛程式新增至 Edge Microgateway 執行個體。詳情請參閱「使用配額外掛程式」。
Edge Microgateway 如何強制執行尖峰流量限制?
您可以選擇在 Edge Microgateway 執行個體中新增尖峰流量抑制外掛程式。詳情請參閱「使用尖峰抑制外掛程式」。
除了 Node.js,還有其他方法可以編寫 Edge Microgateway 外掛程式嗎?
否。外掛程式必須以 Node.js 編寫。
如果 Edge Microgateway 無法將 Analytics 資料上傳至 Edge,會發生什麼情況?
Edge Microgateway 具有記憶體內緩衝區。如果緩衝區已滿,系統會捨棄較舊的酬載,確保 API 流量順暢。
我可以為 Edge Microgateway 新增政策嗎?
如果您將一般 Apigee Edge 政策附加至 Apigee Edge 中的微閘道感知 Proxy,系統會忽略這些政策。Edge Microgateway 會使用外掛程式,提供與 Edge 政策類似的功能,例如配額、尖峰流量防範、API 金鑰安全性和 OAuth2 安全性。您也可以自行編寫外掛程式。請參閱「使用外掛程式」和「開發自訂外掛程式」。

如要瞭解其他外掛程式用途,請參閱下列 Apigee 社群貼文和網誌:

安全性

如何保護 /products 資源?
總覽
設定 Edge Microgateway 時,系統會將名為 edgemicro-auth 的 API Proxy 部署至 Apigee Edge 的機構:環境。這個 Proxy 會公開 /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),保護 Edge Microgateway 與 edgemicro-auth Proxy 之間的通訊。

  1. 開啟 $HOME/.edgemicro/org-env-config.yaml 檔案。如果找不到這個檔案,請參閱「 Edge Microgateway 安裝位置」。
  2. 將下列 tlsOptions 區塊新增至 org-env-config.yaml 檔案,啟用 Edge Microgateway 與 Apigee Edge 之間的雙向傳輸層安全標準 (mTLS):
    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 Proxy 的虛擬主機已啟用 mTLS。 詳情請參閱 Apigee Edge 說明文件中的「定義雙向 TLS 的虛擬主機」。

    下圖顯示如何在 Apigee Edge UI 中,對虛擬主機啟用相互 TLS:

  4. 在 Edge UI 中查看 edgemicro-auth API Proxy,確認 Proxy 設定中指定的虛擬主機正確無誤。舉例來說,如果您建立名為 mutualtls 的虛擬主機並啟用 TLS,則 Proxy 的 HTTPProxyConnection 節應如下所示:
    <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" }

另請參閱:

在 Windows 上設定 SSL
如果是在 Windows 上執行 Edge Microgateway,則必須在電腦上安裝 OpenSSL,並新增至 PATH。 並非所有 Windows 電腦都隨附 OpenSSL。如要瞭解如何下載及安裝 OpenSSL,請參閱 OpenSSL 說明文件。
我是否可以使用與 Edge Micro 感知 Proxy 相關聯的 API 產品,允許存取 API 資源?

目前系統只會檢查基礎路徑,判斷 API 是否已獲准用於與特定 OAuth 權杖相關聯的 API 產品。

例如:

  1. 您可以使用基本路徑和目標建立 edgemicro_ 前置字元的 Proxy。
  2. 將這個 Proxy 新增至產品。我們就稱之為 edgemicro-prod1。
  3. 透過 Edge Microgateway 使用 API 金鑰或 OAuth 權杖發出 API 呼叫時,Edge Microgateway 會檢查 API 的 basepath 是否與 edgemicro_* Proxy 的 basepath 相符,且該 Proxy 已獲准列入該金鑰或權杖核准的產品清單。

另請參閱 Apigee 社群的 「When using the edgemicro gateway in the products which url needs whitelisting in the products used under resources?」(在產品中使用 edgemicro 閘道時,哪些網址需要在資源使用的產品中加入允許清單?)。

我可以在 Edge Microgateway 中使用自訂 SSL 憑證嗎?

目前僅支援預設 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 社群的「 Verify Edge Micro install errors on SSL cert」。

使用 Edge Microgateway 時,可以避免使用機構管理員帳戶嗎?
Edge Microgateway 設定指令碼會將 edgemicro-auth Proxy 部署至 Edge,而這項部署作業需要機構管理員憑證。
不過,完成初始部署後,您應該就能進行其餘設定,不必使用機構管理員憑證。另請參閱 這篇社群貼文,瞭解機構組織管理員憑證。
我可以在 Edge Microgateway 中使用自己的 OAuth 權杖嗎?

你可以使用自己的權杖,但必須先關閉 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 當機。根據預設,記錄透過 Microgateway 傳入和傳出的交易時,需要兩個 HTTP 連線。

為進行測試和基準化作業,Apigee 建議將系統的 ulimit 指令設為無限制:ulimit -n unlimited。另請參閱 Apigee 社群中的「Edge Microgateway error during load testing」。

快速開發和偵錯的訣竅

如果您要開發 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 支援建立支援單、提出功能要求及回報錯誤。