我认为这种场景值得探索,尤其是在独立模式下,集群的每个服务器都可以有单独的配置,因此您可能需要在服务器级别进行一些维护。话虽如此,您可以使用多播地址从集群中关闭服务器或服务器组,然后在完成维护后,让它返回集群。
1. 首先查找一个未在您的网络中使用的多播地址。
2. 接下来,创建一个新的 Socket Binding 组,它有一个自定义的 jgroups-udp IP 地址(如果您使用的是 TCP 集群,则为 jgroups-tcp):
<socket-binding-group name="ha-sockets.maintenance" default-interface="public">
<socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
<socket-binding name="http" port="${jboss.http.port:8080}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>
<socket-binding name="jgroups-mping" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
<socket-binding name="jgroups-tcp" port="7600"/>
<socket-binding name="jgroups-tcp-fd" port="57600"/>
<socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.11}" multicast-port="45688"/>
<socket-binding name="jgroups-udp-fd" port="54200"/>
<socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
现在,当您需要从集群中临时删除服务器组时,只需从您的 CLI 发出(您也可以使用管理控制台):
/server-group=other-server-group/:write-attribute(name=socket-binding-group,value=ha-sockets.maintenance)
您还需要在上述操作后重新加载主机:
reload --host=master
现在,另一个服务器组将离开集群,以便您进行维护。
稍后,您可以通过设置标准 ha-sockets 绑定让您的服务器组加入集群:
/server-group=other-server-group/:write-attribute(name=socket-binding-group,value=ha-sockets)
作为一个侧节点,考虑到您甚至可以在服务器级别设置套接字绑定:
/host=master/server-config=server-one/:write-attribute(name=socket-binding-group,value=ha-sockets.maintenance)
我不建议这样做,因为您将在属于服务器组的服务器之间进行不同步的配置。希望能帮助到你。更多信息请查看tutorial