【Cassandra】Cassandra集群管理节点

简介: The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data.

添加节点

Cassandra 的添加节点应该是最简单了,可以理解是 无脑添加。啥意思呢,这么来说,Cassandra 的添加节点,我们需要修改的配置有:

  • 集群名,保持一致
  • Token 保持一致
  • seeds 保持一致

然后就可以了

这里需要 纠正一个问题 ,我们建议的 Token 保持一致的前提的是, 每台机器的性能要一样,比如说同样的CPU 核心数,同样的 内存大小。我们用最简单的方式去理解这个 Token , 就是权重比。比如说:三台 cassandra 节点的 token , 都是 500 ,token 比也就是 1:1:1 , 那么每个 cassandra 节点处理的数据量是一样的,如果说 第三个节点的 cassandra 的 token 的值是 250 , 那这个比例就是 2:2:1 , 那么三个节点的数据的处理量是不同的。这里需要注意一下。至于这个 Token 的值,则么去影响到 cassandra 的负载均衡,老夫最近也在研究。后续应该会有更新。

删除节点

Cassandra 删除节点,其实还是比较麻烦的。这里,笔者经过测试,总结了下:

修复keyspace

nodetool repair <keyspace_name>

检查当前的节点状态
执行 nodetool status

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address       Load       Tokens       Owns (effective)  Host ID                               Rack
UN  192.168.0.24  378.83 KiB  500          66.9%             7f53d662-e883-42c5-9de5-b626394bda08  rack1
UN  192.168.0.25  308.08 KiB  500          65.3%             26e0de75-583d-4b82-98b8-cce223f300e9  rack1
DN  192.168.0.23  957.67 KiB  500          67.8%             a9d4b392-e47c-4985-a47c-eef535b9ece4  rack1

可以看到,现在有一个节点处于 DN 状态,这个节点也就是我目前要移除的节点,如果你要移除的节点,处于 UN 状态,需要执行: nodetool decommission , 在需要移除的节点上

移除节点
我们在 活动的节点上执行:

nodetool removenode a9d4b392-e47c-4985-a47c-eef535b9ece4

随后,我们在 查下 状态:

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address       Load       Tokens       Owns (effective)  Host ID                               Rack
UN  192.168.0.24  450.04 KiB  500          100.0%            7f53d662-e883-42c5-9de5-b626394bda08  rack1
UN  192.168.0.25  379.33 KiB  500          100.0%            26e0de75-583d-4b82-98b8-cce223f300e9  rack1

如果现在我们的节点是 seed 节点, 那我们需要做的就是,在配置中移除当前的这个节点。

seed_provider:
    # Addresses of hosts that are deemed contact points.
    # Cassandra nodes use this list of hosts to find each other and learn
    # the topology of the ring.  You must change this if you are running
    # multiple nodes!
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          # seeds is actually a comma-delimited list of addresses.
          # Ex: "<ip1>,<ip2>,<ip3>"
          - seeds:  "192.168.0.23,192.168.0.24"

这里我们删除 我们的 192.168.0.23 这个节点 IP,随后在进行重启。重启之后在 查看状态:

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address       Load       Tokens       Owns (effective)  Host ID                               Rack
UN  192.168.0.24  584.07 KiB  500          100.0%            7f53d662-e883-42c5-9de5-b626394bda08  rack1
UN  192.168.0.25  555.77 KiB  500          100.0%            26e0de75-583d-4b82-98b8-cce223f300e9  rack1

这里也要纠正一下,笔者上面的方式,其实是在一个空的 cassandra 集群上做的,所以删除会很快,但是在实际中,不是这样的。

在实际中,我们删除一个节点上的数据,集群会做一个数据上的迁移,我个人的理解就是缺少补啥,迁移过后,其他的节点会告知集群,我这个节点迁移好了,集群要等所有的节点都返回了 OK ,然后在进行删除(个人理解。实际在删除的时候,的确在等一个返回)。所以呢,笔者删几个节点,直接就傻了,因为我着实是不知道要等多久。

可以通过 nodetool removenode status 来查看删除节点的状态,如果等待时间太长了,你又不想等,而且允许数据的丢失的时候,我们可以强制性的删除。nodetool removenode force 就可以了。我就是执行的这个,分分钟给删了。仅供参考。

相关文章
|
NoSQL 前端开发
cassandra nodetool常用命令介绍
简介 nodetool是cassandra自带的外围工具,通过JMX可以动态修改当前进程内存数据,注意cassandra是无主对等架构,默认的命令是操作本机当前进程,例如repair,如果需要做全集群修复,需要在每台机器上执行对应的nodetool命令。
4225 0
|
缓存 运维 监控
Cassandra 性能压测及调优实战
掌握Cassandra分布式数据库性能压测及性能调优 作者:孤池
4389 1
Cassandra 性能压测及调优实战
|
SQL NoSQL 数据库
Cassandra数据库与Cql实战笔记
Cassandra数据库与Cql实战笔记
204 1
Cassandra数据库与Cql实战笔记
|
存储 分布式计算 NoSQL
HBase和Cassandra的分布式架构深度对比
HBase和Cassandra几乎都是一个时候出现的,都是在2010年成为Apache的顶级项目,不过如果我们细品其内部机制,我们会发现其实两者是完全不同的架构风格。HBASE起源于Google BigTable,几乎遵从了BigTable论文的大多数架构设计。Cassandra则是采纳了BigTable的数据模型,同时吸收了Amazon Dynamo的分布式设计。因此从存储结构模型的微观上看,HBASE和Cassandra在单点存储数据的机理是类似的,但是从分布式架构的宏观上看,两者则大相径庭。
HBase和Cassandra的分布式架构深度对比
|
存储 缓存 负载均衡
图解一致性哈希算法,看这一篇就够了!
近段时间一直在总结分布式系统架构常见的算法。前面我们介绍过布隆过滤器算法。接下来介绍一个非常重要、也非常实用的算法:一致性哈希算法。通过介绍一致性哈希算法的原理并给出了一种实现和实际运用的案例,带大家真正理解一致性哈希算法。
26219 64
图解一致性哈希算法,看这一篇就够了!
|
NoSQL Oracle 关系型数据库
cassandra使用场景判断:何时使用及何时不用
介绍 我有一个具有以下功能的数据库服务器: 高可用设计。 可以全球分布。 允许应用程序随时随地写入任何节点。 只需向群集添加更多节点即可进行线性扩展。 自动负载及数据均衡。 一种看起来很像SQL的查询语言。
9374 1
|
存储 消息中间件 缓存
【Cassandra从入门到放弃系列 一】概述及基本架构
【Cassandra从入门到放弃系列 一】概述及基本架构
4357 1
|
存储 NoSQL 关系型数据库
【Cassandra从入门到放弃系列 三】Cassandra的数据模型设计
【Cassandra从入门到放弃系列 三】Cassandra的数据模型设计
843 0
|
存储 自然语言处理 算法
Lucene底层关键字数据结构(跳跃表) | 学习笔记
快速学习Lucene底层关键字数据结构(跳跃表)。
Lucene底层关键字数据结构(跳跃表) | 学习笔记
|
存储 NoSQL
Cassandra集群删除宕机节点
Cassandra集群删除宕机节点
Cassandra集群删除宕机节点