高级限制适用于一台服务器,但不适用于其他服务器

问题描述 投票:2回答:1

我有4个WSO2AM服务器(非集群)都指向同一个数据库实例。我已启用高级限制,并已创建订阅层策略,但似乎并没有在所有实例上启动。

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

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

创建订阅的服务器确实正确限制。

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

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

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

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

wso2 wso2-am
1个回答
1
投票

限制策略的运行时工件部署在文件系统中。 (在repository / deployment / server / executionplans /中)目前,它仅部署在创建的节点上。这就是为什么你只看到该节点的速率限制。因此,要解决此问题,您需要在所有4个节点中共享这些内容。您必须已经为Synapse文件执行相同的操作。对执行计划也这样做。

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

© www.soinside.com 2019 - 2024. All rights reserved.