We can pass `-Dtests.cluster.debug.enabled=true` to REST tests to enable debugging for the test cluster, i.e. it will attempt to connect to a debugger. The port number begins with 5007 and plus 1 for each additional node in the cluster. This works fine with a single cluster. But when a test have 2 clusters (for CCS tests, e.g. [RemoteClusterSecurityRestIT](https://github.com/elastic/elasticsearch/blob/aedf98435e25d3b931b123f5039ab50a89698b68/x-pack/plugin/security/qa/multi-cluster/src/javaRestTest/java/org/elasticsearch/xpack/remotecluster/RemoteClusterSecurityRestIT.java#L36)), the second cluster will again start with port 5007 as well and conflict with the 1st cluster and fail. 

It would be great to have the 2nd cluster to use a different set of ports. It would be nice to have the port number range to be predicatable for each cluster. It may also be useful if we can enable debugging separately for each cluster.
test/test-clusters/src/main/java/org/elasticsearch/test/cluster/local/DefaultLocalClusterHandle.java
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinWorkerThread;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class DefaultLocalClusterHandle implements LocalClusterHandle {
    private static final Logger LOGGER = LogManager.getLogger(DefaultLocalClusterHandle.class);
    private static final Duration CLUSTER_UP_TIMEOUT = Duration.ofSeconds(30);
    public final ForkJoinPool executor = new ForkJoinPool(
        Math.max(Runtime.getRuntime().availableProcessors(), 4),
        new ForkJoinPool.ForkJoinWorkerThreadFactory() {
            private final AtomicLong counter = new AtomicLong(0);
            @Override
            public ForkJoinWorkerThread newThread(ForkJoinPool pool) {
                ForkJoinWorkerThread thread = ForkJoinPool.defaultForkJoinWorkerThreadFactory.newThread(pool);
                thread.setName(name + "-node-executor-" + counter.getAndIncrement());
                return thread;
            }
        },
        null,
        false
    );
    private final AtomicBoolean started = new AtomicBoolean(false);
    private final String name;
    private final List<Node> nodes;
    public DefaultLocalClusterHandle(String name, List<Node> nodes) {