cassandra集群可能有好多机器,这么多机器肯定有宕机的几率,而且机器越多,几率越大,当发生宕机的时候,你如何删除一个节点呢?
本文仅适应使用了vnodes的cassandra集群,怎么判断是否用了vnodes呢? 主要看你的cassandra.yml配置文件中,是否配置了initial_token,如果没有配置,就是使用了vnodes。使用了vnodes,删除了节点之后它会自己均衡数据,不要你手动处理。
根据官方文档的提示,操作步骤如下:
第一步:先每个机器都修复下每个keyspace nodetool repair -h ip_address_of_node keyspace_name 第二步:如果你要删除的机器是UP状态的机器,没有宕机 你可以在要删除的机器上执行 nodetool decommission. 就直接结束了,否则继续: 第三步:如果你的机器是宕机的。 你要先用在一个活着的机器上执行nodetool status 命令,获取宕机节点的id $ nodetool status
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 removenode d0844a21-3698-4883-ab66-9e2fd5150edd 它会自己均衡数据,这里就直接结束了,否则继续。 第五步:再次使用nodetool status查看节点是否删除成功 $ nodetool status
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 37.7% 420129fc-0d84-42b0-be41-ef7dd3a8ad06 RAC1 UN 192.168.2.102 124.42 KB 256 38.3% 8d5ed9f4-7764-4dbd-bad8-43fddce94b7c RAC1