栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Elasticsearch8.2扩容挪数据master出现异常

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Elasticsearch8.2扩容挪数据master出现异常

背景

1.ES 8.2 版本集群,从10节点扩到20节点(变更,目标替换老的10个节点,先扩容新节点再下掉老节点)

2.挪数据执行exclude API,排除老节点IP,设置迁移速率为800Mb/s,默认40Mb/s

异常

1.迁移过程中突然不再recovery,且老节点上依然有数据

2.发现出现一些pending task(node left/挪数据暂停...)

3.节点日志中出现 failed to process cluster event (clear-voting-config-exclusions) within 30s;还有 index not found异常;

4.集群依然是green

5.indices中的doc数量两次请求不一样(猜测脑裂)

6.pending task 30min 依然无法完成,确认无法自动恢复

分析

1.假定脑裂,即需要将部分节点先孤立,再加回集群即可恢复,由于不知道脑裂的哪批节点,只能保留现有的master节点,一个个操作其他节点。

风险评估:如果选择的master节点最终的term周期并不是最大的,可能会有丢数据风险;进入ES的容器可以发现,data目录和write目录都多了个lock文件,加上了锁,保证了数据的安全。此时联系用户停止数据写入(发现用户已经没有任何写入了),此时可以把锁全部干掉,然后任意一个master候选节点成为master都不会丢数据,哪怕term不是最大的。

注:如果有写入,可能会出现master候选节点信息不完全一致(没来得及同步完全),在手动随机选master节点后导致数据丢失。

2.参考官方文档:elasticsearch-node | Elasticsearch Guide [8.2] | Elastic

执行unsafe查看term任期,降低风险,还是尽量选最大的;

执行detach,将节点孤立;

重启节点(pod)重新加入集群;

小插曲

怀疑是由于master候选节点是双数导致了master vote列表出现小于一半的情况,导致节点加入集群异常;

尝试加一个node,从20-->21

结论:节点无法加入集群,测试失败,无法快速恢复

处理

1.执行 执行 ./elasticsearch-node unsafe-bootstrap

删掉 /usr/share/elasticsearch/data/node.lock

继续执行 ./elasticsearch-node unsafe-bootstrap

继续删 /usr/share/elasticsearch/data/_state/write.lock

继续执行 ./elasticsearch-node unsafe-bootstrap

选择N

找到term最大的再选择y

2.节点逐一 ./bin/elasticsearch-node detach-cluster  (不包括master节点),detach之后重启节点,观察,节点会加入集群。

原理分析

// TODO

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999205.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号