首页 > 解决方案 > 您可以使用 Datapower 根据用户 IP 地址将传入流量路由到不同的应用程序服务器吗

问题描述

我正在尝试查看是否可以根据用户的 IP 地址或主机名将用户请求路由到服务器 A 或服务器 B。

目前用户正在通过 URL https://thisismyprodserver:9999访问应用程序, 我们称之为 serverA,现在企业想要设置 serverB 并在此处部署新代码。然后他们想要过滤一些用户以使用 serverB 进行测试,但他们不知道有什么区别,因为他们仍然使用相同的 URL 访问他们的应用程序。不希望用户在前端看到任何差异。一旦少数用户在 serverB 上测试了更新的应用程序,他们就会将所有剩余的用户路由到 serverB,这将成为生产环境。

我希望 Datapower 可以介入并根据传入的用户 IP 地址将请求路由到 serverA 或 serverB。

当前流程是 USER Request <->WebServer <->AppServer 我想知道 Datapower 是否可以介入并将流程更改为 USER Request ->WebServer -> IDG -> ServerA -> ServerB

应用程序在 WAS v9 中运行,Webserver 是 Apache 2.4

我还想看看这是否可以通过 WebServer 完成,但希望将 IDG 集成到应用程序中。

标签: websphereibm-datapower

解决方案


您的问题有点不清楚,但最好的选择当然是在负载均衡器中使用具有规则的池来执行此操作,以将不同的 IP 引导到不同的端点。

如果您在他们“命中”的实例上拥有 TLS/SSL 证书,则无论如何都无法“转发”连接,因此在这种情况下,您唯一的选择是将第二个实例用作“后端”服务,并且首先作为“代理”或使用 url-open 从第二个获取数据并返回到第一个。您也可以返回 a301 redirect但在 API/服务实现中有很多服务/软件不喜欢它。尽管没有明确的路径可以最终迁移到您所寻求的第二个盒子,但这两个选项都不能满足您的要求。

一个更好的方法是添加一个“代理服务”,例如 MPGW,它根据请求源 IP 路由到 127.0.0.1:xxxx 上的服务或其他框。这样,您可以在两个盒子上拥有相同的服务,并且请求总是命中相同的“代理”服务。这在 DataPower 术语中也称为“链式服务”...


推荐阅读