Mod_cluster 管理器无法访问节点
Mod_cluster Manager cant access nodes
我已经安装了 WildFly10 并在域模式下使用两台端口分别为 100 和 200 的服务器启动它。
我已经配置了 Apache HTTPD 2.4 和 Mod_cluster Manager 1.3.1
使用 VirtualHost 侦听端口 8080 和 ServerName 测试集群。
当我访问 test-cluster:8080/mod_cluster_manager 时,一切正常。
当我在Mod_clusterManager中修改监听端口为80,重启Apache访问test-cluster/mod_cluster_manager可以看到页面,但是没有JBoss/WildFly个服务器节点注册...
可能是什么问题?
我找到了解决方案。您需要修改 iptables 以打开 JBoss/WildFly 正在向集群广播消息的广播地址。
UDP Multicat 广告和接口
假设您的 Apache HTTP 服务器侦听您的所有接口 (0.0.0.0),这意味着 EnableMCPMReceive
VirtualHost,它必须选择一个地址通过 UDP 多播发送出去。此地址是 Wildfly 将尝试联系的地址。
如果 Wildfly 找不到 Apache HTTP 服务器,我建议您在 Apache HTTP 服务器配置中添加两个更具体的设置来调试问题:
ServerAdvertise On http://pick_ip_address_wildfly_can_access:6666
上述指令(用于代替 ServerAdvertise On
)确保通过 UDP 多播发送确定性的预期 address:port。
如果您使用 Advertize.java 实用程序在您的 Wildfly 机器上进行测试,
你应该看到这样的东西:
karm@wildfly-box:~/Projects/MOD_CLUSTER$ java Advertize 224.0.1.105 23364 10.10.10.11
Linux like OS
ready waiting...
received: HTTP/1.0 200 OK
Date: Tue, 31 May 2016 07:51:00 GMT
Sequence: 11
Digest: f23cf884bce70445742540dd84e1a060
Server: 2eceb85a-2704-11e6-9b43-e7ff3db3d039
X-Manager-Address: pick_ip_address_wildfly_can_access:6666
X-Manager-Url: /2eceb85a-2704-11e6-9b43-e7ff3db3d039
X-Manager-Protocol: http
X-Manager-Host: localhost.localdomain
- 224.0.1.105 - 第一个参数是 Apache HTTP 服务器将数据报发送到的 UDP 多播地址
- 23364 - 第二个参数是用于它的端口
- 10.10.10.11 - 最后一个参数是从同一网络接收数据的接口的 IP 地址,Apache HTTP 服务器通告到 - 可以在 Apache HTTP 服务器端使用 AdvertiseBindAddress 指令设置,见下文。这意味着 "pick_ip_address_wildfly_can_access" 必须是可以与 10.10.10.11 通信的东西;例如10.10.10.13,如果它们都在,例如各自服务器上的接口 em1 或 eth0。
AdvertiseBindAddress 10.10.10.13:23364
正如您在上述指令中所见,我们明确选择了绑定到 Apache HTTP 服务器上的 10.10.10.13 地址的接口,即我们的 "ip_address_wildfly_can_access"。
端口不是任意的,它与下面提到的指令中使用的相同。
Wildfly 方面的等效项是 interface="public" 属性——这是套接字绑定的默认值。如果您希望设置 modcluster 套接字绑定以侦听不同接口上的 UDP 多播 - 更改它。
下面提到的 AdvertiseGroup 指令是默认情况下的辅助指令 - 您不需要设置它,因为您使用默认值。它必须与您的 modcluster socketbinding 中的内容相匹配:
AdvertiseGroup 224.0.1.105:23364
<socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>
我希望现在很清楚,路由器上的任何 NAT 或端口映射,或者 iptables 或其他网络恶作剧都可能很容易影响您的配置。
- Apache HTTP 服务器必须在 Wildfly 侦听的接口上做广告,
- Apache HTTP 服务器必须通告 Wildfly 可以访问的地址并且
- Wildfly 必须报告它的地址和 Apache HTTP 服务器可以访问的端口
我已经安装了 WildFly10 并在域模式下使用两台端口分别为 100 和 200 的服务器启动它。
我已经配置了 Apache HTTPD 2.4 和 Mod_cluster Manager 1.3.1 使用 VirtualHost 侦听端口 8080 和 ServerName 测试集群。
当我访问 test-cluster:8080/mod_cluster_manager 时,一切正常。 当我在Mod_clusterManager中修改监听端口为80,重启Apache访问test-cluster/mod_cluster_manager可以看到页面,但是没有JBoss/WildFly个服务器节点注册...
可能是什么问题?
我找到了解决方案。您需要修改 iptables 以打开 JBoss/WildFly 正在向集群广播消息的广播地址。
UDP Multicat 广告和接口
假设您的 Apache HTTP 服务器侦听您的所有接口 (0.0.0.0),这意味着 EnableMCPMReceive
VirtualHost,它必须选择一个地址通过 UDP 多播发送出去。此地址是 Wildfly 将尝试联系的地址。
如果 Wildfly 找不到 Apache HTTP 服务器,我建议您在 Apache HTTP 服务器配置中添加两个更具体的设置来调试问题:
ServerAdvertise On http://pick_ip_address_wildfly_can_access:6666
上述指令(用于代替 ServerAdvertise On
)确保通过 UDP 多播发送确定性的预期 address:port。
如果您使用 Advertize.java 实用程序在您的 Wildfly 机器上进行测试,
你应该看到这样的东西:
karm@wildfly-box:~/Projects/MOD_CLUSTER$ java Advertize 224.0.1.105 23364 10.10.10.11
Linux like OS
ready waiting...
received: HTTP/1.0 200 OK
Date: Tue, 31 May 2016 07:51:00 GMT
Sequence: 11
Digest: f23cf884bce70445742540dd84e1a060
Server: 2eceb85a-2704-11e6-9b43-e7ff3db3d039
X-Manager-Address: pick_ip_address_wildfly_can_access:6666
X-Manager-Url: /2eceb85a-2704-11e6-9b43-e7ff3db3d039
X-Manager-Protocol: http
X-Manager-Host: localhost.localdomain
- 224.0.1.105 - 第一个参数是 Apache HTTP 服务器将数据报发送到的 UDP 多播地址
- 23364 - 第二个参数是用于它的端口
- 10.10.10.11 - 最后一个参数是从同一网络接收数据的接口的 IP 地址,Apache HTTP 服务器通告到 - 可以在 Apache HTTP 服务器端使用 AdvertiseBindAddress 指令设置,见下文。这意味着 "pick_ip_address_wildfly_can_access" 必须是可以与 10.10.10.11 通信的东西;例如10.10.10.13,如果它们都在,例如各自服务器上的接口 em1 或 eth0。
AdvertiseBindAddress 10.10.10.13:23364
正如您在上述指令中所见,我们明确选择了绑定到 Apache HTTP 服务器上的 10.10.10.13 地址的接口,即我们的 "ip_address_wildfly_can_access"。 端口不是任意的,它与下面提到的指令中使用的相同。
Wildfly 方面的等效项是 interface="public" 属性——这是套接字绑定的默认值。如果您希望设置 modcluster 套接字绑定以侦听不同接口上的 UDP 多播 - 更改它。
下面提到的 AdvertiseGroup 指令是默认情况下的辅助指令 - 您不需要设置它,因为您使用默认值。它必须与您的 modcluster socketbinding 中的内容相匹配:
AdvertiseGroup 224.0.1.105:23364
<socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>
我希望现在很清楚,路由器上的任何 NAT 或端口映射,或者 iptables 或其他网络恶作剧都可能很容易影响您的配置。
- Apache HTTP 服务器必须在 Wildfly 侦听的接口上做广告,
- Apache HTTP 服务器必须通告 Wildfly 可以访问的地址并且
- Wildfly 必须报告它的地址和 Apache HTTP 服务器可以访问的端口