cassandra - Cassandra v3.0.9 引导程序失败
问题描述
我们正在运行一个有近 30 个节点的 Cassandra 集群。我们正在将集群扩展到大约 40 个。该集群目前在us-east1
AZ 的 AWS 上运行(1b、1e 和 1d)。
引导配置:
auto_bootstrap: true
(默认)-Dcassandra.consistent.rangemovement=false
(默认)
引导程序似乎已完成,所有节点都将数据流式传输到这个新节点。然而,节点似乎保持在JOINING
状态,并且引导最终超时(3 小时后;streaming_socket_timeout_in_ms
)。UJ
这是一种不一致的状态,新节点永远卡在状态中。
我试过nodetool bootstrap resume
了,它也无限期挂起。我检查了一下nodetool netstats
,没有一个节点将数据流式传输到新节点。
现在,由于我知道我拥有属于该节点的所有数据,因此我尝试添加auto_bootstrap: false
并cassandra.yaml
重新启动cassandra
过程。我的期望是添加auto_bootstrap: false
不会打扰来自其他节点的流数据,但似乎我在这里遗漏了一些东西。该节点似乎从其他节点接收数据,并且引导重新开始。
我又向前迈进了一步,并尝试添加-Dcassandra.consistent.rangemovement=false
with auto_bootstrap: false
(我这样做是因为我间歇性地得到RuntimeException
建议A node required to move the data consistently is down
,尽管所有节点都是UN
)。我仍然看到该节点尝试从其他节点流式传输数据。我在这里错过了什么吗?
如果有人可以在这里帮助我,我将不胜感激。如有必要,乐于提供任何其他细节。
提前致谢。
解决方案
1)-Dcassandra.consistent.rangemovement=false 应该在并行引导多个节点时使用。它可能会违反一致性。最安全的方法是一次添加一个。
2)如果节点是UJ并且没有流式传输,那么由于某些错误而停止了流式传输,请检查节点system.log,流式传输也会在其他节点在流式传输过程中停止/重新启动时停止。
3)您可以删除数据并重新启动将再次开始流式传输数据的节点。节点为联合国后,检查“nodetool compactionstats”。待压缩过程完成后,在每个节点上依次运行“nodetool repair -pr”和“nodetool cleanup”。
推荐阅读
- vb6 - VB6 XmlHttp.send STRING 不起作用。使用 Cstr(String) 修复。帮助理解
- java - com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为 com.studentcornerapp.studentcorner.Posts.Posts 类型
- r - 如何以与 raster::plotRGB 相同的方式显示带有 tmap 的 RasterBrick
- javascript - 如何配置为带有 react-to-print 的热敏纸打印机进行打印?
- c++ - C++17 中带有 ref-qualifier 的结构化绑定的差异编译器输出
- python - 谷歌应用引擎(python)不显示图像
- aws-lambda - Terraform 不会删除 CloudWatch 规则
- c# - 使螺旋星系臂末端密度降低的公式
- java - 如何进入所需的标签。XML
- python - 使用用户输入的数字三角形