【问题标题】:How to add node to Cassandra cluster which was previously removed?如何将节点添加到之前删除的 Cassandra 集群?
【发布时间】:2018-09-30 07:41:46
【问题描述】:

我们在向 Cassandra 集群添加节点时遇到了麻烦,我的团队想知道是否有人能发现我们可能做错的任何事情,或者分享他们的最佳实践。这些节点以前是集群的成员,但已被删除,现在我们正在尝试重新添加它们。节点似乎已被适当地删除:nodetool removenode 已成功完成,现有节点上的 nodetool 状态仅显示预期的节点,而没有显示新节点。在尝试再次添加节点之前,集群可以正常运行一两周。

在再次将这些节点添加到集群之前,所有数据目录都已擦除干净。然后我们使用自动引导添加了第一个新节点,它似乎很好地加入了集群,从加入状态转移到正常状态。到目前为止一切顺利......“描述集群”似乎表明一切都是一致的,我们正要对现有节点进行清理,然后修复,然后再添加更多节点。

但后来事情开始出错了。不知何故,这个新节点似乎知道其他先前删除的节点,将它们显示为已关闭且无法访问(这是真的,但现在它们是如何处理的呢?)。对新节点的读取请求经常失败,主要是因为找不到数据。为了避免灾难,新节点被退役并最终被暗杀。我的集群(和应用程序)又开心起来了。

是否有任何我们可能遗漏的添加(或删除节点)的前置或后置步骤?我遵循了有关添加和删除 Cassandra 节点的许多其他问题的建议。在我再次尝试将其添加为节点之前,是否应该在机器上执行完整的 osreload?

感谢您的建议。同样,这里的许多其他问题对我有很大帮助,但并不完全是这种特殊情况。

【问题讨论】:

  • 我也有类似的问题。如果您解决了,发布的答案会很有帮助。这是 cassandra 的一个非常缺乏记录的区域
  • 你能在这个奇怪的行为期间发布系统日志消息吗?
  • 嘿亨利,您删除的节点是种子节点吗?如果是,您是否从所有 cassandra.yaml 文件种子列表中删除了它的 ip?
  • 你在cassandra.yaml中的配置是什么,尤其是告密者...
  • 您确定您确实删除了所有数据,包括来自系统键空间的数据?

标签: cassandra


【解决方案1】:

我相信要调试这个问题,做以下清单:

  • 您需要确保清理了提交日志,因为当节点重新启动时,它可能已经重放了提交日志。

问题:

不知何故,这个新节点以前似乎知道另一个节点 删除节点,将它们显示为已关闭且无法访问(这是真的, 但是他们现在怎么样了?)

  • 确保cassandra.yaml 配置不是旧的,因为它知道以前的节点而描述的问题意味着Yaml 没有使用集群的当前节点列表进行更新。

【讨论】:

    【解决方案2】:

    经过一番争论,我的团队终于成功地将新节点添加到我们的 Cassandra 集群。我想分享我们在这里学到的东西(而不是让人们束手无策)。

    最大的问题是 system_auth 表上的复制器因素。添加新节点后,我们的申请客户端请求(可能是连接到新节点的请求)将失败,并出现'User userid1 has no SELECT permission on <table xyz.data> or any of its parents' 之类的错误。答案是专门将我们的用户和角色插入到新节点上的 system_auth 表中,使用复制器因子增加以覆盖所有节点。 Cassandra 在添加新节点时没有立即复制 system_auth 表似乎很奇怪。

    所以...要添加一个先前已添加和删除的节点,我们就是这样做的:

    1. 确保该节点之前已使用 nodetool drain nodetool decommissionnodetool assassinate 正确停用。
    2. 修复集群
    3. 在要添加的节点上执行干净的 os install / os reload
    4. 在集群中的每个节点上运行 nodetool statusnodetool describecluster 以确保结果一致
    5. 添加节点(确保自动引导)
    6. 修复 system_auth 表
    7. 手动将我们的用户/角色插入到新节点上的 system_auth 表中,使用覆盖所有节点(包括新节点)的复制因子
    8. 在现有节点上运行nodetool cleanup
    9. 修复整个集群(只是为了好的措施)

    我们的部署代码也有一些自己造成的问题,这导致我们的节点无法与其他节点闲聊。它涉及访问 TLS 信任库的问题,因为我们加密了每个节点之间的流量。显然,如果节点不能通信,那就很糟糕了。

    感谢所有提供帮助的人,希望我们的经验对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-16
      • 2014-11-15
      • 2020-09-13
      • 2021-06-21
      • 1970-01-01
      • 2019-02-18
      • 1970-01-01
      • 2012-01-03
      相关资源
      最近更新 更多