我有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台服务器没有限制/应用策略的任何指针?可能是让其他服务器从数据库重新加载数据的一种方法。
限制策略的运行时工件部署在文件系统中。 (在repository / deployment / server / executionplans /中)目前,它仅部署在创建的节点上。这就是为什么你只看到该节点的速率限制。因此,要解决此问题,您需要在所有4个节点中共享这些内容。您必须已经为Synapse文件执行相同的操作。对执行计划也这样做。
另外需要注意的是,由于每个网关都与其本地TM通信,因此限制计数也将是本地的(不共享)。如果这是一个问题,我建议你有一个外部TM并使所有GW发布到该TM节点。