斜面'替换死cassandra节点,因为它不存在于八卦中

时间:2014-06-01 16:52:25

标签: cassandra-2.0

cassandra集群中的一个节点已经死亡。

我一直在使用cassandra 2.0.7。

当我执行nodetool状态时,这就是我所看到的(真实地址已被假10网取代)

[root@beta-new:/opt] #nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens  Owns   Host ID                               Rack
UN  10.10.1.94  171.02 KB  256     49.4%  fd2f76ae-8dcf-4e93-a37f-bf1e9088696e  rack1
DN  10.10.1.98     ?          256     50.6%  f2a48fc7-a362-43f5-9061-4bb3739fdeaf  rack1

我尝试通过执行nodetool ring命令获取down节点的令牌ID,grepping for IP并执行head -1获取初始节点。

[root@beta-new:/opt] #nodetool ring | grep 10.10.1.98 | head -1
10.10.1.98     rack1       Down   Normal  ?               50.59%              -9042969066862165996

然后我开始关注如何替换节点的文档:

[http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_replace_node_t.html?scroll=task_ds_aks_15q_gk][1]

所以我在一个新节点上安装了cassandra但没有启动它。

设置以下选项:

cluster_name: 'Jokefire Cluster'
seed_provider:
      - seeds: "10.10.1.94"
listen_address: 10.10.1.94
endpoint_snitch: SimpleSnitch

并将新安装的初始标记设置为我尝试在cssandra.yaml中替换的节点的标记-1:

initial_token: -9042969066862165995

在确定没有数据后:       的/ var / lib中/卡桑德拉

我启动了数据库:

[root@web2:/etc/alternatives/cassandrahome] #./bin/cassandra -f -Dcassandra.replace_address=10.10.1.98

我链接到上面的文档说如果你有一个tarball安装(我们这样做)而不是一个软件包安装,那么在命令行而不是cassandra-env.sh上使用replace_address指令。

启动后,cassandra失败并显示以下消息:

Exception encountered during startup: Cannot replace_address /10.10.10.98 because it doesn't exist in gossip

所以我现在想知道我是否错过了任何步骤,或者是否还有其他任何东西可以尝试替换这个死亡的cassandra节点?

2 个答案:

答案 0 :(得分:8)

自节点故障以来,您的群集的其余部分是否已重新启动?大多数八卦信息无法在完全重启后继续存在,因此您可能真的没有关闭节点的八卦信息。

此问题被报告为错误CASSANDRA-8138,答案是:

  

我认为我更倾向于说一个节点死亡的边缘情况,然后一个完整的集群重启(滚动仍然可以工作)是不支持的,而不是进行这样的侵入式更改以支持更换奇怪而罕见的情况。如果发生这种情况,是时候暗杀节点并引导另一个节点。

因此,您需要从群集中删除故障节点并启动新节点,而不是替换节点。如果使用vnodes,它非常简单。

发现失败节点的节点ID(来自群集中的另一个节点)

nodetool status | grep DN

将其从群集中删除:

nodetool removenode (node ID)

现在您可以清除故障节点的数据目录,并将其作为一个全新的节点引导。

答案 1 :(得分:1)

根据我的经验,在下面的链接中捕获了一些鲜为人知的Cassandra死节点替换问题:

http://getbootstrap.com.vn/examples/equal-height-columns/