我有5台计算机cassandra群集,其中3个节点属于ESX1主机,另外2台计算机属于ESX2主机。 我有一个名为profilemanager的键空间,它的复制因子为3。据我的理解,cassandra根据复制因子将数据分布到多个节点上。
问题:如果密钥空间配置文件管理器的复制因子为3,则可能有全部3个副本数据都可以保存在ESX1主机中的可能性。 如果ESX1发生故障,则所有相应的3台计算机都发生故障,那么将没有高可用性。有没有一种方法可以指定用于保存特定计算机复制的计算机。
例如:A,B,C,D,E机器在那里。必须在A,B中保存两份副本,并且必须在D / E中保存第三份副本。
答案 0 :(得分:2)
您应该能够使用Cassandra的功能来解决此问题,该功能用于指定逻辑数据中心和机架。如果使用GossipingPropertyFileSnitch
,则应该能够在每个ESX1节点的cassandra-rackdc.properties
文件中指定以下内容:
dc=YourDatacenterName
rack=ESX1
在每个ESX2节点上:
dc=YourDatacenterName
rack=ESX2
在写入时,Cassandra然后确保将二级或三级副本流式传输到另一个机架中的节点。这样,分区的所有副本都不会位于同一ESX主机上。