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
Run Code Online (Sandbox Code Playgroud)
我尝试通过执行nodetool ring命令获取down节点的令牌ID,为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
Run Code Online (Sandbox Code Playgroud)
然后我开始关注如何替换节点的文档:
[ 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
Run Code Online (Sandbox Code Playgroud)
并将新安装的初始标记设置为我要在cssandra.yaml中替换的节点的标记-1:
initial_token: -9042969066862165995
Run Code Online (Sandbox Code Playgroud)
确认之后还没有数据:/ var/lib/cassandra
我启动了数据库:
[root@web2:/etc/alternatives/cassandrahome] #./bin/cassandra -f -Dcassandra.replace_address=10.10.1.98
Run Code Online (Sandbox Code Playgroud)
我链接到上面的文档说如果你有一个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
Run Code Online (Sandbox Code Playgroud)
所以我想知道,如果我错过了任何步骤,或者还有什么我可以尝试替换这个死的cassandra节点吗?
小智 8
自节点故障以来,您的群集的其余部分是否已重新启动?大多数八卦信息无法在完全重启后继续存在,因此您可能真的没有关闭节点的八卦信息.
这个问题被报告为CASSANDRA-8138的一个错误,答案是:
我想我更倾向于说一个节点死亡的边缘情况,然后一个完整的集群重启(滚动仍然可以工作)只是不支持,而不是进行这样的侵入式更改,以支持在这种奇怪和罕见的条件下更换.如果发生这种情况,是时候暗杀节点并引导另一个节点.
因此,您需要从群集中删除故障节点并启动新节点,而不是替换节点.如果使用vnodes,它非常简单.
发现故障节点的节点ID(来自群集中的另一个节点)
nodetool status | grep DN
Run Code Online (Sandbox Code Playgroud)
并从群集中删除它:
nodetool removenode (node ID)
Run Code Online (Sandbox Code Playgroud)
现在,您可以清除故障节点的数据目录,并将其作为一个全新的节点进行引导.
| 归档时间: |
|
| 查看次数: |
2551 次 |
| 最近记录: |