Elasticsearch 配置文件里面的 path.data: 可以配置多个数据目录的路径的吗?
——来自死磕Elasticsearch知识星球微信群
多数据路径的支持在7.13.0 + 版本中已被弃用。
https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html
如果需要,>=7.13.0 的版本仍然可以在 path.data 中指定多个路径。
Elasticsearch 将在提供的所有路径上存储节点的数据,但每个分片的数据将保留在相同的路径上。
即便咱们配置了多路径,Elasticsearch 不会在节点的数据路径之间平衡分片。
单个路径的高磁盘使用量可以触发整个节点的高磁盘使用警戒水位线。
如果触发,即使节点的其他路径有可用磁盘空间,Elasticsearch 也不会向节点添加分片。
如果需要额外的磁盘空间,官方建议添加新节点而不是额外的数据路径。
https://github.com/elastic/elasticsearch/issues/71205
Elasticsearch 的多数据路径(MDP)功能允许在path.data设置中指定多个路径(通常指向不同的磁盘),这类似于软件级的 RAID-0。
虽然在过去,多数据路径作为一种简单运行多磁盘设置的方法被使用,但它长期以来一直是用户投诉的源头。
原因之一:在于它可能导致混淆或不直观的行为。
原因之二:多数据路径的实现复杂,并且没有得到良好的测试和维护,实际上与跨多个驱动器扩展数据路径文件系统和为每个数据路径运行一个节点相比,没有带来任何好处。
有没有替代方案?使用什么样的替代方案这才是咱们关注的点!
在面对多数据路径(MDP)被弃用的问题时,以下是一些替代方案和相关的实施原理以及注意事项,这些可以帮助我们转移到新的配置,同时保持数据的完整性和可用性。
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.exclude._name": "target-node-name"
}
}
当上述命令执行后,Elasticsearch集群的配置会更新,以后所有新的数据分配都不会考虑名为"target-node-name"的节点。
这意味着如果集群中有新的分片需要分配或现有分片因为其他原因需要重新分配,系统将不会把它们分配到这个指定的节点“target-node-name”上。
在Elasticsearch中,管理和监控数据迁移进度以及分析任何可能的迁移问题时,可以使用两个有用的API:
GET _cat/allocation
和
GET _cluster/allocation/explain
API。
GET _cat/allocation 执行结果参考:
GET _cluster/allocation/explain 执行结果参考:
这两个API的结合使用提供了一个强大的工具,以确保数据迁移的透明度和问题的可解决性,帮助管理员有效管理和优化Elasticsearch集群的操作。
这里的关闭的目标节点就是咱们步骤1的“target-node-name”节点,关闭节点是为了停止所有在该节点上的数据处理和服务,以便进行数据清理。
注意事项:
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.exclude._name": null
}
}
通过上述策略,可以有效地从使用多数据路径的配置过渡到更稳定和可维护的单数据路径配置,同时最小化迁移过程中的风险和中断。
原理:
注意事项:
https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html
https://github.com/elastic/elasticsearch/issues/71205
本文分享自 铭毅天下Elasticsearch 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!