【问题标题】:JGroups FD_SOCK configuration problemsJGroups FD_SOCK 配置问题
【发布时间】:2022-03-04 18:45:04
【问题描述】:

我正在尝试使用 FD_SOCK 协议建立一个包含 JGroups 的集群,但它没有像我预期的那样工作。

我有一个带有以下 FD_SOCK 配置的 JGroups 配置:

<FD_SOCK start_port="33287" client_bind_port="33288" port_range="2"/>

当集群中有两个节点时,TCP 连接被正确创建。假设我们有节点 A 和 B。创建的连接如下:

  • 对于客户 A 到 B:

    1. A:33288 -> B:33287
    2. A:33288
  • 对于客户 B 到 A:

    1. B:33288 -> A:33287
    2. B:33288 -> A:33287

但是,当我尝试添加第三个节点 C 时,节点第二个节点 B 说它无法创建到 A:33287 和 C:33287 的客户端套接字,因为它们已经在使用中。

现在,节点 C 确实使用端口 33287 创建了到节点 A 的一些 TCP 连接,但我预计节点 B 会将 start_port="33287" 增加到 33289,因为配置 port_range="2"。

我在这里错过了什么?

提前感谢您的帮助。

【问题讨论】:

    标签: jgroups


    【解决方案1】:

    所有 3 个节点是否都在不同的主机上? Port_range 表示如果一个端口已经被占用则跳过。

    【讨论】:

    • 是的。它们位于多个主机上。
    【解决方案2】:

    如 Jgroups documentation 所述,集群中的每个服务器仅检查其右侧的高度(根据配置文件中的服务器列表)。因此,当添加第三台服务器 C 时,服务器 B 停止检查服务器 A。只有在配置文件正确的情况下,这才是正确的行为。无论如何,更改配置文件需要重新启动所有服务器。

    故障检测端口 (FD_SOCK) 仅在干净服务器启动时才是实际的。在这种情况下,所有端口都应该释放。我想第一个问题是服务器重启太多,没有正确编辑所有服务器上的配置文件。

    另一方面,根据正确编码的应用程序和繁重的负载,端口可能会很快更改。当应用程序有很多端口处于 time-wait 状态时,重启后 fd_sock 端口将被随机选择。可能出于这个原因,OP 捕获了一个奇怪的消息,表明端口已被使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      • 1970-01-01
      • 2018-01-11
      • 2018-05-25
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      相关资源
      最近更新 更多