我计划在亚马逊托管地区推出三个EC2实例。例如,Region-A,Region-B和Region-C。
根据上述计划,每个区域都充当群集(或数据中心)并拥有一个节点。(如果我错了,请纠正我)。
使用此基础架构,我可以获得以下配置吗?
复制因子:2
写入和读取级别:QUORUM。
我做这些事情的基本目的是实现"如果两个地区垮台,我可以在剩下的一个地区生存下来。#/ p>
请帮助我提供您的意见。
注意:我对cassandra很新,所以无论你给予什么投入,对我都有用。
由于
答案 0 :(得分:2)
如果您的复制因子为2并且使用了Quorum的CL,那么您将无法容忍失败,即节点出现故障,并且您只获得1个ack - 这不是大多数响应。
如果您跨多个区域进行部署,则如您所述,每个区域都是群集中的DC。每个DC都是您所有数据的完整副本,即它将保存您的密钥空间的所有数据。如果您在每个区域内以LOCAL_ *一致性(例如LOCAL_ONE,LOCAL_QUORUM)级别读/写,那么您可以容忍其他区域的丢失。
每个DC / Region中的副本数以及您在该DC中用于读/写的一致性级别将决定您可以容忍多少故障。如果您使用的是QUORUM - 这是一个跨DC一致性级别。它将需要来自所有DC中群集中所有副本的大多数ack。如果你松散了2个区域,那么你不太可能获得法定数量的回复。
此外,值得记住的是,Cassandra可以了解它在区域中部署的AZ,并且可以尽力确保将数据的副本放置在多个AZ中。这样可以更好地容忍失败。
如果这是我,我不需要具有强大的跨DC一致性水平(如QUORUM)。我将在每个区域中有4个节点,在每个AZ中部署,然后在每个区域中复制因子为3。然后我会在LOCAL_QUORUM或LOCAL_ONE(最好)读/写。如果使用LOCAL_ONE而不是每个DC中的副本数量较少,例如复制因子为2且LOCAL_ONE意味着您可以容忍丢失1个副本。
然而,这将比你最初的建议更昂贵但是(对我而言)如果我想要在多个地区并且容忍丢失2,那么这将是我需要的最小设置。你可以使用3个节点在每个地区,如果你想真正节省成本。