Cassandra:节点添加/删除是否需要所有群集节点?

时间:2018-05-02 04:12:01

标签: cassandra

当添加新节点时,由于新令牌的均匀分布, 环的当前节点应该将数据迁移到这个新节点。

那么,它是否需要所有节点都存在?如果没有,那么如果有一些节点 如果下来,那么它将错过这些部分的数据迁移,如何和 什么时候解决?当这些节点回来时?

同样,节点删除会将其数据迁移到其他节点,因此 似乎所有其他节点必须存在,否则它将丢失 数据?

1 个答案:

答案 0 :(得分:2)

Cassandra要求所有节点都存在。我尝试在另一个节点关闭时添加节点并收到此错误:

Exception (java.lang.RuntimeException) encountered during startup: A node required to move the data consistently is down (/172.17.0.2). If you wish to move the data from a potentially inconsistent replica, restart the node with -Dcassandra.consistent.rangemovement=false
java.lang.RuntimeException: A node required to move the data consistently is down (/172.17.0.2). If you wish to move the data from a potentially inconsistent replica, restart the node with -Dcassandra.consistent.rangemovement=false
    at org.apache.cassandra.dht.RangeStreamer.getAllRangesWithStrictSourcesFor(RangeStreamer.java:275)
    at org.apache.cassandra.dht.RangeStreamer.addRanges(RangeStreamer.java:158)
    at org.apache.cassandra.dht.BootStrapper.bootstrap(BootStrapper.java:83)
    at org.apache.cassandra.service.StorageService.bootstrap(StorageService.java:1212)
    at org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:891)
    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:657)
    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:570)
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:346)
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:569)
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:697)
ERROR 09:53:37 Exception encountered during startup

当我尝试在不同的dc中添加节点时也会发生同样的情况。

至于删除节点。如果所有副本都已启动,则只能使用Decomission。 Decomission将首先将所有数据流式传输到新的副本,如果流式传输失败,则decomission将失败。

$ nodetool decommission
error: Stream failed
-- StackTrace --
org.apache.cassandra.streaming.StreamException: Stream failed
    ...

您仍然可以通过关闭节点并执行nodetool removenode来强制删除。这不会传输数据,但会从群集中删除节点。请谨慎使用。

如果没有decomission或removenode工作,也有nodetool assasinate

相关问题