高级限制可在一台服务器上运行,而不能在其他服务器上运行

时间:2019-04-05 20:40:56

标签: wso2 wso2-am

我有4个WSO2AM服务器(未集群),均指向同一数据库实例。我启用了高级限制功能,并创建了订阅层策略,但是它似乎不能在所有实例中都适用。

所有服务器都有本地运行的网关/密钥管理器/流量管理器(不是集群的)。由于它们指向同一个数据库实例,因此所有流量管理器都应该能够检索该策略并将其应用于每个调用。

我使用REST API在1台服务器上为应用程序创建了订阅。当我转到其他3台服务器时,并且在获取此应用程序的订阅列表时,我看到它具有正确的层。

在其上创建订阅的服务器确实可以正常运行。

服务器1:使用新层为应用程序创建订阅 服务器1/2/3/4:调用/api/am/store/v0.14/subscriptions?applicationId=5DBAC189B8820398E05400144FF96272时,请检索正确的层级 服务器1:调用端点资源受到限制。 服务器2/3/4:调用端点资源不会受到限制。

我不想或不需要群集这4个服务器,我在它们前面有一个负载平衡器,以平衡方式引导流量。

我希望所有4个WSO服务器都会限制该应用程序对下游服务的访问。

关于为什么其他三台服务器不限制/应用策略的任何指示?可能是让其他服务器从数据库重新加载数据的一种方式。

1 个答案:

答案 0 :(得分:1)

节流策略的运行时工件已部署在文件系统中。 (在存储库/部署/服务器/执行计划/中)当前,它仅部署在创建的节点上。这就是为什么只在该节点中看到速率限制的原因。因此,要解决此问题,您需要在所有4个节点中共享它们。您必须已经对Synapse文件进行了相同的操作。对执行计划也要这样做。

要注意的另一件事是,由于每个网关都与其本地TM通信,因此限制计数也将是本地的(不共享)。如果这是一个问题,建议您使用一个外部TM,并将所有GW发布到该TM节点。