配置Apache Cassandra的灾难恢复(Configuring Apache Cassand

2019-07-04 07:29发布

你如何配置Apache Cassandra的,允许用于灾难恢复,以使两个数据中心的一个失败?

该DataStax文档有关使用,确保至少一个复制写入每个两个数据中心的复制策略的会谈。 但我不明白如何帮助,一旦灾难真正发生。 如果切换到其余的数据中心,所有的写操作将失败,因为这些写入将无法复制到其他数据中心。

我猜你会想你的软件有两种工作模式:普通模式,为此,必须写在两个数据中心复制和灾难模式,为此,他们需要的不是。 但改变的复制策略似乎并不可能。

我真正想要的是两个数据中心是在准备,并且在正常操作期间同时使用数据中心的资源,但仅使用一个剩余数据中心资源(性能会有所降低)当只有一个数据中心正在运行。

Answer 1:

关键是要变化的,而不是改变所述复制因子通过用于写入的API给出的一致性的设置,。 使用LOCAL_QUORUM在灾难发生时的写入设定,当只有一个数据中心。 在正常操作期间使用EACH_QUORUM ,以确保这两个数据中心都具有数据的副本。 读取可以使用LOCAL_QUORUM所有的时间。

这里是Datastax文档的摘要多个数据中心和较旧的但仍然在概念相关的灾难恢复(0.7) 。

制作食谱适合与两个一致性您的需求LOCAL_QUORUMEACH_QUORUM

这里,“本地”是指本地到单个数据中心,而“每个”指的一致性被严格保持在每个数据中心相同的水平。

假设你有2个数据中心,一个严格用于灾难恢复,那么你可以复制因子设置为...

3用于主写入/读取中心,和两个用于故障转移数据中心

现在这取决于是多么的重要,你的数据实际写入到灾难恢复节点,您可以使用EACH_QUORUM或LOCAL_QUORUM。 假设你使用的是复制放置策略NetworkTopologyStrategy (NTS)

LOCAL_QUORUM上写只会耽误客户端在本地写入DC1和异步写入到DC2你的恢复节点(S)。

EACH_QUORUM将确保所有数据被复制,但会延迟写入,直到两个区议会确认成功的操作。

对于读操作很可能最好还是用LOCAL_QUORUM避免inter-data center latency

有渔获这种方法! 如果您选择使用EACH_QUORUM在你写你增加了潜在的故障点(DC2是下降,DC1-DC2链路断开,DC1法定人数不能满足)。

奖金是一旦你的DC1出现故障,你有一个有效的DC2灾难恢复。 另外,请注意它谈论的自定义打小报告设置正确的路由IP的第二连杆。



文章来源: Configuring Apache Cassandra for Disaster Recovery