在本文中,我们将讨论 Snitch 及其类型,并了解如何配置 cassandra-topology.properties 和 cassandra-rackdc.properties 文件有助于配置数据中心和集群。
告密者:
在Cassandra 中,Snitch非常有用,并且 Snitch 还有助于保持记录以避免在同一机架上存储多个数据副本。在 Cassandra 中,避免多个副本是非常重要的方面。在复制策略中,我们分配副本数量并定义数据中心。这些信息对于snitch识别节点和属于哪个机架非常有帮助。
在 Cassandra 中,snitch 的工作是确定它应该使用哪些数据中心和机架来读取和写入数据。在 Cassandra 中,所有告密者默认都是动态的。
告密者的类型:
- 简单的Snitch:
在 Cassandra 中,它是默认的 snitch,适用于开发环境。它不知道数据中心或机架,也不查找 Cassandra-topologies.properties 文件,因此无法用于多数据中心环境。 - GossipingPropertyFileSnitch:
在 Cassandra 中,datastax 也推荐用于生产用途的文件告密者非常重要。这个告密者还寻找 Cassandra-topologies.properties 文件来识别集群信息,例如哪个数据中心和机架属于,然后我们在 cassandra-rackdc.properties 文件中使用 gossip 将其配置到其余节点。我们可以通过编辑 Cassandra-topologies.properties 文件来配置 GossipingPropertyFileSnitch。
我们来看一下。dc=DC1 rack=RACK1 prefer_local=true
在这里,我们使用 dc 和 rack 指的是数据中心和机架,而 preferred_local=true 指的是与本地 IP 地址通信,而不是在多个数据中心进行通信,以限制网络带宽的使用。
- Ec2Snitch:
这是部署的重要告密者,对于所有节点都在单个区域中的 Amazon EC2 部署来说,这是一个简单的告密者。在 Ec2Snitch 中,区域名称是指数据中心,可用性区域是指集群中的机架。 - Ec2MultiRegionSnitch:
在 Cassandra 中,我们在集群跨越多个区域的情况下使用此 snitch,并在基于 Amazon EC2 的集群中使用 Ec2MultiRegionSnitch。 - GoogleCloudSnitch:
在 Cassandra 中,它是在 Google Cloud Platform (GCP) 上跨单个或多个区域部署 Cassandra 的告密者。它是支持 GCP(谷歌云平台)的告密者。 - 机架推断Snitch:
在这个报告中,我们找出了机架和数据中心的位置。在这个告密者中,IP 地址的第 3 和第 4 个八位字节(例如 10.40.08.230)对应于机架和数据中心。这是编写自定义告密者类非常有用的告密者。 - PropertyFileSnitch:
这个告密者使用了 cassandra-topology.properties 文件,我们必须定义节点信息,我们可以通过它来确定节点的接近程度。
我们可以根据节点所属的数据中心和机架来识别节点信息。确定节点的接近度 PropertyFileSnitch 使用了 cassandra-topology.properties 文件中的网络定义。 - CloudstackSnitch:
它是基于云的告密者,是基于 Apache Cloudstack 的集群的告密者。
现在,让我们了解 cassandra-topology.properties 和 cassandra-rackdc.properties 文件。
了解 cassandra-topology.properties 和 cassandra-rackdc.properties 文件:
它包含整个集群的拓扑结构以及 cassandra-topology.properties 和 cassandra-rackdc.properties 文件的信息。
让我们举个例子。
dc = DC1
rack = RAC1
rack= RAC2
在下面给出的示例中,DC1 和 DC2 是两个物理数据中心,每个数据中心都有两个机架。在 Cassandra 中,PropertyFileSnitch 使用属性文件,即 cassandra-topologies.properties 文件来标识集群的节点。如果我们没有在 cassandra-topologies.properties 文件中识别集群的节点,那么数据库会假设数据位于默认的数据中心和机架中。
# datacenter One
10.40.08.230 = DC1:RAC1
10.30.11.231 = DC1:RAC1
10.54.06.232 = DC1:RAC1
130.40.20.106 = DC1:RAC2
130.41.21.229 = DC1:RAC2
130.42.29.111 = DC1:RAC2
# datacenter Two
100.46.12.120 = DC2:RAC1
100.60.13.201 = DC2:RAC1
100.24.35.184 = DC2:RAC1
30.22.20.110 = DC2:RAC2
30.35.21.210 = DC2:RAC2
30.27.20.231 = DC2:RAC2
Cassandra-topologies.properties 文件对于更新非常重要,因为我们要在集群中添加或删除节点,然后才能知道这些节点属于哪个数据中心和机架。从性能的角度来看,将这些信息记录给 Cassandra 是非常重要的。
在这里,我们将描述 cassandra-rackdc.properties 文件: 在上面给出的示例中,我们使用以下节点信息。
我们来看一下。
dc=DC1
rack=RAC1
笔记:
有以下 snitch 类型查找 cassandra-rackdc.properties 文件以识别节点集群信息,例如哪个数据中心和哪个机架属于。
我们来看一下。
GossipingPropertyFileSnitch
Ec2Snitch
Ec2MultiRegionSnitch