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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch 配置文件 path.data 中可以配置多个数据目录的路径吗?

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、使用分配过滤器迁移数据(可选):
1. PUT _cluster/settings
2. {
3.   "persistent": {
4.     "cluster.routing.allocation.exclude._name": "target-node-name"
5.   }
6. }

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

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

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

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

GET _cat/allocation

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、迁移完成后,可能需要删除之前应用的分配过滤器,以允许数据正常分配。
1. PUT _cluster/settings
2. {
3.   "persistent": {
4.     "cluster.routing.allocation.exclude._name": null
5.   }
6. }

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

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


更短时间更快习得更多干货!

和全球 近2000+ Elastic 爱好者一起精进!

elastic6.cn——ElasticStack进阶助手

比同事抢先一步学习进阶干货!


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
存储 缓存 固态存储
优化Elasticsearch 硬件配置
优化Elasticsearch 硬件配置
86 5
|
1月前
|
缓存 监控 安全
优化Elasticsearch 集群配置
优化Elasticsearch 集群配置
71 4
|
1月前
|
监控 负载均衡 安全
Elasticsearch集群配置优化
Elasticsearch集群配置优化
32 1
|
1月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
50 5
|
2月前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
227 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
2月前
|
运维 监控 数据可视化
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
84 1
|
2月前
|
存储 安全 网络协议
Elasticsearch 配置文件解析
【10月更文挑战第3天】Elasticsearch 配置文件解析
104 3
|
2月前
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
185 0
|
2月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
228 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
3月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo