2014-03-19 89 views
4

我现在有一个Cassandra服务在我的Ubuntu服务器上运行,只有一个节点。我想将它变成一个带有3个节点的环形群集,以感受多节点群集都在同一台服务器上。按照这个链接https://www.youtube.com/watch?v=oHMJrhMtv3c中的步骤,我尝试创建一个新的群集而不停止已经运行的cassandra服务。但它已经引发地址由:java.net.BindException:地址已被使用。所以我试图改变种子ip已经运行cassandra ip地址,并试图在前台运行第二个cassandra服务。这次它抛出java.lang.RuntimeException:无法创建节点套接字到IP端口。请让我知道如何将节点添加到同一台服务器上已运行的单节点群集。在单个Ubuntu服务器上设置cassandra多节点集群

回答

4

在单台机器上设置多节点群集的最简单方法是使用CCM。目前,您遇到的问题是您的节点试图绑定同一组端口。 CCM将解决此为您和自动递增端口等...

https://github.com/pcmanus/ccm

5

这是很容易的,只要他们拥有所有的解析为不同的IP地址,运行相同的Ubuntu的机器上的多个实例卡桑德拉本地主机。整个127.0.0.0/8地址块被保留用于回送目的,所以任何发送到地址(127.0.0.1到127.255.255.254)的数据包都将循环回去。

  • 使用ping来检查地址是否正确解析。
  • 将两个(或更多)Cassandra实例放入不同的文件夹中。

编辑cassandra.yaml和替换

  • 各种文件位置独特卡桑德拉的给定实例的位置。
  • localhost到我们给该实例的IP地址(如127.0.0.2)。
  • 使用SimpleSeedProvider,并把所有其他卡桑德拉实例的地址种子列表,以集群(如- seeds: "127.0.0.2","127.0.0.3"
  • 不要改变任何端口号,而不是有益的,不是必需的。

编辑cassandra-env.sh,发现其中JMX_PORT属性设置,并给它一个卡桑德拉的每个实例不同的值(不同的端口),否则情况下不能同时运行,因为这个端口上的冲突。

  • 启动使用./cassandra启动脚本(您可以稍后编写简单的bash脚本)逐个实例。
  • ./nodetool状态验证您的拓扑。 !对于这两个节点,例如,输出必须看起来像

    Datacenter: datacenter1 
    ======================= 
    Status=Up/Down 
    |/ State=Normal/Leaving/Joining/Moving 
    -- Address Load  Tokens Owns (effective) Host ID        Rack 
    UN 127.0.0.1 61.97 KB 256  100.0%   6c04e202-8f24-4f17-b430-0154c1512316 rack1 
    UN 127.0.0.2 105.68 KB 256  100.0%   ca3073ee-451c-4cef-97ee-d312784648bb rack1 
    
+0

完美的答案..提一个琐碎的事情是,种子应该写成 - 种子:“127.0.0.2,127.0.0.3 “ –

相关问题