我已经在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
答案 0 :(得分:2)
将replication_factor
设置为1意味着在一个节点上每行只有一个副本。您可能正在尝试询问故障节点上的数据,这可以解释为什么您没有看到任何返回的数据。
对于您之前的问题,数据中心是地理上分组的各个节点的集合。单个或多个数据中心可以合并为一个群集。
答案 1 :(得分:0)
复制因子为1时,我们可以假设A的数据将被复制到B中,B的数据将被复制到C中的C和C的数据中,因此,如果1台机器出现故障,您的所有数据仍应可用[Cassandra中的可用性] 。 当您尝试查询数据时,您遇到的错误是什么?
对于3个节点(机器)的集群,单个数据中心应该足够,除非您尝试跨地理位置测试设置。基本上,一个位置处的一组节点(机器)包括数据中心。因此,您的设置是正确的,nodetool正确显示信息。 此外,不需要在群集的每个节点中创建密钥空间。您可以在任何一个节点上创建它,当其他节点加入群集时,架构会自动传播到新加入的节点。