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

use*_*860 4 ubuntu cluster-computing cassandra

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

h22*_*h22 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
    
    Run Code Online (Sandbox Code Playgroud)


Rus*_*ssS 4

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

https://github.com/pcmanus/ccm