在单个ubuntu服务器上设置cassandra多节点集群

时间:2014-03-19 17:43:52

标签: ubuntu cassandra cluster-computing

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

4 个答案:

答案 0 :(得分:5)

在同一台Ubuntu计算机上运行多个Cassandra实例非常容易,只要它们具有不同的IP地址,这些IP地址都可以解析为本地主机。整个127.0.0.0/8地址块保留用于环回,因此发送到地址(127.0.0.1到127.255.255.254)的任何数据包都将被环回。

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

修改cassandra.yaml并替换

  • 各种文件位置,指向给定Cassandra实例的唯一位置。
  • localhost到我们为该实例提供的IP地址(如127.0.0.2)。
  • 使用SimpleSeedProvider并将所有其他Cassandra实例的地址放入种子列表以构建群集(如- seeds: "127.0.0.2","127.0.0.3"
  • 请勿更改任何端口号,无需帮助,也不需要。

编辑cassandra-env.sh,找到JMX_PORT属性的设置位置,并为每个Cassandra实例赋予不同的值(不同的端口)。否则,由于此端口上的冲突,实例无法一起运行。

  • 使用./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
    

答案 1 :(得分:4)

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

https://github.com/pcmanus/ccm

答案 2 :(得分:0)

试过这个,

Cassandra: 3.11.2
RHEL: 6.5

cassandra.yaml 中,为不同的实例保留以下不同的值:

  
      
  1. native_transport_port
  2.   
  3. 数据目录
  4.   
  5. 提交日志目录
  6.   
  7. Saved_Cache目录
  8.   
  9. listen_address
  10.   
  11. broadcast_rpc_address(rpc_address设为0.0.0.0)
  12.   

在listen_address和broadcast_rpc_address中使用环回地址。 在所有实例中保持存储端口相同(即7000)。

  

在cassandra-env.sh中,保持JMX_PORT不同   实例

答案 3 :(得分:0)

阐述h22提供的答案(我暂不予评论) 您将需要使用默认的jmx端口在localhost上运行node0。 它只是需要更改cassandra.yaml的其他节点 此外,如果您使用的是cassandra 3或更高版本(在Windows上?),则需要使用-a参数启动第二个cassandra节点以跳过端口检查。

相关问题