集群中有两个节点时,Jboss EAP 7.1.6故障转移不起作用

时间:2019-05-27 06:38:03

标签: java wildfly failover jboss-eap-7

当它只有两个节点时,我正在研究与故障转移测试有关的问题。这是场景。

测试步骤:

  1. 我们有两个节点集群,我们将它们分别作为node1和node2。
  2. 最初,node1处于运行状态,但node2处于关闭状态,并且客户端已连接到node1。
  3. 节点2完全启动后,我们将停止节点1。
  4. 在这种情况下,客户端被冻结,并从系统中注销用户。

调查步骤:

  1. 启动node2时,在完全启动(部分启动)之前,将节点发现标记为node2为失败的目标,并将其放入缓存对象中。
  2. 即使node2完全启动,它也不会从缓存中删除。
  3. node1停止时,它也标记为失败的目标。在这种情况下,两个节点都标记为从发现中失败。
  4. 即使第二遍发生,此失败的目标高速缓存也无法清除。但是当我如下清除缓存时。发现成功。
        if (discoveryConnections && ! ok) {
            if (failedDestinations != null)
            {
                failedDestinations.clear();
            }
            Logs.INVOCATION.tracef("EJB discovery provider: all connections marked failed, retrying ...");
            for (EJBClientConnection connection : configuredConnections) {
                if (! connection.isForDiscovery()) {
                    continue;
                }
                URI destination = connection.getDestination();
                Logs.INVOCATION.tracef("EJB discovery provider: attempting to connect to connection %s", destination);
                discoveryAttempt.connectAndDiscover(destination, null);
            }
        }

但是要进行适当的故障转移,当节点启动并运行时,应该从JBoss failddestination缓存对象中清除它。

这使两个节点均处于故障和缓存状态,服务器启动时不会清除

0 个答案:

没有答案