Check a minimum number of hosts are online

We connect to the cluster client in `State.ClusterClient`, ideally we'd reuse this connection there. Also, if this connection is ephemeral, it needs to be closed after we're done with it.