我在Cassandra 1.2.11(DSE)上的AWS上有一个12节点集群.我失去了其中一个节点,因为它丢失了亚马逊(包含数据)的短暂驱动器.为了解决这个问题,我删除了有效的节点nodetool removenode $hostid
.群集似乎仍然是均衡的,等等.
问题是,当我尝试引导新节点时,我现在遇到如下错误:
java.lang.IllegalStateException: unable to find sufficient sources for streaming range (-2556758013916855401,-2545694469859252228] at org.apache.cassandra.dht.RangeStreamer.getRangeFetchMap(RangeStreamer.java:205) at org.apache.cassandra.dht.RangeStreamer.addRanges(RangeStreamer.java:129) at org.apache.cassandra.dht.BootStrapper.bootstrap(BootStrapper.java:81) at org.apache.cassandra.service.StorageService.bootstrap(StorageService.java:975) at org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:741) at org.apache.cassandra.service.StorageService.initServer(StorageService.java:585) at org.apache.cassandra.service.StorageService.initServer(StorageService.java:482) at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:348) at com.datastax.bdp.server.DseDaemon.setup(DseDaemon.java:351) at org.apache.cassandra.service.CassandraDaemon.init(CassandraDaemon.java:381) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.commons.daemon.support.DaemonLoader.load(DaemonLoader.java:212) Cannot load daemon Service exit with a return value of 3
没有意义的是,除了正在使用的Opscenter之外SimpleStrategy
,其余的键空间都在使用NetworkTopologyStrategy
并且RF为3.我试图解决这个问题的方法是确定哪个节点的范围是失败并运行a nodetool repair -pr
然后再次尝试引导程序.虽然这可能最终在整个集群周围运行修复(可能需要数天),但我在一个节点上运行并且集群在降级状态下运行.如果我失去了另一个节点,我有点搞砸了.
我应该在这做什么,如何解决这个问题并强制节点引导?
我想出了这个问题.问题是Opscenter正在使用SimpleStrategy并且默认replication_factor
值为1.因此,当该节点丢失时,它无法引导新节点.解决方案是使用以下命令更新Opscenter密钥空间:
UPDATE KEYSPACE OpsCenter WITH placement_strategy = 'NetworkTopologyStrategy' AND strategy_options = {Cassandra : 3};
这允许引导程序发生.现在所有节点都需要进行修复,并且可能会在修复完成之前提供对OpsCenter密钥空间请求的未命中.但由于OpsCenter是正确群集操作的非必需密钥空间,因此在此处具有可替换节点更好.