我想知道Cassandra集群如何处理磁盘空间不足的成员。
我已经读过它可能会让它们因错误而失误但是回来了。
如果仍然如此,是否有任何合理的方法可以防止它们在没有停机的情况下耗尽整个磁盘,例如将它们变为只读模式?
答案 0 :(得分:2)
Cassandra有四种处理这种情况的方法。您可以使用disk_failure_policy
中的cassandra.yaml
属性配置此行为。默认值为:
disk_failure_policy: stop
stop
禁用与节点的八卦和客户端连接,但使其保持运行状态。这允许通过基于JMX的工具进行分析。
其他选项包括:
die
停止Cassandra进程以查找文件系统错误。stop_paranoid
停止Cassandra进程以获取SSTable错误,并在启动时停止错误。best_effort
Cassandra会尝试根据可以获取的剩余SSTable来响应请求,但不会再使用完整/失败的磁盘。ignore
基本上,可以提供可以提供的请求,并且允许失败的请求失败。对于你所谈论的内容,ignore
可能会有效。
理论上,这种情况不应导致停机。您的其他节点应该能够获得松弛,并允许您在方便时修复整个节点。如果这只是一个单节点集群,那么确实无法解决故障磁盘或附加额外存储的停机时间。