0

我想创建一个由 3 个 Jboss AS7 节点组成的集群并具有以下场景。

我的三台机器是 1- Windows Server 2003 机器(IP:193.16.1.146) 2- Window 7 机器(IP:193.16.1.67) 3- Ubuntu Linux 机器(IP:193.16.1.68)

我正在使用standalon-full-ha.xml 配置文件来运行Jboss。

三台机器上的配置文件相同(IP除外),这是我对这三个文件所做的更改

1- jgroup 子系统

<subsystem xmlns="urn:jboss:domain:jgroups:1.1" ***default-stack="tcp"***>
        <stack name="udp">
            .........
        </stack>
        <stack name="tcp">
            <transport type="TCP" socket-binding="jgroups-tcp" diagnostics-socket-binding="jgroups-diagnostics"/>
    <protocol type="TCPPING">
                <property name="initial_hosts">193.16.1.146[7600],193.16.1.68[7600],193.16.1.67[7600]</property>
                <property name="num_initial_members">3</property>
                <property name="port_range">0</property>
                <property name="timeout">2000</property>
            </protocol>
            .......
        </stack>
    </subsystem>

2- 接口

<interfaces>
    <interface name="management">
        <inet-address value="${jboss.bind.address.management:193.16.1.68}"/>
    </interface>
    <interface name="public">
        <inet-address value="${jboss.bind.address:193.16.1.68}"/>
    </interface>
    <interface name="unsecure">
        <inet-address value="${jboss.bind.address.unsecure:193.16.1.68}"/>
    </interface>
</interfaces>

当然,IP会因机器而异。

现在,当我在两台 Windows 机器之间形成一个集群时,一切正常。当我启动两个节点时,我可以在控制台日志中(在两台机器中)看到与另一个节点的连接。

当我在 Ubuntu 机器和两台 windows 机器中的任何一台之间形成集群时,ubuntu 机器没有连接到另一个节点(它的控制台日志中没有出现任何内容)并且 windows 机器不断抛出 Failed to create netty connection: java.lang. net.SocketTimeOutException。

我使用以下命令禁用了 ubuntu 机器中的防火墙

sudo ufw disable

然后重新启动机器。

导致集群无法在 Ubuntu 机器和其他 Windows 机器之间工作的问题是什么?

4

1 回答 1

0

JBoss AS7 使用 JGroups 进行底层组通信,以发现集群成员并从集群传出。

如果您正在使用配置文件 full-ha 运行服务器,那么消息传递系统也会形成一个集群。HornetQ 是 JBoss AS7 中的默认消息提供程序。但是 HornetQ 不使用 Jgroups 来发现服务器。它是完全独立的。HornetQ 使用 Netty 并在默认配置中使用 UDP 多播来广播服务器连接设置。

因为您使用的是 JGroups TCPPing,所以我假设服务器可能不在同一个 UDP 多播组中。

于 2012-11-14T19:57:38.093 回答