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/AbstractLocalClusterFactory.java
implements
        LocalClusterFactory<S, H> {
    private static final Logger LOGGER = LogManager.getLogger(AbstractLocalClusterFactory.class);
    private static final Duration NODE_UP_TIMEOUT = Duration.ofMinutes(2);
    private static final Map<Pair<Version, DistributionType>, DistributionDescriptor> TEST_DISTRIBUTIONS = new ConcurrentHashMap<>();
    private static final String TESTS_CLUSTER_MODULES_PATH_SYSPROP = "tests.cluster.modules.path";
    private static final String TESTS_CLUSTER_PLUGINS_PATH_SYSPROP = "tests.cluster.plugins.path";
    private static final String TESTS_CLUSTER_FIPS_JAR_PATH_SYSPROP = "tests.cluster.fips.jars.path";
    private static final String TESTS_CLUSTER_DEBUG_ENABLED_SYSPROP = "tests.cluster.debug.enabled";
    private static final String ENABLE_DEBUG_JVM_ARGS = "-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=";
    private static final int DEFAULT_DEBUG_PORT = 5007;
    private final DistributionResolver distributionResolver;
    public AbstractLocalClusterFactory(DistributionResolver distributionResolver) {
        this.distributionResolver = distributionResolver;
    }
    @Override
    public H create(S spec) {
        Path baseWorkingDir;
        try {
            baseWorkingDir = Files.createTempDirectory(spec.getName());
        } catch (IOException e) {
            throw new UncheckedIOException(e);
        }
        return createHandle(baseWorkingDir, spec);
    }
    protected abstract H createHandle(Path baseWorkingDir, S spec);
    public static class Node {