📜  卡桑德拉的告密者

📅  最后修改于: 2021-09-08 16:08:09             🧑  作者: Mango

在本文中,我们将讨论 Snitch 及其类型,并了解如何配置 cassandra-topology.properties 和 cassandra-rackdc.properties 文件有助于配置数据中心和集群。

告密者:
Cassandra 中,Snitch非常有用,并且 Snitch 还有助于保持记录以避免在同一机架上存储多个数据副本。在 Cassandra 中,避免多个副本是非常重要的方面。在复制策略中,我们分配副本数量并定义数据中心。这些信息对于snitch识别节点和属于哪个机架非常有帮助。

在 Cassandra 中,snitch 的工作是确定它应该使用哪些数据中心和机架来读取和写入数据。在 Cassandra 中,所有告密者默认都是动态的。

告密者的类型:

  1. 简单的Snitch:
    在 Cassandra 中,它是默认的 snitch,适用于开发环境。它不知道数据中心或机架,也不查找 Cassandra-topologies.properties 文件,因此无法用于多数据中心环境。
  2. 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 地址通信,而不是在多个数据中心进行通信,以限制网络带宽的使用。

  3. Ec2Snitch:
    这是部署的重要告密者,对于所有节点都在单个区域中的 Amazon EC2 部署来说,这是一个简单的告密者。在 Ec2Snitch 中,区域名称是指数据中心,可用性区域是指集群中的机架。
  4. Ec2MultiRegionSnitch:
    在 Cassandra 中,我们在集群跨越多个区域的情况下使用此 snitch,并在基于 Amazon EC2 的集群中使用 Ec2MultiRegionSnitch。
  5. GoogleCloudSnitch:
    在 Cassandra 中,它是在 Google Cloud Platform (GCP) 上跨单个或多个区域部署 Cassandra 的告密者。它是支持 GCP(谷歌云平台)的告密者。
  6. 机架推断Snitch:
    在这个报告中,我们找出了机架和数据中心的位置。在这个告密者中,IP 地址的第 3 和第 4 个八位字节(例如 10.40.08.230)对应于机架和数据中心。这是编写自定义告密者类非常有用的告密者。
  7. PropertyFileSnitch:
    这个告密者使用了 cassandra-topology.properties 文件,我们必须定义节点信息,我们可以通过它来确定节点的接近程度。
    我们可以根据节点所属的数据中心和机架来识别节点信息。确定节点的接近度 PropertyFileSnitch 使用了 cassandra-topology.properties 文件中的网络定义。
  8. 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