对 Amazon EC2 上的 Weblogic 10gR3 RMI 服务器的负载平衡请求
我正在参与开发一个分布式解决方案,基于RMI,并部署在多个Weblogic 10gR3(10.3.0.0)节点上。其中一个节点托管 RMI 服务器,其他节点通过外部 JNDI 提供程序访问它。在尝试通过添加额外的 RMI 服务器来改进我们的基础设施时,我们遇到了一些问题。
我们的基础设施详细信息:
-RMI 服务器正在托管服务器上的端口 7005 上运行。
-RMI 客户端通过远程 JNDI 提供程序访问它,该提供程序指向类似以下内容: t3://hostname:7005
我将发布到目前为止我们在创建其他 RMI 服务器时所尝试的内容,以及为什么它不起作用:
1) 使用亚马逊ELB -->这不是一个选项,因为它需要向整个互联网开放我们的运行时端口(7005),这显然是一个安全缺陷。
2) 配置多端点 JNDI 提供程序(类似于:t3://hostname1:7005,hostname2:7005),这显然适用于 JMS 队列 -->所有请求都定向到在 hostname1 上运行的 RMI 服务器,并且应用程序实际上运行良好。然而,当故意使hostname1后面的服务器崩溃时,没有任何请求被定向到hostname2。 (它们是否应该被重定向?)
3)使用软件负载平衡器,例如 HAproxy -->在 HTTP 层上进行平衡时,请求被解释为“t3 10.3.0.0”,从而导致 HAproxy 上出现 HTTP 502 错误。在 TCP 层进行平衡时,我们遇到了几个“丢失对象”错误,就好像单个 TCP 连接正在用于多个 HTTP 请求,并且在第一个请求终止后,后续请求无法访问远程对象(只是猜测)。
4)我们不愿意使用集群化的WebLogic环境。
5)我们没有考虑使用 spring-remoting-cluster< 等高级框架/a> 还没有。
有任何线索/建议吗?提前致谢!
I am participating in the development of a distributed solution, based on RMI, and deployed on multiple Weblogic 10gR3 (10.3.0.0) nodes. One of the nodes hosts a RMI server, and other nodes access it through a foreign JNDI provider. While trying to improve our infrastructure by adding additional RMI servers, we faced some issues.
Details of our infrastructure:
-RMI server is running on a managed server, on port 7005.
-RMI clients access it through a remote JNDI provider which points to something like: t3://hostname:7005
I am posting what we've tried so far, upon creating additional RMI servers, and why it did not work:
1) Using Amazon ELB --> this is not an option because it requires opening our runtime port (7005) to the whole Internet, which would obviously be a security flaw.
2) Configuring a multi-endpoint JNDI provider (something like: t3://hostname1:7005,hostname2:7005), which apparently works for JMS queues --> all of the requests were directed to the RMI server running on hostname1, and the application in fact worked fine. However, when deliberately making the server behind hostname1 crash, no requests were directed to hostname2. (Should they be redirected at all?)
3) Making use of a software load balancer, such as HAproxy --> when balancing over the HTTP layer, the requests were being interpreted as "t3 10.3.0.0", thus resulting in a HTTP 502 error on HAproxy. When balancing over the TCP layer, we got several "missing object" errors, as if a single TCP connection was being used for several HTTP requests, and after the first one was terminated, the subsequent requests were not able to access the remote objects (just guessing).
4) We were not willing to use a clustered WebLogic environment.
5) We did not consider the usage of high-level frameworks like spring-remoting-cluster yet.
Any clues/suggestions? Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看来我唯一(安全)的选择是将我的应用程序节点添加到 WebLogic 集群并通过集群平衡负载,或者在我的应用程序中执行重新设计。
It seems my only (safe) options are either adding my application nodes to a WebLogic Cluster and balance the load through the cluster or perform a redesign in my application.