- [x] I have searched the [issues](https://github.com/apache/incubator-dubbo/issues) of this repository and believe that this is not a duplicate.
- [x] I have checked the [FAQ](https://github.com/apache/incubator-dubbo/blob/master/FAQ.md) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: 2.7.0
* Operating System version: mac
* Java version: 1.8

### Steps to reproduce this issue

1.  `AbstractClient#initConnectStatusCheckCommand` set break point at `  !isConnected()`.
2. `AbstractClient#close()` set break point here.    
3.  start client first, start provider and then shutdown provider gracefully , let method `AbstractClient.close()` be executed. Then select step `1` and trigger the thread to execute `!isConnected`, here will always try to connect the offline machine.

Pls. provide [GitHub address] to reproduce this issue.

### Expected Result

What do you expected from the above steps？

When the server goes offline, the client will not reconnect the offline machine.

### Actual Result

What actually happens?

The client reconnects the offline machine every 2 seconds and causes a large number of arp packets(because ip is recycled and not available now).
private static final Logger logger = LoggerFactory.getLogger(RegistryDirectory.class);
    private static final Cluster cluster = ExtensionLoader.getExtensionLoader(Cluster.class).getAdaptiveExtension();
    private static final RouterFactory routerFactory = ExtensionLoader.getExtensionLoader(RouterFactory.class)
            .getAdaptiveExtension();
    private final String serviceKey; 
    private final Class<T> serviceType; 
    private final Map<String, String> queryMap; 
    private final URL directoryUrl; 
    private final boolean multiGroup;
    private Protocol protocol; 
    private Registry registry; 
    private volatile boolean forbidden = false;
    private volatile URL overrideDirectoryUrl; 
    /**
     * override rules
     * Priority: override>-D>consumer>provider
     * Rule one: for a certain provider <ip:port,timeout=100>
     * Rule two: for all providers <* ,timeout=5000>
     */
    private volatile List<Configurator> configurators; 
    
    private volatile Map<String, Invoker<T>> urlInvokerMap; 
    private volatile List<Invoker<T>> invokers;
    
    private volatile Set<URL> cachedInvokerUrls; 
    private static final ConsumerConfigurationListener consumerConfigurationListener = new ConsumerConfigurationListener();