【问题标题】:setting up cassandra multi node cluster on a single ubuntu server在单个 ubuntu 服务器上设置 cassandra 多节点集群
【发布时间】:2014-04-26 04:15:01
【问题描述】:

我现在有一个 Cassandra 服务在我的 Ubuntu 服务器上运行,只有一个节点。我想把它做成一个有 3 个节点的环形集群,以感受多节点集群都在同一台服务器上。按照此链接https://www.youtube.com/watch?v=oHMJrhMtv3c 中的步骤,我尝试在不停止已经运行的 cassandra 服务的情况下创建一个新集群。但是它却抛出了address Caused by: java.net.BindException: Address already in use。所以我尝试将种子 ip 更改为已经运行的 cassandra ip 地址,并尝试在前台运行第二个 cassandra 服务。这次它抛出了 java.lang.RuntimeException: Unable to create thrift socket to ip port。请告诉我如何将节点添加到同一服务器上已经运行的单节点集群。

【问题讨论】:

    标签: ubuntu cassandra cluster-computing


    【解决方案1】:

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

    https://github.com/pcmanus/ccm

    【讨论】:

      【解决方案2】:

      在同一台 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)。
      • 使用SimpleSeedProvider 并将所有其他Cassandra 实例的地址放入种子列表以创建集群(如- seeds: "127.0.0.2","127.0.0.3"
      • 不要更改任何端口号,没有帮助也不是必需的。

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

      • 使用./cassandra启动脚本一一启动实例(您可以稍后为此编写简单的bash脚本)。
      • 使用./nodetool status 验证您的拓扑。例如,对于两个节点,输出必须如下所示

        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
        

      【讨论】:

      • 完美答案!...要提的一件小事是种子应该写成 - 种子:“127.0.0.2,127.0.0.3”
      • 如果 CASSANDRA_HOME 被定义为环境变量,这将不起作用,因为脚本/批处理文件默认使用相同的文件夹。所以取消定义 CASSANDRA_HOME,并从相应文件夹启动实例,这种情况下,该特定实例的 CASSANDRA_HOME 将分别设置为当前文件夹
      【解决方案3】:

      试穿了,

      Cassandra: 3.11.2
      RHEL: 6.5
      

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

      1. native_transport_port
      2. 数据目录
      3. 提交日志目录
      4. Saved_Cache 目录
      5. listen_address
      6. broadcast_rpc_address(rpc_address设置为0.0.0.0)

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          ccm 在几秒钟内自动完成整个事情......

          $ccm create -v 3.11.11 -n 3 my_cluster --vnodes
          

          这会为 3 个实例创建 3 个不同的文件夹 + 1 个用于公共二进制文件的文件夹。

          $ccm status
          
          Cluster: 'my_cluster'
          ---------------------
          node1: DOWN (Not initialized)
          node3: DOWN (Not initialized)
          node2: DOWN (Not initialized)
          
          
          $ccm start
          $ccm status
          Cluster: 'my_cluster'
          ---------------------
          node1: UP
          node3: UP
          node2: UP
          
          
          $ccm node1 status
          Datacenter: datacenter1
          ========================
          Status=Up/Down
          |/ State=Normal/Leaving/Joining/Moving
          --  Address    Load       Tokens       Owns (effective)  Host ID                               Rack
          UN  127.0.0.1  142.01 KiB  256          63.6%             8e48c1fd-656d-4e9c-b3b0-ae92f0d639b3  rack1
          UN  127.0.0.2  172.07 KiB  256          70.9%             fcd79431-1f64-4021-9fe4-0ec6630b234b  rack1
          UN  127.0.0.3  172.3 KiB  256          65.5%             3938cef1-9f62-4143-b15d-c7f32c83d76b  rack1
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-12-18
            • 2012-05-02
            • 2012-01-23
            • 1970-01-01
            • 2018-01-18
            • 2013-04-24
            • 2020-04-12
            相关资源
            最近更新 更多