【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命令。
4184 0
|
缓存 运维 监控
Cassandra 性能压测及调优实战
掌握Cassandra分布式数据库性能压测及性能调优 作者:孤池
4275 1
Cassandra 性能压测及调优实战
|
存储 NoSQL Java
Spring Boot与Cassandra数据库的集成应用
Spring Boot与Cassandra数据库的集成应用
|
存储 分布式计算 NoSQL
HBase和Cassandra的分布式架构深度对比
HBase和Cassandra几乎都是一个时候出现的,都是在2010年成为Apache的顶级项目,不过如果我们细品其内部机制,我们会发现其实两者是完全不同的架构风格。HBASE起源于Google BigTable,几乎遵从了BigTable论文的大多数架构设计。Cassandra则是采纳了BigTable的数据模型,同时吸收了Amazon Dynamo的分布式设计。因此从存储结构模型的微观上看,HBASE和Cassandra在单点存储数据的机理是类似的,但是从分布式架构的宏观上看,两者则大相径庭。
HBase和Cassandra的分布式架构深度对比
|
SQL 存储 JSON
Cassandra CQL语法 以及功能介绍
内容摘要: 一、Cassandra简单介绍 ·Cassandra的历史和基本架构 二、Cassandra CQL介绍 ·如何使用CQL语言操作Cassandra
4629 0
Cassandra CQL语法 以及功能介绍
|
存储 消息中间件 缓存
【Cassandra从入门到放弃系列 一】概述及基本架构
【Cassandra从入门到放弃系列 一】概述及基本架构
4127 1
|
存储 NoSQL
Cassandra集群删除宕机节点
Cassandra集群删除宕机节点
Cassandra集群删除宕机节点
|
缓存 弹性计算 监控
Cassandra性能压测及调优实战|学习笔记
快速学习Cassandra性能压测及调优实战
413 0
Cassandra性能压测及调优实战|学习笔记
|
运维 NoSQL
Cassandra 数据一致性修复 repair 来龙去脉
文章分3块:1.为什么需要repair?;2.repair大概流程?;3.repair可能的问题。
3749 0
Cassandra 数据一致性修复 repair 来龙去脉
|
存储 运维 监控
【译】深入浅出 Cassandra 的删除和墓碑
深入浅出介绍 cassandra 作为一款分布式数据库如何支持删除操作
5385 0
【译】深入浅出 Cassandra 的删除和墓碑