Sha*_*man 3 cluster jboss socket apache-2.4 wildfly8
我们正在开发一个要部署在 JBoss/Wildfly 上的 JavaEE 7 应用程序,该应用程序将广泛使用 Web 套接字。我们正在使用Web 套接字支持,并且我们已经成功通过在 Apache 2.4 上mod_proxy_wstunnel使用来启动并运行代理配置:mod_cluster
互联网 -> Apache HTTPD -> Wildfly
我们现在面临着对该应用程序进行集群的问题。我们将至少有 4 个节点启动并运行,以实现性能可扩展性和高可用性。我尝试创建一个<Proxy />具有 2 个成员服务器的元素来完成此任务。它看起来像这样:
<VirtualHost *:80>
...
<Proxy balancer://myBalancer>
BalancerMember ws://localhost:9080
BalancerMember ws://localhost:19080
</Proxy>
<Location /ws>
...
ProxyPass balancer://myBalancer/MyContextPath/myWebSocketEndpoint
ProxyPassReverse balancer://myBalancer/MyContextPath/myWebSocketEndpoint
</Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用。当尝试打开路径上的网络套接字时,我总是在 JavaScript 中遇到连接错误http://localhost/ws。我快速浏览了一下文档mod_proxy_balancer,发现它声明支持 HTTP、FTP 和 AJP13 协议。有没有办法对 Web 套接字和 WS 协议进行负载平衡?或者这是一个完全不受支持的配置?我还可以利用哪些其他替代方案来实现这一目标?显然,使用单个 Web 套接字服务器作为我们的生产端点是不可接受的,因为它代表了单点故障。我非常感谢您提供的任何建议!
小智 5
根据Apache官方文档: https://httpd.apache.org/docs/2.4/en/mod/mod_proxy_balancer.html
mod_proxy_balancer 需要 mod_proxy 的服务,它为所有支持的协议提供负载平衡。最重要的是:
定义你的平衡器:
<Proxy balancer://wsBalancer>
BalancerMember ws://host1:9080 route=jvm1
BalancerMember ws://host2:9080 route=jvm2
ProxySet lbmethod=byrequests stickysession=JSESSIONID
</Proxy>
Run Code Online (Sandbox Code Playgroud)
然后让 ws 调用到达该平衡器:
<LocationMatch "^/cometd/.*">
ProxyPass "balancer://wsBalancer/" stickysession=JSESSIONID
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)
其中 /cometd/ 是应用程序的 WS 上下文。
| 归档时间: |
|
| 查看次数: |
8328 次 |
| 最近记录: |