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

在单个ubuntu服务器上设置cassandra多节点集群,ubuntu,cassandra,cluster-computing,Ubuntu,Cassandra,Cluster Computing,我现在有一个Cassandra服务在我的Ubuntu服务器上运行,只有一个节点。我想把它做成一个有3个节点的环形集群,让大家感觉多节点集群都在同一台服务器上。通过遵循此链接中的步骤,我尝试在不停止已经运行的cassandra服务的情况下创建一个新集群。但它抛出了由以下原因引起的地址:java.net.BindException:地址已在使用中。因此,我尝试将种子ip更改为已经运行的cassandra ip地址,并尝试在前台运行第二个cassandra服务。这次它抛出了java.lang.Runt

我现在有一个Cassandra服务在我的Ubuntu服务器上运行,只有一个节点。我想把它做成一个有3个节点的环形集群,让大家感觉多节点集群都在同一台服务器上。通过遵循此链接中的步骤,我尝试在不停止已经运行的cassandra服务的情况下创建一个新集群。但它抛出了由以下原因引起的地址:java.net.BindException:地址已在使用中。因此,我尝试将种子ip更改为已经运行的cassandra ip地址,并尝试在前台运行第二个cassandra服务。这次它抛出了java.lang.RuntimeException:无法创建到ip端口的thrift套接字。请让我知道如何将节点添加到同一服务器上已运行的单节点群集。

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


在同一台Ubuntu机器上运行多个Cassandra实例非常容易,只要它们有不同的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)
  • 使用
    SimpledProvider
    并将所有其他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
    
    • 试过这个

      Cassandra: 3.11.2
      RHEL: 6.5
      
      cassandra.yaml中,针对不同的实例保持以下值不同:

    • 本地\u传输\u端口
    • 数据目录
    • 提交日志目录
    • 已保存的缓存目录
    • 监听地址
    • 广播_rpc_地址(rpc_地址设置为0.0.0.0)
    • 在侦听地址和广播地址中使用环回地址。 在所有实例(即7000)中保持存储端口相同

      在cassandra-env.sh中,为不同的用户保持JMX_端口不同 实例


      详细说明h22提供的答案(我还不能对此发表评论) 您将需要node0以默认jmx端口在localhost上运行。 只有附加节点需要更改cassandra.yaml
      此外,如果您使用的是cassandra 3或更高版本(在windows上?),则需要使用-a参数启动第二个cassandra节点以跳过端口检查。

      完美答案!。需要提及的一点是,种子应写成-seeds:“127.0.0.2127.0.0.3”