elasticsearch - 停止启动具有所有主分片的弹性搜索实例
问题描述
我有一个带有 3 个节点的 Elasticsearch (v5.6.10) 集群。
- 节点 A:主
- 节点 B:主 + 数据
- 节点 C:主 + 数据
每个数据节点有 6 个分片,复制设置为 1。所有 6 个主节点都在节点 B 中,所有 6 个副本都在节点 C 中。
我的要求是取出节点 B,做一些维护工作,然后将其放回集群中,而不需要任何停机时间。
我检查了弹性文档、讨论论坛和 stackoverflow 问题。我发现我应该先执行以下请求,以便将该节点上的分片分配给其余节点。
curl -XPUT localhost:9200/_cluster/settings -H 'Content-Type: application/json' -d '{
"transient" :{
"cluster.routing.allocation.exclude._ip" : <Node B IP>
}
}';echo
重新分配所有分片后,我可以关闭节点并进行维护工作。完成后,我必须再次包含该节点以进行分配,Elasticsearch 将再次重新平衡分片。
现在我还发现了另一个讨论,其中用户面临黄色/红色集群健康问题,因为只有一个数据节点但错误地将复制设置为一个,导致未分配的分片。在我看来,在做这个练习时,我正在把我的集群带向那个状态。
所以,我在这里关心的是我是否遵循正确的方法,记住我的所有主分片都在我从复制因子为 1 的集群中取出的节点(节点 B)中。
解决方案
推荐阅读
- json - Elasticsearch 查询以获取链接到键名的多个属性的所有值
- javascript - 如何自动创建客户端机密 json 文件
- chromecast - 有没有办法将 Google Data Studios 不断流式传输到 Chromecast 上。希望为办公室创建一个数据监视器
- android-studio - 需要停止 Startapp Splash Ad
- c# - 除非完成垂直滚动,否则不会显示 WPF ListView 水平滚动条
- angular - 错误:断言错误:传入的类型不是 NgModuleType,它没有 'ɵmod' 属性
- java - 想要使用 SharePreferences 更新第二个片段中的数据,但第二个片段没有更新
- python - Create new column by combining others in dictionary/ list format
- linux - Docker - is it safe to switch to non-root user in ENTRYPOINT?
- reactjs - Bootstrap 4 Javascript functionalities are not working in my react project