配置 cassandra-rackdc 和 cassandra-topology
Configuring cassandra-rackdc and cassandra-topology
我正在 AWS EC2 上配置 6 个节点的 Cassandra 集群,区域中有 3 个节点,其他区域中有 3 个节点:
eu-central-1
- node0 cass-db-0 10.10.37.79 eu-central-1a
- node1 cass-db-1 10.10.38.229 eu-central-1b
- node2 cass-db-2 10.10.36.76 eu-central-1a
欧盟西部 1
- node3 cass-db-0 10.10.37.80 eu-west-1a
- node4 cass-db-1 10.10.39.177 eu-west-1b
- node5 cass-db-2 10.10.37.231 eu-west-1a
我已经在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
文件中的条目相匹配。
我正在 AWS EC2 上配置 6 个节点的 Cassandra 集群,区域中有 3 个节点,其他区域中有 3 个节点:
eu-central-1
- node0 cass-db-0 10.10.37.79 eu-central-1a
- node1 cass-db-1 10.10.38.229 eu-central-1b
- node2 cass-db-2 10.10.36.76 eu-central-1a
欧盟西部 1
- node3 cass-db-0 10.10.37.80 eu-west-1a
- node4 cass-db-1 10.10.39.177 eu-west-1b
- node5 cass-db-2 10.10.37.231 eu-west-1a
我已经在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
文件中的条目相匹配。