Cassandra集群管理-下线正常节点

测试前题:

测试cassandra集群使用了vnodes,如何判断是否用了vnodes呢? 主要看你的cassandra.yml配置文件中。
默认(3.x)为空,系统自动生成。为空表示使用virtual nodes,默认开启,使用了vnodes,删除了节点之后它会自己均衡数据,需要人为干预。

测试数据生成

创建一个名为kevin_test的KeySpace

创建一个名为kevin_test的KeySpace,使用网络拓扑策略(SimpleStrategy),集群内3副本,另外开启写commit log。

[email protected]> create keyspace kevin_test with replication = {‘class‘:‘SimpleStrategy‘,‘replication_factor‘:3} and durable_writes = true;

创建表

CREATE TABLE t_users (
  user_id text PRIMARY KEY,
  first_name text,
  last_name text,
  emails set<text>
);

批量插入数据

BEGIN BATCH
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES(‘0‘, ‘kevin0‘, ‘kang‘, {‘[email protected]‘, ‘[email protected]‘});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES(‘1‘, ‘kevin1‘, ‘kang‘, {‘[email protected]‘, ‘[email protected]‘});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES(‘2‘, ‘kevin2‘, ‘kang‘, {‘[email protected]‘, ‘[email protected]‘});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES(‘3‘, ‘kevin3‘, ‘kang‘, {‘[email protected]‘, ‘[email protected]‘});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES(‘4‘, ‘kevin4‘, ‘kang‘, {‘[email protected]‘, ‘[email protected]‘});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES(‘5‘, ‘kevin5‘, ‘kang‘, {‘[email protected]‘, ‘[email protected]‘});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES(‘6‘, ‘kevin6‘, ‘kang‘, {‘[email protected]‘, ‘[email protected]‘});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES(‘7‘, ‘kevin7‘, ‘kang‘, {‘[email protected]‘, ‘[email protected]‘});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES(‘8‘, ‘kevin8‘, ‘kang‘, {‘[email protected]‘, ‘[email protected]‘});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES(‘9‘, ‘kevin9‘, ‘kang‘, {‘[email protected]‘, ‘[email protected]‘});
APPLY BATCH;

验证:

[email protected]:kevin_test> SELECT * from t_users; 

 user_id | emails                          | first_name | last_name
---------+---------------------------------+------------+-----------
       6 | {‘[email protected]‘, ‘[email protected]‘} |     kevin6 |      kang
       7 | {‘[email protected]‘, ‘[email protected]‘} |     kevin7 |      kang
       9 | {‘[email protected]‘, ‘[email protected]‘} |     kevin9 |      kang
       4 | {‘[email protected]‘, ‘[email protected]‘} |     kevin4 |      kang
       3 | {‘[email protected]‘, ‘[email protected]‘} |     kevin3 |      kang
       5 | {‘[email protected]‘, ‘[email protected]‘} |     kevin5 |      kang
       0 | {‘[email protected]‘, ‘[email protected]‘} |     kevin0 |      kang
       8 | {‘[email protected]‘, ‘[email protected]‘} |     kevin8 |      kang
       2 | {‘[email protected]‘, ‘[email protected]‘} |     kevin2 |      kang
       1 | {‘[email protected]‘, ‘[email protected]‘} |     kevin1 |      kang

查看t_users表属性:

[[email protected] ~]# nodetool  cfstats kevin_test.t_users
Total number of tables: 41
----------------
Keyspace : kevin_test
        Read Count: 0
        Read Latency: NaN ms
        Write Count: 6
        Write Latency: 0.116 ms
        Pending Flushes: 0
                Table: t_users
                Number of partitions (estimate): 5
                Memtable cell count: 6
                Memtable data size: 828

以上表信息,在后期测试期间可以确认数据是否丢失。

集群节点信息

[[email protected] ~]# nodetool  status
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens       Owns    Host ID                               Rack
UN  172.20.101.164  56.64 MiB  256          ?       dcbbad83-fe7c-4580-ade7-aa763b8d2c40  rack1
UN  172.20.101.165  55.44 MiB  256          ?       cefe8a3b-918f-463b-8c7d-faab0b9351f9  rack1
UN  172.20.101.166  73.96 MiB  256          ?       88e16e35-50dd-4ee3-aa1a-f10a8c61a3eb  rack1
UN  172.20.101.167  55.43 MiB  256          ?       8808aaf7-690c-4f0c-be9b-ce655c1464d4  rack1
UN  172.20.101.160  54.4 MiB   256          ?       57cc39fc-e47b-4c96-b9b0-b004f2b79242  rack1
UN  172.20.101.157  56.05 MiB  256          ?       091ff0dc-415b-48a7-b4ce-e70c84bbfafc  rack1

下线一个正常的集群节点

节点运行状态正常,用于压缩集群节点数量,本次下线:172.20.101.165。

在要删除的机器(172.20.101.165)上执行:
nodetool decommission 或者 nodetool removenode

可以通过 nodetool status查看集群状态,节点数据恢复完成后,下线节点从集群列表消失。

查看服务状态:

[[email protected] ~]# /etc/init.d/cassandra status

● cassandra.service - LSB: distributed storage system for structured data
   Loaded: loaded (/etc/rc.d/init.d/cassandra; bad; vendor preset: disabled)
   Active: active (running) since Tue 2019-07-09 11:29:25 CST; 2 days ago
Jul 09 11:29:25 kubm-03 cassandra[8495]: Starting Cassandra: OK
Jul 09 11:29:25 kubm-03 systemd[1]: Started LSB: distributed storage system for structured data.

测试重启服务,节点能否自动加入集群:

/etc/init.d/cassandra restart

INFO  [main] 2019-07-11 16:44:49,765 StorageService.java:639 - CQL supported versions: 3.4.4 (default: 3.4.4)
INFO  [main] 2019-07-11 16:44:49,765 StorageService.java:641 - Native protocol supported versions: 3/v3, 4/v4, 5/v5-beta (default: 4/v4)
INFO  [main] 2019-07-11 16:44:49,816 IndexSummaryManager.java:80 - Initializing index summary manager with a memory pool size of 198 MB and a resize interval of 60 minutes
This node was decommissioned and will not rejoin the ring unless cassandra.override_decommission=true has been set, or all existing data is removed and the node is bootstrapped again
Fatal configuration error; unable to start server.  See log for stacktrace.
ERROR [main] 2019-07-11 16:44:49,823 CassandraDaemon.java:749 - Fatal configuration error

#提示节点已经退役
org.apache.cassandra.exceptions.ConfigurationException: This node was decommissioned and will not rejoin the ring unless cassandra.override_decommission=true has been set, or all existing data is removed and the node is bootstrapped again

#提示节点已经退役,无法接入集群,如果想加入修改修改集群配置 cassandra.override_decommission=true或者删除现在节点上所有数据后重启服务。

原文地址:https://blog.51cto.com/michaelkang/2419518

时间: 2024-08-02 04:51:48

Cassandra集群管理-下线正常节点的相关文章

Cassandra集群管理-替换异常节点

Cassandra集群管理-替换异常节点 替换异常集群节点,使用JVM启动标志 Dcassandra.replace_address_first_boot = <dead_node_ip>启动.一旦启用此属性,节点将在休眠状态中启动,在此期间所有其他节点将看到此节点关闭.替换节点将立即开始从集群中的其余节点引导数据. 新节点的正常引导的主要区别在于此新节点在此阶段不会接受任何写入.一旦引导完成,节点将被标记为"UP",我们依赖于隐性启动保障新节点数据独立存在.(因为自引导开

Cassandra 集群管理-添加新节点

Cassandra 集群添加节点 注意 本文档只是体系文档中的一部分,前面文档信息详见:https://blog.51cto.com/michaelkang/2419518 场景: 用于节点扩容,测试方法:清理(172.20.101.165)节点上所有数据,模拟新节点加入: 确认内容: 1:使用相同版本的Cassandra 2:注意,种子节点不能引导.确保新节点没有在-seeds列表中列出,不要使所有节点种子节点. 3:copy加入DC现有节点配置文件到新节点,然后进行配置修改,文件如下: 在c

Cassandra集群管理-删除异常节点

Cassandra集群管理-删除异常节点 故障模拟节点:172.20.101.166,模拟节点系统直接损坏,所有数据丢失. 注意: 本文档只是体系文档中的一部分,前面文档信息详见:测试准备+下线正常节点:https://blog.51cto.com/michaelkang/2419518节点异常重启:https://blog.51cto.com/michaelkang/2419524添加新节点:https://blog.51cto.com/michaelkang/2419521删除异常节点:ht

Cassandra集群管理-节点异常重启

Cassandra集群管理-节点异常重启 登陆一台集群节点,直接重启服务器(172.20.101.166),设置了 cassandra 开机启动. 注意: 本文档只是体系文档中的一部分,前面文档信息详见:测试准备+下线正常节点:https://blog.51cto.com/michaelkang/2419518节点异常重启:https://blog.51cto.com/michaelkang/2419524添加新节点:https://blog.51cto.com/michaelkang/2419

Kubernetes容器集群管理环境 - Node节点的移除与加入

一.如何从Kubernetes集群中移除Node 比如从集群中移除k8s-node03这个Node节点,做法如下: 1)先在master节点查看Node情况 [[email protected]-master01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-node01 Ready <none> 47d v1.14.2 k8s-node02 Ready <none> 47d v1.14.2 k8s-node03 R

kubernetes容器集群管理部署master节点组件

集群部署获取k8s二进制包 [[email protected] ~]# wget https://dl.k8s.io/v1.15.0/kubernetes-server-linux-amd64.tar.gz [[email protected] ~]# ls kubernetes-server-linux-amd64.tar.gz [[email protected] ~]# mkdir master [[email protected] ~]# mv kubernetes-server-li

Ignite集群管理——基于静态IP的节点发现

Ignite作为分布式内存,集群管理必不可少,Ignite支持基于组播,静态IP,Zookeeper,JDBC等方式发现节点,本文主要介绍基于静态IP的节点发现. 两个最重要的TCP通信设置类: 1. TcpDiscoverySpi 用于设置集群维持与节点发现的tcp通信ip,port. 2. TcpCommunicationSpi 用于设置业务数据(缓存数据)tcp通信的ip,port. 3. 两者的区别与联系 TcpDiscoverySpi用于维持管理集群,交换的是用户不感知的ignite内

cassandra集群缩容与剔除问题节点

今天在操作cassandra集群数据迁移时发生了一些意料之外的事情,服务器迁移前与迁移后同样为5台,但是不知道是什么原因导致的,迁移过后的节点居然多出了一台cassandra节点,个人瞬间感觉莫名其妙,但是问题节点的ip地址是原平台的cassandra数据库ip,所以感觉很不好,知道可能是因为那个环节出现了问题,因为是迁移演练所以没有决定删除所有数据,重新迁移只是将错误节点剔除了cassandra集群,操作如下: 官方文档建议 查看cassandra集群状态的命令 nodetool status

2 weekend110的zookeeper的原理、特性、数据模型、节点、角色、顺序号、读写机制、保证、API接口、ACL、选举、 + 应用场景:统一命名服务、配置管理、集群管理、共享锁、队列管理

在hadoop生态圈里,很多地方都需zookeeper. 启动的时候,都是普通的server,但在启动过程中,通过一个特定的选举机制,选出一个leader. 只运行在一台服务器上,适合测试环境:Zookeeper 的启动脚本在 bin 目录下:在启动脚本之前,还有几个基本的配置项需要配置一下, tickTime :这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个  tickTime  时间就会发送一个心跳:dataDir:顾名思义就是 Zookee