我们有 9 台物理服务器,每台服务器有 4 个物理磁盘,这意味着我们总共有 36 个物理磁盘,每个磁盘与一个 Cassandra 节点相关。
我们希望在整个集群中拥有 3 个副本,这样即使我们丢失一台服务器(4 个物理磁盘)也不会丢失数据。
我们考虑制作三个不同的机架,每个机架有 3 台物理服务器。我的理解是,如果我有一个 RF=3 的键空间,那么一组数据应该在集群中复制 3 次。
我的问题是,数据会在每个机架内复制 3 次吗,还是会在每个机架上复制一次(共有 3 个机架)?我应该怎么做/如何配置我的集群和我的密钥空间,以便让数据在我们三个机架中的每一个机架上都精确复制一次?
正如我在您的另一个关于复制如何工作的问题中所解释的那样,如果键空间配置
NetworkTopologyStrategy
为使得 DC 中的三个机架中的每一个机架都有一份数据副本,那么Cassandra 将根据拓扑选择副本。其背后的想法是,如果 Cassandra 机架中的任何节点由于某种原因不可用,则其他 2 个机架中的另外 2 个副本(副本)可用于满足一致性请求
LOCAL_ONE
或LOCAL_QUORUM
。明确回答你问题的第二部分,Cassandra 不会在每个机架中存储 3 份数据副本 - 每个机架仅存储 1 份副本。谢谢!