在cassandra中管理多个数据中心群集

时间:2013-06-15 05:09:26

标签: java cassandra

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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