2017-02-27 51 views
2

我們已經在DC/OS 1.9(Mesos)上以分佈方式部署了API-M 2.1(每個組件,GW,TM,KM都在它們自己的Docker映像中運行) )。WSO2 API Manager 2.1:網關沒有強制執行節流限制

我們遇到問題可以讓網關執行限制策略(應該是預訂層或應用級策略)。下面是我們已經設法到目前爲止定義:

  1. 流量管理器本身並沒有它的工作:它接收到的事件流,分析它們在飛行和推動一個事件到JMS話題throttledata

  2. 網關正確讀取消息。 所以基本上我們已經拋棄了一個溝通問題。

然而,我們發現了兩個潛在的問題:

  1. 在事件,這是被推到了TM組成部分,appTenant的值是(而不是carbon.super) - 我們有定義一個租戶。
  2. 當網關接收到限制消息時,它決定讓消息在設置爲true(我們檢查數據庫中的值)時將「stopOnQuotaReach」設置爲false。

挖掘源代碼,我們將這兩個問題關聯到一個源代碼:上述兩個值的值都是從authContext中讀取的,顯然是錯誤設置的。我們被困住了,想盡辦法去嘗試,並且需要一些指向可能是問題的潛在來源和要檢查的事情的指示。

有人可以幫忙嗎? 謝謝 - 伊莎貝爾。

+0

限制限制是否僅對訂閱層不執行?或者它不適用於boh應用程序層和訂閱層? – harsha89

+0

即使appTenant爲null,我們在生成subscccription節奏鍵或應用程序級節制鍵時也沒有考慮到這一點。因此它不應該有執行限制限制的任何效果。 – harsha89

+0

我們需要檢查的一件事是,節流決定是否通過JMS – harsha89

回答

0

在系統中是否有兩個啓用HA的TM?

如果TM已啓用HA,則網關如何將數據發佈到TM。是否將負載均衡的數據發佈或故障轉移數據發佈到TM?

您是否按照以下文章來配置與部署相關的環境?

http://wso2.com/library/articles/2016/10/article-scalable-traffic-manager-deployment-patterns-for-wso2-api-manager-part-1/

http://wso2.com/library/articles/2016/10/article-scalable-traffic-manager-deployment-patterns-for-wso2-api-manager-part-2/

是完全節流您的環境中無法正常工作?

您是否注意到網關節點中的任何JMS連接相關日誌?

+0

Harsha進入網關,一些額外的評論:我們確信JMS交換是有效的,因爲正如我所提到的,GW會消耗BUT決定讓請求去,因爲QuotaOnReach是沒有設置,這是不正確的。該代碼顯示此驗證是針對authContext完成的。所以有一個問題是:什麼時候設置了authContext的值?如果您可以指出代碼中的確切位置,我們可以縮小問題的來源。謝謝。 – Isabelle

+0

這是QuotaOnReach設置不正確的問題嗎?由於它在本地工作,所以它有點風格。 QuotaOnReach屬性來自密鑰管理器。你有沒有任何自我優化的知識? – harsha89

+0

它在數據庫中正確設置。我們在知識管理方面沒有做過什麼特別的事情(除了它在自己的容器中運行) - 知識管理是否會從數據庫中讀取它並填寫authContext?上下文如何/何處傳遞給網關?謝謝。 – Isabelle

0

在這些測試中,我們已禁用HA以避免可能的併發症。訂閱和應用程序限制策略都不起作用,這是因爲應該有值的參數沒有足夠的值(appTenant,stopOnQuotaReach)。 我們的場景更基本。如果我們去每個組件的一個實例,它會失敗,如伊莎貝爾所描述的。我們唯一知道的是這兩個參數都來自認證環境。

謝謝!