前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch 配置文件 path.data 中可以配置多个数据目录的路径吗?

Elasticsearch 配置文件 path.data 中可以配置多个数据目录的路径吗?

作者头像
铭毅天下
发布2024-04-24 15:27:15
3050
发布2024-04-24 15:27:15
举报
文章被收录于专栏:铭毅天下

1、企业级实战问题

Elasticsearch 配置文件里面的 path.data: 可以配置多个数据目录的路径的吗?

——来自死磕Elasticsearch知识星球微信群

2、7.13.0 之前版本可以配置多路径

多数据路径的支持在7.13.0 + 版本中已被弃用。

https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html

如果需要,>=7.13.0 的版本仍然可以在 path.data 中指定多个路径。

Elasticsearch 将在提供的所有路径上存储节点的数据,但每个分片的数据将保留在相同的路径上。

3、但,官方不推荐使用多路径

即便咱们配置了多路径,Elasticsearch 不会在节点的数据路径之间平衡分片。

单个路径的高磁盘使用量可以触发整个节点的高磁盘使用警戒水位线

如果触发,即使节点的其他路径有可用磁盘空间,Elasticsearch 也不会向节点添加分片。

如果需要额外的磁盘空间,官方建议添加新节点而不是额外的数据路径。

4、为什么不推荐呢?官方 Github 定性结论解读

https://github.com/elastic/elasticsearch/issues/71205

Elasticsearch 的多数据路径(MDP)功能允许在path.data设置中指定多个路径(通常指向不同的磁盘),这类似于软件级的 RAID-0。

虽然在过去,多数据路径作为一种简单运行多磁盘设置的方法被使用,但它长期以来一直是用户投诉的源头

原因之一:在于它可能导致混淆或不直观的行为。

原因之二:多数据路径的实现复杂,并且没有得到良好的测试和维护,实际上与跨多个驱动器扩展数据路径文件系统和为每个数据路径运行一个节点相比,没有带来任何好处。

5、多路径问题的替代方案

有没有替代方案?使用什么样的替代方案这才是咱们关注的点!

在面对多数据路径(MDP)被弃用的问题时,以下是一些替代方案和相关的实施原理以及注意事项,这些可以帮助我们转移到新的配置,同时保持数据的完整性和可用性。

5.1 替换方案一:每个数据路径运行一个独立节点

原理
  • 如果我们希望在单一机器上使用多数据路径,可以为每一个数据路径运行一个独立的节点。
  • 这样每个节点都管理自己的一个数据路径,从而简化了数据管理,并可能提高系统的稳健性。
注意事项
  • 这种配置需要更多的资源,包括 CPU内存,因此需要评估我们的硬件是否可以支持多个节点同时运行。
  • 管理和监控可能会更复杂,需要有效的工具来确保所有节点的健康。

5.2 替换方案二:迁移到单路径配置并进行滚动重启

原理
  • 通过类似滚动重启的过程,逐个关闭节点并将其替换为配置了单一数据路径的节点,可以在不停机的情况下迁移到使用单一路径的设置。
具体步骤
  • 步骤 1、数据备份:首先,进行快照备份,以防在迁移过程中发生数据丢失。
  • 步骤 2、使用分配过滤器迁移数据(可选):
代码语言:javascript
复制
PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.exclude._name": "target-node-name"
  }
}

当上述命令执行后,Elasticsearch集群的配置会更新,以后所有新的数据分配都不会考虑名为"target-node-name"的节点。

这意味着如果集群中有新的分片需要分配或现有分片因为其他原因需要重新分配,系统将不会把它们分配到这个指定的节点“target-node-name”上。

  • 步骤3:追踪数据迁移进度,必要时借助集群分配解释 API 确定迁移失败的原因。

在Elasticsearch中,管理和监控数据迁移进度以及分析任何可能的迁移问题时,可以使用两个有用的API:

代码语言:javascript
复制
GET _cat/allocation

代码语言:javascript
复制
GET _cluster/allocation/explain

API。

GET _cat/allocation 执行结果参考:

GET _cluster/allocation/explain 执行结果参考:

这两个API的结合使用提供了一个强大的工具,以确保数据迁移的透明度和问题的可解决性,帮助管理员有效管理和优化Elasticsearch集群的操作。

  • 步骤4:节点关闭与数据清理:按照滚动重启的步骤,关闭目标节点,并清理其数据路径中的数据。

这里的关闭的目标节点就是咱们步骤1的“target-node-name”节点,关闭节点是为了停止所有在该节点上的数据处理和服务,以便进行数据清理。

  • 步骤5:存储和节点配置:重配置存储设备,确保有足够空间,并调整节点的path.data设置。
  • 步骤6:重新启动节点:启动新配置的节点,继续执行滚动重启的其他步骤。

注意事项:

  • 1、确保在迁移和重启过程中,集群的健康状态为黄色或绿色,这表明每个分片至少被分配到了一个节点。
  • 2、迁移完成后,可能需要删除之前应用的分配过滤器,以允许数据正常分配。
代码语言:javascript
复制
PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.exclude._name": null
  }
}

通过上述策略,可以有效地从使用多数据路径的配置过渡到更稳定和可维护的单数据路径配置,同时最小化迁移过程中的风险和中断。

5.3 替换方案三:使用硬件或软件虚拟化层实现单一文件系统

原理:

  • 利用如RAID的硬件虚拟化层或Linux上的逻辑卷管理器(LVM)、Windows上的存储空间等软件虚拟化层,可以创建一个横跨多个磁盘的文件系统。
  • 这样做可以整合多个物理硬盘资源,而不是在应用层面分散路径。

注意事项:

  • 确保虚拟化存储配置正确,具有足够的数据容量和备份,以防单点故障。
  • 在进行硬件或软件配置更改前,最好进行充分的测试,以确保新配置的稳定性和性能。
  • 建议专业的运维同事做一下技术支持。

6、参考

https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html

https://github.com/elastic/elasticsearch/issues/71205

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 铭毅天下Elasticsearch 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、企业级实战问题
  • 2、7.13.0 之前版本可以配置多路径
  • 3、但,官方不推荐使用多路径
  • 4、为什么不推荐呢?官方 Github 定性结论解读
  • 5、多路径问题的替代方案
    • 5.1 替换方案一:每个数据路径运行一个独立节点
      • 原理
      • 注意事项
    • 5.2 替换方案二:迁移到单路径配置并进行滚动重启
      • 原理
      • 具体步骤
  • 5.3 替换方案三:使用硬件或软件虚拟化层实现单一文件系统
  • 6、参考
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档