【发布时间】:2018-06-09 02:01:05
【问题描述】:
我想知道 Cassandra 集群如何处理磁盘空间不足的成员。
我读到它可能会让他们出错,但那是以前的事了。
如果仍然如此,是否有任何明智的方法可以防止它们在不停机的情况下耗尽整个磁盘,例如将它们变为只读模式?
【问题讨论】:
标签: cassandra
我想知道 Cassandra 集群如何处理磁盘空间不足的成员。
我读到它可能会让他们出错,但那是以前的事了。
如果仍然如此,是否有任何明智的方法可以防止它们在不停机的情况下耗尽整个磁盘,例如将它们变为只读模式?
【问题讨论】:
标签: cassandra
Cassandra 有四种处理这种情况的方法。您可以使用cassandra.yaml 中的disk_failure_policy 属性配置此行为。默认为:
disk_failure_policy: stop
stop 禁用到节点的 gossip 和客户端连接,但让它继续运行。这允许通过基于 JMX 的工具对其进行分析。
其他选项是:
die 针对文件系统错误停止 Cassandra 进程。stop_paranoid 针对 SSTable 错误和启动错误停止 Cassandra 进程。best_effort Cassandra 将尝试根据它可以获得的剩余 SSTable 来响应请求,但不会再使用已满/故障的磁盘。ignore 本质上,可以服务的请求得到服务,失败的请求被允许失败。对于您所说的,ignore 可能会起作用。
理论上,这种情况不应导致停机。您的其他节点应该能够弥补不足,并允许您尽早修复完整节点。如果这只是一个单节点集群,那么确实无法通过停机来修复故障磁盘或附加额外的存储。
【讨论】: