24.2.2. 将默认 JGroups 频道切换为使用 TCP

默认情况下,集群节点使用为 ee JGroups 频道配置的 udp 协议堆栈进行通信。

<channels default="ee">
  <channel name="ee" stack="udp"/>
</channels>
<stacks>
  <stack name="udp">
    <transport type="UDP" socket-binding="jgroups-udp"/>
    <protocol type="PING"/>
    ...
  </stack>
  <stack name="tcp">
    <transport type="TCP" socket-binding="jgroups-tcp"/>
    <protocol type="MPING" socket-binding="jgroups-mping"/>
    ...
  </stack>
</stacks>

使用多播配置 TCP

某些网络仅允许使用 TCP。使用以下管理 CLI 命令,切换 ee 频道以使用预配置的 tcp 堆栈:

/subsystem=jgroups/channel=ee:write-attribute(name=stack,value=tcp)

此默认 tcp 堆栈使用 MPING 协议,它使用 IP 多播来发现初始群集成员资格。

在没有多播的情况下配置 TCP

当安全策略不首选或允许多播时,您可以将默认协议堆栈更改为使用 TCP。要在没有多播的情况下配置基于 TCP 的集群,请执行以下步骤:

  1. 运行以下命令,将 ee 频道切换为使用 JGroups 子系统中预先配置的 tcp 堆栈:

    <channel name="ee" stack="tcp" cluster="ejb"/>
  2. 设置集群节点的名称:

    • 在独立配置模式中,执行以下步骤之一:

      • 运行以下命令:

        <server xmlns="urn:jboss:domain:8.0" name="node_1">
      • 在启动实例时,为系统属性 jboss.node.name 指定唯一名称。
    • 在域模式中,集群服务器在 server 标签的 host-*.xml 文件中列出。默认配置指定以下服务器名称,您可以根据需要进行编辑。

      <servers>
          <server name="server-one" group="main-server-group"/>
          <server name="server-two" group="other-server-group">
              <socket-bindings port-offset="150"/>
          </server>
      </servers>
  3. 选择以下协议之一来发现其他群集成员:

    • TCPGOSSIP :此协议使用外部 Gosip 路由器服务来发现群集成员。这需要配置和管理其他进程,但允许单个 EAP 实例列出其他群集成员。如果群集成员频繁变化,此协议很有用。如需了解更多详细信息,请参阅 TCPPING
    • TCPPING :此协议定义了一个静态群集成员列表,并且要求每个节点列出所有潜在的群集成员。当群集成员地址未知且不会经常更改时,首选此协议。如需了解更多详细信息,请参阅 TCPGOSSIP