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 的本機設定中。使用前置字串 edgemicro_ 命名的 Proxy 會支援 Micro Gateway。
使用 Edge Microgateway 記錄時,有哪些選項?
Edge Microgateway 內建記錄功能。詳情請參閱「 管理記錄檔」。
您也可以撰寫自訂外掛程式,以便在 Edge Microgateway 中使用第三方記錄服務。基於 Edge Microgateway 的運作方式,您無法使用 Apigee Edge 訊息記錄政策來記錄 Edge Microgateway 的訊息。另請參閱 Microgateway 適用的 Logging 外掛程式社群文章。
我可以在 Edge Microgateway 的不同執行個體之間重複使用金鑰/密碼組合嗎?
只要 Microgateway 執行個體的機構和環境相同,您就可以重複使用設定期間產生的金鑰/密鑰組。
如何設定 Edge Microgateway,以便在正式環境中啟動?
您可以設定啟動指令參數的環境變數,例如 EDGEMICRO_KEYEDGEMICRO_SECRETEDGEMICRO_ORGEDGEMICRO_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 在 Node.js 11.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 CLI 參考資料所述,下列 Edge Microgateway 指令會呼叫 Apigee Edge 管理 API 來執行工作:

  • edgemicro configure
  • edgemicro upgradeauth
  • edgemicro upgradekvm
  • edgemicro rotatekey
  • edgemicro cert check
  • edgemicro cert delete
  • edgemicro cert install

下列各節會列出各指令使用的管理 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 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 指令會呼叫下列 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 指令會呼叫下列管理 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 上非 Microgateway API Proxy 部署作業。
Edge Microgateway 的高可用性部署模式為何?
如要進一步瞭解如何使用 NGINX 做為負載平衡器來執行 Edge Microgateway,請參閱「 使用 Apigee Edge Microgateway 和 NGINX 管理 API」。
我可以搭配 Edge Microgateway 使用哪些負載平衡器?
Edge Microgateway 可與任何負載平衡器搭配使用。
我可以部署的 Edge Microgateway 代理伺服器數量是否有限制?
請參閱為一般 Edge 代理程式指定的產品設定限制。您可以在 Apigee Edge 機構和環境中部署的微型閘道感知 Proxy 數量,以及透過 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 感知 Proxy。

成效

使用 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 Private Cloud 設定步驟

外掛程式

如何透過 Edge Microgateway 強制執行配額?
您可以選擇為 Edge Microgateway 的執行個體新增配額外掛程式。詳情請參閱「使用配額外掛程式」。
如何透過 Edge Microgateway 強制執行尖峰流量防範機制?
您可以選擇在 Edge Microgateway 例項中加入尖峰封鎖外掛程式。詳情請參閱「使用 Spike Arrest 外掛程式」。
除了 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 中的 organization:environment。這個 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 (也稱為雙向 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 之間啟用雙向 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 加密套件。
  3. 請確認部署 edgemicro-auth Proxy 的虛擬主機已啟用雙向傳輸層安全標準 (TLS)。詳情請參閱 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-aware Proxy 相關聯的 API 產品,允許存取 API 資源嗎?

目前,系統只會檢查基本路徑,藉此判斷特定 OAuth 權杖的 API 產品是否已獲準使用 API。

例如:

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

另請參閱 Apigee Community 上的 這篇文章,瞭解在產品中使用 edgemicro 閘道時,哪些網址需要在資源下使用白名單。

我可以使用自訂 SSL 憑證搭配 Edge Microgateway 嗎?

目前僅支援預設 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 社群的「 驗證 Edge Micro 在 SSL 憑證上安裝錯誤」一文。

是否可以避免使用 Edge Microgateway 的機構組織管理員帳戶?
Edge Microgateway 設定指令碼會將 edgemicro-auth Proxy 部署至 Edge,而這項部署作業需要機構管理員憑證。
不過,完成初始部署後,您應該就能進行剩餘的設定,而不需要 Org 管理員憑證。另請參閱這篇社群貼文,瞭解如何取得 org 管理員憑證
我可以將自己的 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]
金鑰和 Secret 可能因某些原因而無效。最佳做法是使用 edgemicro genkeys 指令重新產生金鑰和密鑰。

測試和偵錯

如何在負載測試期間避免發生「開啟檔案過多」錯誤?

在某些情況下,系統可能會遇到太多已開啟的檔案連線,這可能導致 Edge Micro 當機。根據預設,記錄功能需要兩個 HTTP 連線,用於透過 Microgateway 傳入和傳出的交易。

為了測試和基準測試,Apigee 建議將系統的 ulimit 指令設為無限制:ulimit -n unlimited。另請參閱 Apigee 社群中的「Edge Microgateway 在負載測試期間發生錯誤」。

快速開發與偵錯的訣竅

如果您正在開發 Edge Microgateway 外掛程式的外掛程式,可能會發現快速開發的支援功能有限。

以下提供一些訣竅:

  • 如要啟動 Edge Microgateway,您可以將 EDGEMICRO_KEY 和 EDGEMICRO_SECRET 環境變數設為 Microgateway 啟動指令所需的金鑰/Secret 組合。這樣您無須在指令列中輸入金鑰/密鑰,就能啟動 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 支援服務建立支援單、功能要求和錯誤報告。