配置 cassandra-rackdc 和 cassandra-topology

Configuring cassandra-rackdc and cassandra-topology

我正在 AWS EC2 上配置 6 个节点的 Cassandra 集群,区域中有 3 个节点,其他区域中有 3 个节点:

eu-central-1

欧盟西部 1

我已经在cassandra.yaml完成了本地配置。

现在我需要配置cassandra-rackdc.properties & cassandra-topology.properties但是我不了解网络拓扑

请指教

谢谢

构建集群时,通常会先从网络拓扑开始。在您的情况下,您选择的 2 个区域向我表明您想要两个逻辑 Cassandra DC,每个 DC 有 3 个节点。

网络拓扑

为了获得最佳实践,我们建议在每个 DC 中将密钥空间配置为 replication factor (RF) 3。这意味着 (a) 有 3 个数据副本,并且 (b) 您的集群配置为高可用性。

对于 RF:3,这将要求您在每个 DC 中具有相同数量的逻辑 C* 机架,但在您的情况下这是不可能的,因为您只有 2 个可用区,因此拓扑设计意味着您需要将所有节点放在一个逻辑 C* 机架中。

告密者

告密者确定属于哪些数据中心和机架节点。有多个 snitch 可供选择,您选择的 snitch 将决定配置哪个 .properties 文件。

GossipingPropertyFileSnitch (GPFS) 使用八卦自动更新所有节点。在所有情况下都推荐使用 GPFS,因为它会让您的集群面向未来。除非您拥有 C* 专业知识并且对其他告密者有强烈的偏好,否则最好坚持使用 GPFS。使用 GPFS 时,需要在 cassandra-rackdc.properties 文件中定义节点的 DC 和机架。有关详细信息,请参阅 GossipingPropertyFileSnitch

PropertyFileSnitch (PFS) 是 GPFS 的前身,它根据您在 cassandra-topology.properties 文件中配置的内容确定网络拓扑。使用 PFS,每个节点都有集群中所有节点的完整列表,因此当您 add/removed 个节点时,您必须更新每个节点 (details here) 上的 cassandra-topology.properties 文件。这很乏味,这就是用户更喜欢 GPFS 的原因。

警告:如果您没有使用 PropertyFileSnitch,我们建议您删除每个节点上的 cassandra-topology.properties 文件,因为众所周知它会导致间歇性八卦问题,正如我在此处记录的那样 - - https://community.datastax.com/questions/4621/.

还有其他告密者可用(请参阅 docs here),但我不会在这里详细介绍,因为我们认为 GPFS 在所有情况下都是正确的选择。干杯!

Erick 在这里提供了一些很好的背景知识,应该对您有所帮助。就获得简单的解决方案而言,我建议这样做:

  • 确保您在 cassandra.yaml 中使用 GossipingPropertyFileSnitch
  • 删除cassandra-topology.properties.
  • 编辑cassandra-rackdc.properties并为西边的3个节点设置dc=eu-west-1;同样 dc=eu-central-1 用于中央节点。
  • 将机架保留为默认值,因为您在 2 个可用区(可用区 1a 和 1b)中只有 3 个节点。

如果您使用 AZs 1a、1b 和 1c,我会说将其用于 rack 属性。 Erick 提到用 RF 为 3 定义键空间,这是可靠的建议。通常,您会希望 AZ 的数量与您的 RF 相匹配,以实现均匀的数据分布和可用性,这就是为什么我建议将 rack 保留为所有默认值的原因。

同样,您的键空间定义将如下所示:

CREATE KEYSPACE keyspace_name WITH REPLICATION = 
    {'class':'NetworkTopologyStrategy',
     'eu-west-1':'3',
     'eu-central-1':'3'};

要考虑的要点是,您的数据中心名称 必须 键空间定义与 cassandra-rackdc.properties 文件中的条目相匹配。