发布
社区首页 >问答首页 >跨2个子网的JGroup群集

跨2个子网的JGroup群集
EN

Stack Overflow用户
提问于 2017-02-21 23:22:48
回答 1查看 862关注 0票数 0

最近,我尝试使用JGroup创建一个集群,以便连接到同一集群的不同机器能够相互交换消息。

我已经在我的本地主机上尝试过这个简单的聊天应用程序(在两个java应用程序之间),它可以毫无问题地工作,也就是说,它们能够在彼此之间接收和发送消息。

以下是场景PC1:由java模块(接收方)Server2(使用jgroup的模块驻留在此服务器中)组成:发送方

我的下一步是将发送者(集群的创建者)移动到另一个子网,但仍然在同一个网络中,因为我可以从我的PC1 ping私有ip地址。理想情况下,服务器1将创建集群(是第一个加入的),当我在本地机器上启动接收器时,它应该加入服务器1创建的集群。

在这两个子网之间有一道防火墙。

我尝试过使用默认的JChannel设置,但它不起作用。已创建群集,但PC1无法连接到该群集,而是形成了自己的群集。它们具有相同的群集名称。

我做了进一步的研究,我是否必须在服务器上设置UDP多播,作为发送者和接收者,TCP单播到服务器中创建的集群?如果是这样,我读到我必须以xml或编程方式配置一个协议栈,并将它们传递给JChannel实例化。使用TCPPING进行发现?

有没有人能说点什么?其次,由于它们之间有防火墙,我需要设置TCPGOSSIP吗?

诚挚的问候,

EN

回答 1

Stack Overflow用户

发布于 2017-05-04 21:28:20

我在使用mod_cluster和JGroups以及apache-camel的环境中也遇到了同样的问题。为了实现两个数据中心(子网)的集成,我使用TCP上的JGroups和mod_cluster来代替默认的带有组播的UDP。使用JGroups,您需要设置一个包含整个协议栈配置的文件,包括the。在JGroups的.jar中,可以找到像tcp.xml和tcp-nio.xml这样的示例文件。我花了一些时间使用JGroups 3.4.1,因为在我升级到3.6.13版本之前,tcpping配置不起作用。

如果您正在使用JChannel类,则只需使用构造函数即可接收包含配置XML文件路径的字符串。不要忘记关键参数

-Djgroups.bind_addr -Djgroups.tcpping.initial_hosts=NODE1[7800],NODE2[7800]

由TCP配置使用。在您的情况下,您还需要在防火墙中配置JGroups使用的端口。

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42371324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档