你为什么不 运行 nodetool removenode?
Why shouldn't you run nodetool removenode?
我想知道为什么最好不要 运行 nodetool removenode。它是干什么用的?是否有 运行 的命令层次结构? 运行ning said 命令时会出现什么样的问题?有没有使用 removenode 的第一手 experience/nightmare 故事?为什么不呢?
Datastax 文档深入介绍了 nodetool removenode 的用例。
为什么它会变坏的要点是:
Warning: This command triggers cluster streaming. In large
environments, the additional streaming activity causes more pending
gossip tasks in the output of nodetool tpstats. Nodes can start to
appear offline and may need to be restarted to clear up the back log
of pending gossip tasks.
根据文档,这是应该使用的时间:
When the node is down and nodetool decommission cannot be used, use nodetool removenode. Run this command only on nodes that are down.
默认的优先顺序是:
- 更换节点选项(如果计划更换)
- 退役
- 移除节点
- 暗杀
但是 - 在某些情况下,您仍然会选择较低的条目而不是较早的条目。
如果要删除的节点可以运行,那么您通常会 运行 停用并允许该节点将数据从其自身流式传输到其他节点,这些节点现在将持有先前打开的副本之一正在删除的节点。
删除节点将导致重新计算和移动令牌范围,可能需要所有节点开始将数据流式传输到现在拥有该范围的其他节点。
如果节点不可操作,您可以执行nodetool removenode - 这将触发相同的范围移动并导致大量流。默认情况下存在流式处理吞吐量限制,可以进行调整以限制这种影响。
您还可以使用 nodetool [decommission | removenode] force
强制终止退役或删除节点 - 但是,这意味着数据的副本之一尚未重新建立到另一个节点,从而减少了您的负担韧性。
你为什么要这么做?出于同样的流媒体原因,如果您接受一段时间的弹性损失,您可以以可控的方式逐个节点地推出修复。这个选项应该 而不是 被认为是你的 'default approach' 或轻率的选择 - 我不能强调或足够大胆。
当退役/移除节点不可用时,最后的选择是暗杀节点——这与执行移除节点几乎相同,然后立即强制执行。然后你必须设法以同样的方式进行维修和清理。
在所有这 3 个选项之外 - 最好的选择是如果你打算替换节点,那么执行替换而不是删除/添加是赢家 - 这只会要求新节点有数据从另一个复制品流向它并且没有进一步的令牌环范围移动。说明here
如果有可用的数据盘,也可以不用流数据直接上来替换,说明here
我想知道为什么最好不要 运行 nodetool removenode。它是干什么用的?是否有 运行 的命令层次结构? 运行ning said 命令时会出现什么样的问题?有没有使用 removenode 的第一手 experience/nightmare 故事?为什么不呢?
Datastax 文档深入介绍了 nodetool removenode 的用例。
为什么它会变坏的要点是:
Warning: This command triggers cluster streaming. In large environments, the additional streaming activity causes more pending gossip tasks in the output of nodetool tpstats. Nodes can start to appear offline and may need to be restarted to clear up the back log of pending gossip tasks.
根据文档,这是应该使用的时间:
When the node is down and nodetool decommission cannot be used, use nodetool removenode. Run this command only on nodes that are down.
默认的优先顺序是:
- 更换节点选项(如果计划更换)
- 退役
- 移除节点
- 暗杀
但是 - 在某些情况下,您仍然会选择较低的条目而不是较早的条目。
如果要删除的节点可以运行,那么您通常会 运行 停用并允许该节点将数据从其自身流式传输到其他节点,这些节点现在将持有先前打开的副本之一正在删除的节点。
删除节点将导致重新计算和移动令牌范围,可能需要所有节点开始将数据流式传输到现在拥有该范围的其他节点。
如果节点不可操作,您可以执行nodetool removenode - 这将触发相同的范围移动并导致大量流。默认情况下存在流式处理吞吐量限制,可以进行调整以限制这种影响。
您还可以使用 nodetool [decommission | removenode] force
强制终止退役或删除节点 - 但是,这意味着数据的副本之一尚未重新建立到另一个节点,从而减少了您的负担韧性。
你为什么要这么做?出于同样的流媒体原因,如果您接受一段时间的弹性损失,您可以以可控的方式逐个节点地推出修复。这个选项应该 而不是 被认为是你的 'default approach' 或轻率的选择 - 我不能强调或足够大胆。
当退役/移除节点不可用时,最后的选择是暗杀节点——这与执行移除节点几乎相同,然后立即强制执行。然后你必须设法以同样的方式进行维修和清理。
在所有这 3 个选项之外 - 最好的选择是如果你打算替换节点,那么执行替换而不是删除/添加是赢家 - 这只会要求新节点有数据从另一个复制品流向它并且没有进一步的令牌环范围移动。说明here
如果有可用的数据盘,也可以不用流数据直接上来替换,说明here