2017-02-27 93 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)。 我们的场景更基本。如果我们去每个组件的一个实例,它会失败,如伊莎贝尔所描述的。我们唯一知道的是这两个参数都来自认证环境。

谢谢!