【问题标题】:Manage Multiple Data Center Clusters in cassandra在 cassandra 中管理多个数据中心集群
【发布时间】:2013-06-11 19:18:40
【问题描述】:

我已经在 3 台单独的机器上设置了 Cassandra...比如 A、B、C ,根据文档,我确实像这样更改了每台机器的 cassandra.yaml 文件

Machine A: listen_address = A's IP
   rpc_address = A's IP
   seeds = A's IP

Machine B: listen_address = B's IP
   rpc_address = B's IP
   seeds = A's IP

Machine C: listen_address = C's IP
   rpc_address = C's IP
   seeds = A's IP

现在,如果 B、C 中的任何一个出现故障,我将无法从 A 获取记录,这是预期会得到的,我对节点、数据中心等术语感到困惑......在上述情况下,我认为一切都不一样数据中心,但是当使用 nodetool 获取环信息时;它在同一个数据中心(datacenter1)中显示它们 我需要知道的是正确的设置,以便它有效地利用 Cassandra

我在每个节点中创建了键空间,例如

create keyspace test
  with placement_strategy = 'SimpleStrategy'
  and strategy_options = {replication_factor : 1}
  and durable_writes = true;

我没有使用任何一致性级别...

Datacenter: datacenter1
==========
Replicas: 1

Address     Rack        Status State   Load            Owns                Token                                       
                                                                           849583800602241121                          
B's IP      rack1       Up     Normal  156.98 KB       95.39%              0                                           
C's IP      rack1       Up     Normal  130.3 KB        4.61%               849583800602241121 

【问题讨论】:

    标签: java cassandra


    【解决方案1】:

    replication_factor 设置为1 意味着每一行只有一个副本,在一个节点上。您可能正在尝试请求驻留在故障节点上的数据,这解释了为什么您没有看到任何返回的数据。

    对于您之前的问题,数据中心是按地理分组的各个节点的集合。单个或多个数据中心可以组合成一个集群

    【讨论】:

      【解决方案2】:

      如果复制因子为 1,我们可以假设 A 的数据将复制到 B,B 的数据复制到 C,C 的数据复制到 A,因此如果一台机器出现故障,您的所有数据应该仍然可用 [Cassandra 中的可用性] . 当您尝试查询数据时遇到什么错误?

      对于 3 个节点(机器)的集群,一个数据中心就足够了,除非您尝试跨地理位置测试设置。基本上,一个位置的一组节点(机器)组成一个数据中心。因此,您的设置是正确的,并且 nodetool 正确显示了信息。 此外,不需要在集群的每个节点中创建密钥空间。您可以在任何一个节点上创建它,当其他节点加入集群时,模式会自动传播到新加入的节点。

      【讨论】:

      • 感谢回答帮助;(1) 例外是:“可能没有足够的副本来处理一致性级别”;​​当 B 或 C 中的任何一个出现故障时。(2) 如果您说的是比 A 的环信息中的 IP 正确,但它不是(3)模式是自动生成的,它是正确的..但是数据呢..它没有被复制,(从 C 发布的数据在 B 不可用)
      • 每个写入请求的一致性级别是多少?对于复制因子为 1 的 3 节点集群,您的一致性级别可能为 ONE(只有一个节点响应写入被视为成功),但这完全取决于您的要求。你是如何创建列族的?也许由于某种原因,一个节点还没有加入环。集群中的所有机器都应该具有相同的 cluster_name。另外,查看日志以获取一些有用的指示。
      • 我没有使用任何一致性级别..而不是在我将一致性级别设置为 1 并且还检查了集群名称之后......它相同。每次我在环中得到相同的信息时,如下所示的答案,建议任何可以澄清事情和场景的博客或文档
      • 这是两个不同的问题。添加 ONE 的一致性级别与 A 未出现在 nodetool 结果中无关。您肯定需要检查 A 上的 /logs 以查看是否有任何特殊原因导致其无法启动。此外,它是种子节点。因此,您应该先启动 A,然后再启动其余节点 B 和 C。如果可能,尝试启动 A,然后复制粘贴您在日志中看到的内容的 sn-p,以更好地评估问题。
      猜你喜欢
      • 2015-03-25
      • 2016-03-24
      • 2022-11-09
      • 2020-07-27
      • 2018-07-15
      • 2017-01-01
      • 2011-06-14
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多