gpt4 book ai didi

cassandra - 当 vnode 缺少 token 范围时,如何引导 Cassandra 节点?

转载 作者:行者123 更新时间:2023-12-01 11:41:00 27 4
gpt4 key购买 nike

我在 AWS 上的 Cassandra 1.2.11 (DSE) 上有一个 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

没有意义的是,除了使用 SimpleStrategy 的 Opscenter 之外,其余键空间都使用 NetworkTopologyStrategy 并且 RF 为 3。我一直试图处理这个问题的方法是找出哪个节点有失败的范围并运行 nodetool repair -pr 然后再次尝试 Bootstrap 。虽然一旦我对整个集群进行修复(这可能需要几天时间)这可能最终会奏效,但我关闭了一个节点并且集群正在以降级状态运行。如果我丢失了另一个节点,我就完蛋了。

我应该在这里做什么以及如何解决这个问题并强制节点引导?

最佳答案

我想通了这个问题。问题在于 Opscenter 使用的是 SimpleStrategy 并且默认 replication_factor 为 1。因此当该节点丢失时,它无法引导新节点。解决方案是使用以下命令更新 Opscenter key 空间:

UPDATE KEYSPACE OpsCenter
WITH placement_strategy = 'NetworkTopologyStrategy'
AND strategy_options = {Cassandra : 3};

这允许引导发生。现在所有节点都需要修复,并且可能会在修复完成之前为 OpsCenter key 空间的请求提供未命中服务。但由于 OpsCenter 不是正常集群操作所必需的键空间,因此在这里使用可更换节点会更好。

关于cassandra - 当 vnode 缺少 token 范围时,如何引导 Cassandra 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20816139/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com