##替换死亡节点或死亡种子节点
替换因某种原因(例如硬件故障)而死亡的节点的步骤。
vnodes和single-token节点的更换死亡节点的过程相同。更换死亡种子节点需要额外的步骤。
###步骤
1.运行nodetool状态以验证节点是否已经死亡(DN)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9qceSReY-1602314119223)(http://docs.datastax.com/en/cassandra/3.0/cassandra/images/screenshots/nodetool_status_arrow.png)]
2.记录死亡节点的数据中心,地址和机架设置; 你会稍后使用这些。
3.将替换节点添加到网络并记录其IP地址。
4.如果死亡节点是种子节点,请在每个节点上更改群集的种子节点配置:
-
在每个节点的cassandra.yaml文件中,从seed-provider 属性的- seeds列表中删除无效节点的IP地址。
-
如果群集需要新的种子节点来替换死亡的种子节点,请将新节点的IP地址添加到- seeds列表中。
-
重新启动节点。
**注意:**在多个数据中心集群列表中的,每个数据中心(复制组)至少包含一个节点。为了容错,建议为每个数据中心指定多个种子节点。否则,在引导节点时,gossip不得不与另一个数据中心进行通信。
不建议将每个节点都设为种子节点,因为增加了gossip的维护成本减少了性能。gossip优化并不重要,但建议使用小的种子列表(每个数据中心大约三个节点)。
5.在现有节点上的cassandra.yaml配置文件中获取节点的设置信息 :
-
cluster_name
-
endpoint_snitch
-
其他非默认设置:使用diff工具将当前设置与默认设置进行比较。
6.收集死亡节点的机架和数据中心信息:
-
如果群集使用PropertyFileSnitch,请记录cassandra-topology.properties文件中列出的机架和数据中心信息 ,或将文件复制到新节点。
-
如果群集使用GossipPropertyFileSnitch,Ec2Snitch,Ec2MultiRegionSnitch或GoogleCloudSnitch,请记录cassandra-rackdc.properties文件中的机架和数据中心信息。
7.确保新节点符合所有先决条件,然后在新节点上安装Cassandra,但不要启动Cassandra。
**注意:**请确保安装与安装在集群其他节点上相同版本的Cassandra。如果不使用最新版本,请参阅安装Apache Cassandra 3.0的早期版本。
8.如果Cassandra在节点上自动启动,请停止并清除启动时自动添加的数据。
包安装:
- 停止Cassandra:
$ sudo service cassandra stop
- 清除数据:
$ sudo rm -rf /var/lib/cassandra/data/system/*
Tarball 安装:
- 停止Cassandra:
$ ps auwx | grep cassandra
$ sudo kill pid
- 清除数据:
$ sudo rm -rf /var/lib/cassandra/data/data/system/*
9.将之前获取的信息添加到新节点的cassandara.yaml文件中的以下属性 :
-
auto_bootstrap:如果此设置存在并设置为 false,则将其设置为true。(此设置不包含在默认的 cassandra.yaml配置文件中。)
-
CLUSTER_NAME
-
seed_provider
10.添加机架和数据中心配置:
-
如果群集使用GossipPropertyFileSnitch,Ec2Snitch,Ec2MultiRegionSnitch或GoogleCloudSnitch:
-
将无效节点的机架和数据中心信息添加到替换节点上的cassandra-rackdc.properties文件。
-
删除cassandra-topology.properties 文件。
-
-
如果群集使用PropertyFileSnitch:
-
从现有节点复制cassandra-topology.properties文件,或将设置添加到本地副本。
-
编辑文件以添加新节点的IP地址和死节点的机架和数据中心分配的条目。
-
**注意:**不要删除死亡节点的IP地址条目。
11.使用replace_address选项启动新节点,传入死节点的IP地址。
包安装:
- 将以下选项添加到 cassandra-env.sh 文件中:
JVM_OPTS="$JVM_OPTS -Dcassandra.replace_address=address_of_dead_node
-
启动节点。
-
在节点引导后,在cassandra-env.sh中删除参数replace-address 。
-
重新启动节点。
Tarball安装:
- 用这个选项启动Cassandra:
$ sudo bin / cassandra -Dcassandra.replace_address = address_of_dead_node
12.运行nodetool status以验证新节点已成功引导。
13.在使用PropertyFileSnitch的环境中,至少等待72小时,然后从cassandra-topology.properties文件中删除旧节点的IP地址。
这确保旧节点的信息从gossip中移除。如果过早从属性文件中删除,可能会导致问题。使用nodetool gossipinfo检查gossip状态。在LEFT状态消失之前,节点仍处于在线状态。
**注:**该cassandra-rackdc.properties文件不包含IP信息; 因此,在使用其他线索(如GossipingPropertyFileSnitch)时,此步骤不是必需的。