【问题标题】:How to setup Cassandra clusters如何设置 Cassandra 集群
【发布时间】:2020-04-12 20:05:32
【问题描述】:

目前,我们必须设置 Cassandra 集群以支持两个数据中心。我们大概知道数据库集群可以如下图设置。

根据这张图。

假设我们有 6 个数据库节点。

关于底部的,

数据中心 1 中的 1.3 个节点。

数据中心 2 中的 2.3 个节点。

3.创建一个集群,包含所有节点。

4.创建密钥空间时,可以使用NetWorkToplogyStrategy和复制因子DC1:2、DC2:2实现跨数据中心的数据复制。

重新评分,

集群 1 中的 1.3 个节点,数据中心 1。

集群 2 中的 2.3 个节点,数据中心 2。

现在,我有一个问题,如何设置集群 1 和集群 2 或数据中心 1 和数据中心 2 之间的复制机制。

谢谢。

【问题讨论】:

    标签: cassandra scylla


    【解决方案1】:

    根据您的描述,您的底部图片实际上是 cassandra 模型。一个集群,包含您需要的尽可能多的 DC。您可以随意配置 DC 之间的复制(通过密钥空间)。如果您有 2 个单独的集群,它们不会相互复制,因为它们是完全独立的数据库。下面的图片是 Cassandra 的工作原理,这就是您所需要的。每个节点都被视为主节点(即 Cassandra 中没有主节点 - 每个节点都是平等的)。

    只是为您的图表添加注释: 拥有一个 RF=2 的 3 节点 DC,虽然提供了一些冗余,但带走了最常见的客户端一致性选项之一 - LOCAL_QUORUM。原因是因为 2 的 LOCAL_QUORUM 是 2 = ALL - 这意味着如果您选择了,您已经完全牺牲了某些数据的可用性组件(这意味着“本地”DC 上的所有节点必须始终可用以确保没有错误发生)。如果您计划选择 LOCAL_QUORUM 作为选项,则应更改 RF=3,以允许单个节点不可用而不会出现问题。

    -吉姆

    【讨论】:

    • Jim 的上述回答也适用于 Scylla。它的 1 个集群,2 个 DC。
    • 谢谢Jim,有没有中间件可以支持我设计的顶级数据库结构?
    • 也许可以,但您为什么要这样做?由于底部图像就足够了 - 每个 DC 都有一个数据副本并且是独立的。如果您有多个键空间,您甚至可以有目的地定义存在于一个 DC 中但不存在于另一个 DC 中的数据。我不确定顶部图片提供了哪些底部图片没有。
    • 好的,谢谢,我想我们最好放弃顶级解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多