使用外掛程式

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

Edge Microgateway 3.3.x 版

目標對象

本主題適用於希望使用現有外掛程式的 Edge Microgateway 運算子 會透過微門安裝。也會探討 Google Cloud 中 詳細資料 (安裝包含兩者)。如果您是想要開發新的 外掛程式,請參閱開發 自訂外掛程式

什麼是 Edge Microgateway 外掛程式?

外掛程式是一種 Node.js 模組,可為 Edge Microgateway 新增功能。外掛程式模組 遵循一致模式,且儲存在 Edge Microgateway 上的已知位置,使 即可自動探索並載入微型閘道。Edge Microgateway 包含 外掛程式,您也可以建立自訂外掛程式,如「開發自訂外掛程式」所述。

隨附於 Edge 的現有外掛程式 微型閘道

安裝時會提供多種 Edge Microgateway 外掛程式。 下列 表格將說明一些最常用的外掛程式。

外掛程式 預設為啟用 說明
數據分析 將數據分析資料從 Edge Microgateway 傳送至 Apigee Edge。
oauth 將 OAuth 權杖和 API 金鑰驗證新增至 Edge Microgateway。請參閱設定 並設定 Edge Microgateway
配額 針對傳送至 Edge Microgateway 的要求強制執行配額。使用 Apigee Edge 儲存和管理 以及配額請參閱使用配額外掛程式
尖銳音樂 防範流量遽增和 DoS 攻擊。請參閱使用尖峰流量防範外掛程式一文。
標題大寫 加上註解的 Proxy 範例,旨在協助開發人員編寫自訂外掛程式。 詳情請參閱 Edge Microgateway 範例外掛程式
accumulate-request 將要求資料模擬為單一物件,然後再將資料傳送至下一個物件 外掛程式中的處理常式。適合編寫需要在 單一的累計要求內容物件
accumulate-response 將回應資料實作到單一物件中,然後再將資料傳送至下一個物件 外掛程式中的處理常式。適合編寫需要在 單一的累計回應內容物件
轉換要求或回應資料。這個外掛程式代表最佳做法 Transformer 外掛程式實作範例外掛程式會執行微型轉換 (將要求或回應資料轉換為大寫);但還是可以輕鬆調整 執行其他類型的轉換,如 XML 至 JSON。
json2xm 根據 Accept 或 content-type 標頭轉換要求或回應資料。適用對象 相關詳情,請參閱這篇 說明文件
配額記憶體 針對傳送至 Edge Microgateway 的要求強制執行配額。在本機儲存及管理配額 記憶體用量
健康狀態檢查 傳回 Edge Microgateway 程序的相關資訊,包括記憶體用量、CPU 使用率 如要使用這個外掛程式,請在 Edge 上呼叫網址 /healthcheck Microgateway 執行個體。這個外掛程式就是一個可用來 實作您自己的健康狀態檢查外掛程式

如何找出現有外掛程式

隨附於 Edge Microgateway 的現有外掛程式,其中 [prefix]npm 前置字串目錄詳情請參閱 如果找不到這個目錄,請安裝 Edge Microgateway 在哪裡。

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

新增及設定外掛程式

請按照以下模式新增及設定外掛程式:

  1. 停止 Edge Microgateway。
  2. 開啟 Edge Microgateway 設定檔。如需詳細資訊,請參閱 變更設定選項。
  3. 將外掛程式新增至設定檔的 plugins:sequence 元素,如下所示。 外掛程式會按照這份清單中的顯示順序執行。
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. 設定外掛程式。部分外掛程式具有選用參數,您可以在 設定檔。舉例來說,您可以新增下列節拍,設定流量高峰 外掛程式。請參閱「使用尖峰流量防範外掛程式」一節。 瞭解詳情
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
    
    敬上
  1. 儲存檔案。
  2. 視您編輯的設定檔而定,重新啟動或重新載入 Edge Microgateway。

外掛程式專屬設定

如要覆寫設定檔中指定的外掛程式參數,請建立 特定外掛程式的設定:

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

其中 [prefix]npm 前置字串目錄。詳情請參閱 如果找不到這個目錄,請安裝 Edge Microgateway 在哪裡。

plugins/<plugin_name>/config/default.yaml。舉例來說,您可以將 在 plugins/spikearrest/config/default.yaml 中封鎖,而且會覆寫其他 配置設定。

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

使用尖峰流量的外掛程式

峰值逮捕外掛程式可防範流量暴增。可針對 由 Edge Microgateway 執行個體處理

新增尖峰式逮捕外掛程式

請參閱新增並設定外掛程式

以下項目的設定範例: 尖頂逮捕

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

的設定選項 尖頂逮捕

  • timeUnit:高峰逮捕執行期間重設的頻率。有效值 分別為第二或分鐘。
  • allow:在 timeUnit 中允許的要求數量上限。詳情請見 在同一處同時執行多個 Edge Micro 程序
  • bufferSize:(非必要,預設值 = 0) if bufferSize >0,驟增率 會將這個數量的要求儲存在緩衝區中。下一個執行「視窗」後立即執行發生時 系統會先處理緩衝要求另請參閱新增 緩衝區

激增的逮捕方式是什麼?

您可以視為應對高峰期的一種方法,一般都能防範流量高峰,而非 將流量限制於特定數量要求您的 API 和後端可處理 此外,流量暴增政策也有助於確保流量順利推進一般流量 您期望的行為

執行階段尖峰防範行為與預期值不符 每分鐘或每秒輸入的值

舉例來說,假設您指定每分鐘 30 次要求的速率,如下所示:

spikearrest:
   timeUnit: minute
   allow: 30

在測試過程中,假設你可在 1 秒內傳送 30 個要求 大約需要 1 分鐘不過,這並非這項政策強制執行設定的方式。不妨考慮 30 在某些環境中,1 秒內發生的要求數量可能被視為一小高峰。

然後呢?為預防類似突然激增的行為,流量高峰能夠順暢運作 將設定分成較短的時間間隔,如下所示:

每分鐘費率

每分鐘費率會順暢化為允許的間隔秒數的要求。例如:30 每分鐘的要求數會經過簡化,如下所示:

60 秒 (1 分鐘) / 30 = 2 秒間隔,或大約每 2 秒允許 1 個要求。A 罩杯 因此 2 秒內第二次的請求將會失敗。此外,一分鐘內的第 31 項要求也會失敗。

每秒費率

每秒費率可針對允許的要求順暢執行 (以毫秒為單位)。例如: 每秒 10 個要求將順暢處理,如下所示:

1000 毫秒 (1 秒) / 10 = 100 毫秒的間隔,或大約允許 1 個要求 每 100 毫秒 更新一次如果 100 毫秒內,第二次要求將會失敗。此外,第 11 項要求 因此無法完成後續處理

超過上限時

如果要求數量超過指定時間間隔內的限制,則尖峰流量遭到鎖定 會傳回 HTTP 503 狀態的錯誤訊息:

{"error": "spike arrest policy violated"}

新增緩衝區

您可以選擇在政策中新增緩衝區。假設您將緩衝區設為 10, 您會發現在超過遽增的部分時,API 未立即傳回錯誤 我們會自動向帳單帳戶扣款 並每月或在您達到用量上限時發送帳單而是會緩衝處理要求 (最多可達指定數字),而緩衝要求則會 就會盡快處理。預設 bufferSize 為 0。

在執行多個 Edge Micro 時 程序

允許的要求數取決於 備用資源尖峰流量會計算每個工作站程序允許的要求數量。根據預設 Edge Micro 程序數量等於 Edge Micro 機器的 CPU 數量 已安裝。不過,您可以在啟動 Edge Micro 時設定工作站處理程序的數量 請在 start 指令上使用 --processes 選項。舉例來說,如果您在 您希望在特定時間範圍內在 100 個要求內觸發尖峰流量,而且在啟動 Edge 時 設有 --processes 4 選項的微閘道,請將 allow: 25 包括流量高峰總結來說,經驗法則是設定 allow 設定 參數的值為「desired 峰 rerestCount / 程序數」。

使用配額外掛程式

配額可指定應用程式可提交要求至 API 的要求訊息數量 每小時、每天、每週或每月。應用程式達到配額限制時 已拒絕 API 呼叫。另請參閱 用量高峰和配額

新增配額外掛程式

請參閱新增並設定外掛程式

Apigee 中的產品設定 邊緣

您可以在設定 API 產品的 Apigee Edge UI 中設定配額。您需要知道 包含要設定配額限制的微閘道感知 Proxy。這個 產品必須新增至開發人員應用程式。當您使用 金鑰,這項配額將適用於這些 API 呼叫。

  1. 登入您的 Apigee Edge 機構帳戶。
  2. 在 Edge UI 中,開啟與微閘道感知 Proxy 相關聯的產品,以便執行以下動作: 以便套用配額
    1. 在使用者介面中,從「發布」選單中選取「產品」
    2. 開啟要套用配額的 API 所屬的產品。
    3. 按一下 [編輯]
    4. 在「配額」欄位中指定配額間隔。例如每段一次 一分鐘。或每 2 小時 50,000 個要求。

  1. 按一下 [儲存]
  2. 請確認產品已新增至開發人員應用程式。您需要這個應用程式的金鑰 經過驗證的 API 呼叫

配額設定範例

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

配額設定選項

如要設定配額外掛程式,請將 quotas 元素新增至設定檔。 如以下範例所示:

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota
quotas:
    bufferSize:
      hour: 20000
      minute: 500
      month: 1
      default: 10000
    useDebugMpId: true
    failOpen: true
    isHTTPStatusTooManyRequestEnabled: true
...
選項 說明
bufferSize

(整數) bufferSize 設定可讓您調整 Edge Microgateway 的頻率 會將配額數量同步至 Apigee Edge。為了瞭解 bufferSize,請考慮下列設定範例:

quotas:
 bufferSize:
  minute: 500
  default: 10000
 useDebugMpId: true
 failOpen: true

根據預設,如果出現 配額間隔設為「分鐘」 上述設定指出,如果在 API 產品中設定配額間隔, "minute"、Edge Microgateway 會與 Edge 同步,以便取得目前配額,每 500 次要求或 5 秒後 (兩者取其先)。如需更多資訊 請參閱瞭解配額的計算方式

允許時間 單位包括:minutehourdayweekmonthdefault

isHTTPStatusTooManyRequestEnabled

設定配額外掛程式,讓系統傳回 HTTP 429 回應狀態 (而非狀態) 如果遭到違規則為 403。

預設值:false。根據預設,或旗標設為 false 配額會傳回 HTTP 狀態 403 系統就會傳送快訊

如果旗標設為 true,配額會傳回 HTTP 狀態 429 系統就會傳送快訊

如要將預設 HTTP 傳回狀態變更為 429,請使用下列設定:

edgemicro:
...
quotas:
  isHTTPStatusTooManyRequestEnabled: true
敬上 ...
failOpen 啟用這項功能後,如果發生配額處理錯誤 或是「適用配額」無法向 Edge 發出的要求更新遠端配額計數器,配額 會根據本機數量處理,直到下次成功的遠端配額為止 同步處理作業會發生的時間在這兩種情況下,quota-failed-open 標記都會在 要求物件。

如要啟用「失效開放」配額功能,進行以下設定:

edgemicro:
...
quotas:
  failOpen: true
敬上 ...
useDebugMpId 將此標記設為 true 即可啟用 MP 記錄功能 (訊息處理器) ID 。

如要使用這項功能,您必須進行下列設定:

edgemicro:
...
quotas:
  useDebugMpId: true
...

設定 useDebugMpId 後,Edge 的配額回應就會包含 MP ID 且會由 Edge Microgateway 記錄例如:

{
    "allowed": 20,
    "used": 3,
    "exceeded": 0,
    "available": 17,
    "expiryTime": 1570748640000,
    "timestamp": 1570748580323,
    "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
}
useRedis 如果設為 true,外掛程式就會使用 Redis 做為配額備份存放區。 詳情請參閱使用 Redis 備份存放區取得配額

瞭解配額的計算方式

根據預設,如果出現 配額間隔設為「分鐘」如果間隔設定的等級超過 「分鐘」,例如「週」或「月」,預設的重新整理週期為 1 分鐘。

請務必特別留意 會記錄在 Apigee Edge 上的 API 產品中配額間隔會指定允許的要求數量 代表某分鐘、小時、天、週或月。例如,產品 A 的配額間隔可能為 每分鐘 100 個要求,產品 B 的配額間隔可能為每小時 10,000 個。

Edge Microgateway quota 外掛程式的 YAML 這項設定「不會」設定配額 interval;反而能用來調整本機 Edge Microgateway 的 執行個體會同步處理配額 。

舉例來說,假設 Apigee Edge 中有三項 API 產品定義如下 指定的配額間隔:

  • 產品 A 的配額為每分鐘 100 個要求
  • 產品 B 的配額為每小時 5000 個要求
  • 產品 C 的配額為每月 1000,000 個要求

瞭解這些配額設定之後,Edge Microgateway quota 外掛程式的使用方式 會發生什麼情況?最佳做法是將 Edge Microgateway 設為同步間隔, 低於 API 產品所定義的配額間隔。例如:

quotas:
    bufferSize:
      hour: 2000
      minute: 50
      month: 1
      default: 10000

這項設定會為前述的 API 產品定義下列同步處理間隔 版本:

  • 產品 A 設為「分鐘」間隔。Edge Microgateway 將於之後同步至 Edge 每隔 50 個要求或 5 秒 (兩者取其先)。
  • 產品 B 設為「小時」間隔。Edge Microgateway 將於之後同步至 Edge 每 2000 個要求或 1 分鐘 (以先發生者為準)。
  • 產品 C 設為「month」間隔。Edge Microgateway 將於之後同步至 Edge 每個要求或 1 分鐘 (兩者取其先)。

每當微閘道執行個體與 Edge 同步時 配額數量會設定為擷取的配額數量。

bufferSize 設定可讓您調整配額計數器的方式 就會與 Edge 同步在高流量的情況下,bufferSize 設定 允許緩衝區計數器在觸發預設時間式同步作業之前進行同步處理。

瞭解配額範圍

配額數量適用於機構中的環境,為了達到這個範圍 Edge Microgateway 建立的配額 ID 是「org + env + appName + productName」。

使用 Redis 備份存放區取得配額

如要將 Redis 備份存放區用於配額,請使用 同步處理工具功能。以下是將 Redis 用於以下目的基本設定: 配額儲存空間:

edgemicro:
  redisHost: localhost
  redisPort: 6379
  redisDb: 2
  redisPassword: codemaster

quotas:
  useRedis: true
敬上 如要進一步瞭解 edgemicro.redis* 參數,請參閱「使用同步處理工具」。

測試配額外掛程式

超過配額時,系統會將 HTTP 403 狀態及 的訊息:

{"error": "exceeded quota"}

系列產品差異 如何應對突然暴增和配額?

請務必為目前工作選擇合適的工具。配額政策設定 在本課程中,用戶端應用程式可提交要求訊息至 API 的要求訊息數量 一小時、一天、一週或一個月。配額政策會針對用戶端應用程式強制執行用量限制,方法為 維護可計算傳入要求的分散式計數器。

使用配額政策,強制與開發人員和合作夥伴簽署業務合約或服務水準協議,而非 而不是營運流量管理舉例來說,您可以使用配額限制 但付費客戶則可以使用完整服務。

使用尖峰流量防範機制,防範 API 流量突然激增。流量高峰期通常為 來阻止潛在的 DDoS 或其他惡意攻擊