多年来,我们一直在使用带有 Mod_wl 插件的 Apache 服务器来平衡多个后端 Weblogic 网络服务器的会话。
现在过了一段时间,我们也开始使用相同的 Apache 来反向代理其他内部应用程序。所以我现在想知道为什么我们甚至使用 mod_wl 而不是 Apache 服务器自己的 mod_proxy 和 mod_proxy_balancer 来平衡我们自己的后端 Weblogic web 服务器?
这个专有插件有什么好处吗?还是说几年前仅使用 Apache Config 很难实现同样的效果?我尝试了不带 Mod_wl 插件的设置进行了一些测试,它似乎工作得很好,只是对于会话粘性,似乎我不得不通过 Apache 添加一个新 cookie,因为它由于某种原因无法与 Weblogics 设置的现有 J2SESSIONID 一起使用。
因此
Header add Set-Cookie "J2ROUTE=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://backends>
BalancerMember http://localhost:9001 route=1
BalancerMember http://localhost:9002 route=2
ProxySet stickysession=J2ROUTE
</Proxy>
看起来与使用 mod_wl 的先前配置执行的操作相同:
SetHandler weblogic-handler
WebLogicCluster localhost:9001,localhost:9002
WLCookieName J2SESSIONID
这当然是一个简化的示例配置。所以不确定是否继续使用专有插件,因为它正在工作,不要更换获胜的团队?或者转向更开源的 Apache 解决方案。
答案1
weblogic 插件与后端集群“对话”,并刷新集群报告的任何成员可用的后端列表,也就是说,您可以拥有多个新的集群成员,而无需触及 apache 相关的配置。
Oracle 还宣传 WLSRequest 是一种比“SetHandler”方法更灵活、更简单的指定特定位置反向代理到 Weblogic 的方法。
话虽如此,mod_wl 是第三方的,到目前为止,它已经证明了事件 mpm 的问题,例如,当您发出一个优雅时,它肯定会将使用的进程挂在优雅完成的结束循环中,直到您发出真正的重启,您也不能使用 maxconnectionsperchild ,否则您会随着时间的推移而失去子进程(我认为 httpd 开发人员正在即将发布的 2.4.33 版本中解决这个问题)。
因此,我会查看 oracle 文档并测试这两个选项,但最近我也倾向于非第三方选择,即使用 mod_proxy。
如果您尝试后能报告情况我将非常高兴。