Cassandra 3.x - 将 3 个节点添加到 6 节点集群
Posted
技术标签:
【中文标题】Cassandra 3.x - 将 3 个节点添加到 6 节点集群【英文标题】:Cassandra 3.x - Adding 3 nodes to a 6 node cluster 【发布时间】:2018-07-17 15:18:10 【问题描述】:我希望将 3 个节点添加到现有的 6 节点 cassandra 集群,但由于令牌分配,我对如何最好地做到这一点有点困惑。
目前,现有的 6 节点集群未使用 vNodes(无法更改),而是使用 RandomPartitioner,因此当前令牌已根据令牌生成器添加。问题在于,将 3 个节点添加到 6 节点集群意味着重新计算的令牌会使新节点 7 与当前节点 5 具有相同的令牌。
这里的最佳做法是什么?我是否应该在现有节点上执行 nodetool 移动以添加重新计算的令牌,然后使用正确的配置和令牌引导新节点。还是我添加没有令牌的新节点,一旦引导,nodetool 从第二个节点开始在所有添加新计算的令牌的节点上移动(因为第一个节点始终为 0 与 RandomPartitioner)。
我读了很多资料,但似乎找不到涵盖这种可能性的场景。而且我不能添加超过 3 个节点,长篇大论......
任何帮助都得到了极大的帮助!
【问题讨论】:
只是一个问题:你考虑过migrating to vnodes吗? 【参考方案1】:您需要为整个集群重新计算令牌并将新令牌分配给现有节点。详细说明可以找到here。由于您正在为整个集群重新计算,因此您不应该遇到您所说的问题。
我认为最好的解决方案是add a new DC,在那里您可以使用 vnodes 和 Murmur3。复制数据并将所有客户端移至新 DC 后,您可以decommission the old DC。
【讨论】:
感谢您的回复。不幸的是,由于许多我不会让你厌烦的因素,迁移到新的 DC 是不可能的。只要我可以先将重新计算的令牌添加到现有节点,然后为新计算的 9 节点集群添加具有正确令牌的新节点,那就完美了。谢谢! 我找到了您发布的链接,但这表示首先添加新节点,使用我新计算的令牌我无法做到没有令牌冲突。一个下午寻找在生产系统中遇到过这种情况的人是徒劳的。他们要么不存在,要么死于压力。 ? 我可能遗漏了一些东西,所以如果我错了,请纠正我。我找到了这个link。您有六个节点,因此您的令牌应该是六个节点的令牌。您将移至九个,因此根据说明您将更改现有的 initial_token 值以匹配九个节点的值。然后使用剩余的初始令牌添加新节点。在引导之后,您将进行一次移动(在前六个节点上,一次一个节点),然后在整个集群上进行清理(一次一个节点)。 嗨,好吧,我想我可能忘记了一些重要信息。我们使用RandomPartitioner,而不是murmur3partitioner所以我的令牌肆虐是这样的:0 28356863910078205288614550619314017621 56713727820156410577229101238628035242 85070591730234615865843651857942052863 113427455640312821154458202477256070484 141784319550391026443072753096570088105 SPAN> 使用9个节点它将是这样的:0 18904575940052136859076367079542678414 37809151880104273718152734159085356828 56713727820156410577229101238628035242 75618303760208547436305468318170713656 94522879700260684295381835397713392070 113427455640312821154458202477256070484以上是关于Cassandra 3.x - 将 3 个节点添加到 6 节点集群的主要内容,如果未能解决你的问题,请参考以下文章
Cassandra - Dev中心无法连接到Cassandra集群的所有3个节点
将节点添加到 Cassandra 集群会导致现有节点上的 CPU 过载