是否可以为Cassandra集群中的节点使用不同的端口?

时间:2013-06-06 19:39:11

标签: cassandra

我们以编程方式创建Cassandra节点(自动生成yaml并使用CassandraDaemon)。理想情况下,由于配置需要,我们可以在不同的主机上使用不同的端口。这是可能的(通过种子规范或自定义类的实现)?种子列表似乎只能获取IP地址而不是端口。

2 个答案:

答案 0 :(得分:3)

在查看Cassandra网络代码中的相关source后,显然不支持此功能。在newSocket()方法中,远程节点的端口是从静态DatabaseDescriptor.getSSLStoragePort()获得的(下面的摘录)。这不会为每个主机或任何钩子提供不同的值:

public Socket newSocket() throws IOException
{
    // zero means 'bind on any available port.'
    if (isEncryptedChannel())
    {
        return SSLFactory.getSocket(DatabaseDescriptor.getEncryptionOptions(), endPoint(), DatabaseDescriptor.getSSLStoragePort(), FBUtilities.getLocalAddress(), 0);
    }
    else {
        return new Socket(endPoint(), DatabaseDescriptor.getStoragePort(), FBUtilities.getLocalAddress(), 0);
    }
}

答案 1 :(得分:2)

看看https://github.com/pcmanus/ccm,他们在同一节点上使用多个cassandra实例。你可以看到他们是如何做到的。