0

我已经在 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 
4

2 回答 2

2

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

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

于 2013-07-10T18:14:07.727 回答
0

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

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

于 2013-06-15T06:14:39.747 回答