【问题标题】:Datastax Cassandra - Spanning Cluster node across amazon regionDatastax Cassandra - 跨亚马逊地区的跨集群节点
【发布时间】:2016-10-04 09:08:39
【问题描述】:
我计划在亚马逊托管区域启动三个 EC2 实例。例如,Region-A、Region-B 和 Region-C。
根据上述计划,每个区域作为集群(或数据中心),并有一个节点。(如果我错了,请纠正我。
使用这个基础设施,我可以达到以下配置吗?
复制因子:2
读写级别:QUORUM。
我做这些的基本意图是实现“如果两个区域都掉了,我可以剩下一个区域”。
请帮助我输入您的意见。
注意:我对 cassandra 很陌生,因此无论您提供什么输入,我都会对我有用。
谢谢
【问题讨论】:
标签:
amazon-ec2
cassandra
datastax
【解决方案1】:
如果您的复制因子为 2 并使用 Quorum 的 CL,您将无法容忍失败,即如果一个节点出现故障,您只能得到 1 个确认 - 这不是大多数响应。
如果您跨多个区域进行部署,如您所提到的,每个区域都是集群中的一个 DC。每个单独的 DC 都是您所有数据的完整副本,即它将保存您的密钥空间的所有数据。如果您在每个区域内以 LOCAL_* 一致性(例如 LOCAL_ONE、LOCAL_QUORUM)级别进行读/写,那么您可以容忍其他区域的丢失。
每个 DC/Region 中的副本数量以及您在该 DC 中用于读/写的一致性级别将决定您可以容忍多少故障。如果您使用的是 QUORUM - 这是一个跨 DC 一致性级别。这将需要来自所有 DC 中集群中所有副本的大多数确认。如果您失去 2 个区域,那么您不太可能获得法定人数的回复。
此外,值得记住的是,Cassandra 可以了解它在区域中部署的可用区,并且可以尽最大努力确保将数据的副本放置在多个可用区中。这会让你对失败有更好的容忍度。
如果这是我,我不需要拥有强大的跨 DC 一致性级别(如 QUORUM)。我将在每个区域中有 4 个节点,部署在每个 AZ 中,然后在每个区域中复制因子为 3。然后我会在 LOCAL_QUORUM 或 LOCAL_ONE(最好)读/写。如果您使用 LOCAL_ONE,则每个 DC 中的副本可能会更少,例如,使用 LOCAL_ONE 的复制因子为 2 意味着您可以容忍 1 个副本的丢失。
但是,这将比您最初建议的要贵,但(对我而言)如果我想在多个区域中并容忍丢失 2 个节点,这将是我需要的最低设置。您可以使用 3 个节点如果您想真正节省成本,请在每个地区进行。