内容简介:在对Cassandra进行维护的时候,通常需要扩集群或者迁移数据,涉及到添加、移除节点。Virtual nodes (vnodes) greatly simplify adding nodes to an existing cluster:Calculating tokens and assigning them to each node is no longer required.
在对Cassandra进行维护的时候,通常需要扩集群或者迁移数据,涉及到添加、移除节点。
Cassandra Version: Apache Cassandra 3.0.6
Add Nodes
Virtual nodes (vnodes) greatly simplify adding nodes to an existing cluster:
Calculating tokens and assigning them to each node is no longer required.
Rebalancing a cluster is no longer necessary because a node joining the cluster assumes responsibility for an even portion of the data.
确保新加节点和现有集群的Cassandra 版本一致
【操作步骤】
在新的机器上部署cassandra,但不要启动
通常都是从现有集群的一台机器上scp cassandra目录到新机器
基于现有集群所用的 snitch
算法修改配置文件
cassandra-topology.properties or the cassandra-rackdc.properties
-
使用
PropertyFileSnitch
算法配置:cassandra-topology.properties -
使用
GossipingPropertyFileSnitch
,Ec2Snitch
,Ec2MultiRegionSnitch
, andGoogleCloudSnitch
算法配置:cassandra-rackdc.properties
ps: 这两个配置与机架和多数据中心有关,如果是同机架单数据中心则不用配置
修改配置 cassandra.yaml
文件
name | desc |
---|---|
auto_bootstrap | 默认文件中是没有这个参数的,如果没有默认为true;如果有且为false修改为true |
cluster_name | 需要加入的集群名称 |
listen_address/broadcast_address | 用来与集群内其他节点通信的ip,通常为本机真实ip,不要填写127.0.0.1或localhost |
endpoint_snitch | 用于定位节点和路由请求的算法,与现有集群保持一致 |
num_tokens | 节点中vnodes的数量,与现有集群配置保持一致,如果当前机器配置更高可以按比例增加这个值,可以有更好的性能 |
seed_provider | 种子节点,至少保证有一个现有集群的节点,-seeds列表表示了新节点与现有集群通过哪些节点通信(种子节点无法引导,所以不要仅仅把要加入的新节点配置进去,也不要将集群所有节点配置成种子节点) |
启动新节点Cassandra
./bin/cassandra
- 初始化system相关信息
...... INFO 06:14:41 Initializing system.IndexInfo INFO 06:14:42 Initializing system.batches INFO 06:14:42 Initializing system.paxos INFO 06:14:42 Initializing system.local INFO 06:14:42 Initializing system.peers INFO 06:14:42 Initializing system.peer_events INFO 06:14:42 Initializing system.range_xfers INFO 06:14:42 Initializing system.compaction_history INFO 06:14:42 Initializing system.sstable_activity INFO 06:14:42 Initializing system.size_estimates INFO 06:14:42 Initializing system.available_ranges INFO 06:14:42 Initializing system.views_builds_in_progress INFO 06:14:42 Initializing system.built_views INFO 06:14:42 Initializing system.hints INFO 06:14:42 Initializing system.batchlog ......
- 寻找现有集群节点
INFO 06:14:44 Node /xx.xxx.xx.xx is now part of the cluster INFO 06:14:44 Node /xx.xxx.xx.xx is now part of the cluster INFO 06:14:44 Node /xx.xxx.xx.xx is now part of the cluster INFO 06:14:44 Handshaking version with /xx.xxx.xx.xx INFO 06:14:44 Handshaking version with /xx.xxx.xx.xx INFO 06:14:44 InetAddress /xx.xxx.xx.xx is now UP INFO 06:14:44 InetAddress /xx.xxx.xx.xx is now UP INFO 06:14:44 InetAddress /xx.xxx.xx.xx is now UP
- 新节点加入集群
INFO 06:14:45 JOINING: waiting for ring information INFO 06:14:45 Updating topology for all endpoints that have changed
- 同步schema
INFO 06:14:49 Initializing system_traces.events INFO 06:14:49 Initializing system_traces.sessions INFO 06:14:49 Initializing system_distributed.parent_repair_history INFO 06:14:49 Initializing system_distributed.repair_history INFO 06:14:49 Initializing system_auth.resource_role_permissons_index INFO 06:14:49 Initializing system_auth.role_members INFO 06:14:49 Initializing system_auth.role_permissions INFO 06:14:49 Initializing system_auth.roles INFO 06:14:49 JOINING: waiting for schema information to complete
- Copy Schema数据
INFO 06:15:22 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4] Executing streaming plan for Bootstrap INFO 06:15:22 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4] Starting streaming to /xx.xxx.xx.xx INFO 06:15:22 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4] Starting streaming to /xx.xxx.xx.xx INFO 06:15:22 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4] Starting streaming to /xx.xxx.xx.xx INFO 06:15:22 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4, ID#0] Beginning stream session with /xx.xxx.xx.xx INFO 06:15:22 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4, ID#0] Beginning stream session with /xx.xxx.xx.xx INFO 06:15:22 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4, ID#0] Beginning stream session with /xx.xxx.xx.xx INFO 06:15:22 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4 ID#0] Prepare completed. Receiving 48 files(358160851 bytes), sending 0 files(0 bytes) INFO 06:15:22 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4 ID#0] Prepare completed. Receiving 35 files(132483825 bytes), sending 0 files(0 bytes) INFO 06:15:23 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4 ID#0] Prepare completed. Receiving 46 files(174538642 bytes), sending 0 files(0 bytes) INFO 06:16:54 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4] Session with /xx.xxx.xx.xx is complete INFO 06:17:38 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4] Session with /xx.xxx.xx.xx is complete INFO 06:20:28 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4] Session with /xx.xxx.xx.xx is complete INFO 06:20:28 [Stream #317a30b0-d29d-11e8-aa92-e9ebc9b827d4] All sessions completed
- 节点切换成NORMAL
INFO 06:20:29 Node /xx.xxx.xx.xx state jump to NORMAL INFO 06:20:29 Waiting for gossip to settle before accepting client requests...
查看节点同步状态
./bin/nodetool status
- 数据同步期间节点的状态:
Datacenter: dc1 =============== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN xx.xxx.xx.xx 1.53 GB 256 100.0% 30ed942d-6827-469b-aab9-7fb649c6c3d7 rack1 UN xx.xxx.xx.xx 1.38 GB 256 100.0% 96736106-e95d-4c54-aabf-41666071bc59 rack1 UN xx.xxx.xx.xx 1.07 GB 256 100.0% 4351af17-2e68-4b46-a78f-fad900e44d13 rack1 UJ 新加节点 57.87 MB 256 ? f3f590ac-9835-47bb-b4d8-6e17ea2916ac rack1
- 数据同步结束后的状态:
Datacenter: dc1 =============== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN xx.xxx.xx.xx 1.53 GB 256 69.2% 30ed942d-6827-469b-aab9-7fb649c6c3d7 rack1 UN xx.xxx.xx.xx 1.38 GB 256 79.3% 96736106-e95d-4c54-aabf-41666071bc59 rack1 UN xx.xxx.xx.xx 1.07 GB 256 78.0% 4351af17-2e68-4b46-a78f-fad900e44d13 rack1 UN xx.xxx.xx.xx 581.43 MB 256 73.5% f3f590ac-9835-47bb-b4d8-6e17ea2916ac rack1
运行nodetool cleanup
nodetool options cleanup [keyspace_name [table_name] […] ]
在所有新节点都加入集群并且数据同步完成后,在之前旧的每一个节点上运行nodetool cleanup操作删除keys。
在做操作时保证一个节点结束后再运行下一个节点,不要并发执行,这样可以安全地推迟清理
Reomve Nodes
UN状态的节点下线
在要下线的节点运行 nodetool decommission
命令
nodetool <options> decommission
该命令会将当前节点的range和请求交给其他节点管理,并且将数据同步给其他节点
DN状态的节点下线
在任何存活的节点运行 nodetool removenode
命令
该命令会将当前集群下线的节点移除,并且将数据同步给其他节点
- 查看节点状态:
Datacenter: DC1 =============== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 192.168.2.101 112.82 KB 256 31.7% 420129fc-0d84-42b0-be41-ef7dd3a8ad06 RAC1 DN 192.168.2.103 91.11 KB 256 33.9% d0844a21-3698-4883-ab66-9e2fd5150edd RAC1 UN 192.168.2.102 124.42 KB 256 32.6% 8d5ed9f4-7764-4dbd-bad8-43fddce94b7c RAC1
> nodetool <options> removenode -- <status> | <force> | <ID>
> nodetool removenode d0844a21-3698-4883-ab66-9e2fd5150edd
节点下线失败
nodetool assassinate
nodetool [options] assassinate <ip_address>
nodetool -u cassandra -pw cassandra assassinate 192.168.100.2
转载请注明出处
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Elasticsearch 集群搭建和集群原理
- Zookeeper集群 + Kafka集群 + KafkaOffsetMonitor 监控
- Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建
- Kafka从上手到实践-Kafka集群:启动Kafka集群
- 借 Redis cluster 集群,聊一聊集群中数据分布算法
- K8S集群入门:运行一个应用程序究竟需要多少集群?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Open Data Structures
Pat Morin / AU Press / 2013-6 / USD 29.66
Offered as an introduction to the field of data structures and algorithms, Open Data Structures covers the implementation and analysis of data structures for sequences (lists), queues, priority queues......一起来看看 《Open Data Structures》 这本书的介绍吧!