多replica情况下,某一storaged是否可快速摘除

基于nebula v1.1部署了一个6机器3replica的集群,但是线上运行过程中有一台编号为003的机器出现了SSD盘故障、数据可能已经有损坏、没有RAID;

请问这个时候怎么快速把003机器摘掉,是否可直接kill 003的storaged?并且kill后5台机器可正常提供读写服务;
如果可以,kill后怎么把003从集群标记为已摘除 并且新加入的机器007自动继承003的replica?(003已被kil,并且killl后就直接丢弃了,不会再加入到集群,这个时候部分partition的replica为2)

1 个赞

顺便问一下,nebula有对数据做checksum校验么?比如盘上有脏数据了怎么发现;
我看nebula对磁盘的使用主要是两点,rocksdb和nebula自己的wal,rocksdb我理解有自己的checksum机制、但是nebula的wal貌似没有checksum,所以盘损坏了、nebula是有可能存入脏数据的、并且脏数据可能传播到集群内其它机器?

是的话,需要增加checksum的应该就只剩nebula的wal了吧

1 个赞

这不是就是多副本的高可用的本意吗?

是这样没错,但我问题的重点是怎么操作、是否有可行操作路径;
我看源码以及实操有两个问题:

  1. wal没做checksum,所以如果leader磁盘受损,那么可能会有脏数据、且存在脏数据入侵到集群其它机器的可能;
  2. 摘机器需要被摘机器处于online状态,这个我实操了下、被摘机器如果是offline则摘不掉(balance remove会立刻失败,且文档没看到其它摘机器手段),实际使用中如果机器出现故障我想第一时间直接干掉它并没打算恢复到集群,不能因为balance data remove的实现而限制了这一点 使得被摘机器必须处于online,并且机器被摘掉后我会找新机器进来承担被摘掉的replica、直接执行balance data就可以把被我直接kill的storaged的replica迁移到新机器么?

所以我的问题是落地的路径 (是否有可行路径只是我没找到),没有怀疑架构上的理论知识 :slightly_smiling_face:

目前扩缩容需要满足以下条件

  1. 机器数量大于副本数
  2. 机器状态online

关于实际机器down的情况,个人建议发生这种情况的时候直接从老机器取下来data盘mount到新机器上跑(如果盘没挂的情况)

补充一点:off-line状态的机器默认1天会从list里删除,由“removed_threshold_sec”这个参数控制。可以通过改短这个时间,再加入新机器去balance data。否则就只能重新导数据来应对机器挂掉的情况了。

1 个赞

@George 如果副本数小于机器数量就会balance data remove失败是么?我是3副本,3节点,这种情况下是不可以变成两节点的对吗?

由于raft协议的原理限制:
1、需要进行基于quorum的选举,副本数量必须是奇数。
2、3副本3节点不建议缩容

比较理想的情况比如:5台机器,3副本,做个缩容是OK的。
关于缩容的具体操作可以参照文档:
缩容FAQ
移除Storage服务器
均衡分片分布

咨询一下,文中的情况,SSD盘坏了,这时机器下线且经过removed_threshold_sec时间后,已下线的问题机器彻底从list中移除后,加入新的机器后会自动在新机器上补齐缺失的replica么?

raft协议会自动补全的

1 个赞

请教一下:三台机器三副本 其中一台需要搬迁机房,耗时一周,之后 ip会变 :
问题:
1.搬迁除了更改三台机器上的这一台搬迁机器的ip地址为新的ip之外,是不是也需要按着这个removed_threshold_sec参数配置来把被搬迁的机器彻底从list中移除?
2.搬迁完成并重新配置以后重新启动graph(搬迁保留data盘数据),是否一切服务和之前一样三副本正常访问? 还需要别的操作吗?

请问 如果不缩容 搬迁过程数据丢失 重新配置后,raft会补齐吗?会有别的影响吗

如果是三副本三机器,只有一台下线不影响服务,剩下两台机器和两副本可以进行raft选举。但是这时候如果运行中的任意一台出问题服务就挂了,需要谨慎。

至于搬迁的新的那一台,如果ip改了,需要往leader角色的meta所在的机器输入http命令来修改meta里ip和part的映射关系。另外,如果ip变了,估计meta地址也会变,这时候估计所有的graph
、meta和stoarge都要更新meta_server_addrs这个参数换配置重启一次才行。

1、nebula不支持跨机房部署;
2、如果IP变了,可以在集群的config里改IP然后重启集群,或者http接口在线改
3、removed_threshold_sec只是一个超时移除机器的flag

1 个赞

好的 如果没有备份迁移机器的数据 之后raft可以自动补齐这部分数据是吗 并且这期间另外两台机器可以正常运行

理论上会补全,建议测试后再实施

我们现在就是跨机房部署的呀 没啥问题啊 为啥不支持跨机房部署

延迟和性能问题
如果你们机房间的延迟足够低,带宽足够大(或者说数据够少的情况下),也能用