gpt4 book ai didi

java - 跨 2 个子网的 JGroup 集群

转载 作者:行者123 更新时间:2023-12-01 08:51:32 27 4
gpt4 key购买 nike

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

我已经在我的本地主机上尝试了简单的聊天应用程序(在2个java应用程序之间),它工作没有问题,即它们能够在彼此之间接收和发送消息。

这是场景PC 1:由java模块(接收器)组成服务器 2(使用 jgroup 的模块驻留在该服务器中):发件人

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

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

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

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

有人可以透露一些信息吗?其次,由于它们之间有防火墙,我需要设置 TCPGOSSIP 吗?

最诚挚的问候,

最佳答案

我在使用 mod_cluster 和 JGroups 以及 apache-camel 的环境中遇到了同样的问题。为了实现两个数据中心(子网)集成的要求,我在 TCP 上使用 JGroups 和 mod_cluster,而不是使用多播的默认 UDP。使用 JGroups,您需要设置一个文件,其中包含协议(protocol)栈的整个配置,包括 tcpping。在 JGroups 的 .jar 中,您可以找到 tcp.xml 和 tcp-nio.xml 等示例文件。我在使用 JGroups 3.4.1 时损失了一些时间,面临着 tcpping 配置问题,这些问题直到我升级到版本 3.6.13.Final 后才起作用。

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

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

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

希望有帮助。

关于java - 跨 2 个子网的 JGroup 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42371324/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com