当前位置: 首页 > news >正文

Elasticsearch ILM 热节点迁移至冷节点 IO 打满、影响读写解决方案探讨

1、实战问题

ILM(索引生命周期管理) 遇到热数据迁移至冷节点时造成 IO 打满影响读写的情况。

现在采取的方案是调整索引生命周期策略,定时的将Cold phase 开启/关闭。低峰开启,高峰关闭。

就是不知道这里面会有啥坑。

热节点:15个16C64G 1.5T SSD ,冷接点:18个 8C32G 3T SATA ,每天数据量9T左右。数据保留期5天。

不确定相比较于采用 max_bytes_per_sec 方案进行限制速度哪个会更好。(设置了50M,但是效果不佳。所以才临时采用关闭迁移的方案)有没有哪位大佬有这方面的经验的可以帮忙提提意见。感谢感谢.

——来自死磕 Elasticsearch 知识星球 

https://t.zsxq.com/pYuo6

2、问题与已执行的方案梳理

从上面问题的描述,拆解问题和已做的尝试,梳理如下:

2.1 IO 打满影响读写

热数据迁移至冷节点时,IO负载过高,导致读写性能下降。

2.2 索引生命周期策略人为干预调整

通过调整索引生命周期策略(ILM),在低峰期开启 Cold phase,在高峰期关闭 Cold phase,以避免迁移过程对读写性能的影响。

2.3 更改配置看效果

当前设置 max_bytes_per_sec 为 50M,但效果不佳,导致采用关闭迁移的临时方案。

3、方案探讨

上述描述和方案验证中潜在问题与风险,梳理如下:

  • 第一:频繁手动开启/关闭 Cold phase 可能导致管理复杂度增加。

  • 第二,迁移过程中的暂停与恢复可能引起数据不一致或性能波动。

  • 第三,冷节点的IO性能瓶颈可能无法通过简单的策略调整解决,需要进一步优化硬件配置或进行集群扩展。

进一步,我们继续进行解决方案的探讨。

3.1 解决方案1——实施分批迁移数据

实施分批迁移数据的方法,可以通过调整 Elasticsearch的索引生命周期管理(ILM)策略和使用一些自动化脚本来实现。

这个方案类似写入优化中的不要一下子把 bulk 调整过大导致写入打满类似。

下面是一个详细的步骤指南:

  • 步骤1. 定义分批迁移策略

在 Elasticsearch 的ILM策略中,设置多个阶段,每个阶段处理一部分数据的迁移。可以将迁移策略按天、小时或更细的粒度分批进行。

  • 步骤2. 配置ILM策略

创建或修改ILM策略,使其支持分批迁移。

假设你的数据每天有9T,并且你希望分3次迁移,那么你可以每次迁移3T数据。

以下是一个示例ILM策略配置:

{"policy": "my_ilm_policy","phases": {"hot": {"actions": {"rollover": {"max_size": "3TB","max_age": "1d"}}},"warm": {"min_age": "1d","actions": {"allocate": {"number_of_replicas": 1}}},"cold": {"min_age": "2d","actions": {"allocate": {"include": {"box_type": "cold"}}}}}
}

这个策略会在数据索引达到 3TB 或 1 天后进行滚动,然后在1天后进入 warm 阶段,2天后进入 cold 阶段。

这个数据迁移方案就像是一个精心设计的流水系统。想象一下,数据就像是河流中的水,它首先在“热”阶段自由流动,这是数据被频繁访问的时期。

3dd4b937e477101582d952661eaf8389.jpeg

然后,水流到达第一个水坝,这里代表“温”阶段,数据不再需要那么频繁的访问,但仍需快速可达。

最后,水流进入一个宁静的湖泊,象征着“冷”阶段,数据在这里被长期存储,不再活跃使用。

整个过程就像调节河流流量一样,通过控制和分批转移,确保数据流动既顺畅又高效。

  • 步骤3. 监控和调整

持续监控Elasticsearch集群的性能,特别是IO使用情况、CPU和内存利用率。

根据监控结果,适时调整迁移策略和时间间隔。

  • 步骤4. 优化 max_bytes_per_sec

通过以上方法,可以有效地实现分批迁移数据,平滑分摊 IO 压力,提高集群的整体性能和稳定性。

3.2 方案二:优化 max_bytes_per_sec 设置

更精细的限制:虽然你已经设置了50M,但效果不佳,可能是因为这个值并不适合你的具体环境。你可以尝试不同的值,逐步调低,找到一个平衡点

{"settings": {"index.routing.allocation.max_bytes_per_sec": "30mb"}
}

结合冷/热迁移策略:可以尝试在迁移的同时,监控系统的IO 利用率,动态调整 max_bytes_per_sec 的值,确保不会导致IO打满。

3.3 方案三:硬件配置与资源分配优化

考虑升级冷节点的硬盘,从SATA 更换为性能更好的SSD,这将显著提高IO性能。

如果可能,增加热节点的数量,这样可以分摊更多的写入压力。

确保在进行迁移操作时,不影响到业务的正常读写,可以考虑使用 Elasticsearch 的 Shard Allocation Awareness,确保数据节点的合理分布和资源隔离。

参考:Elasticsearch:从写入原理谈写入优化

3.4 方案四:提前获取消息!——监控与自动化管理

使用自动化工具来根据实时监控数据动态调整 ILM 策略。可以设置一些规则,比如在检测到IO利用率高于某个阈值时,自动暂停迁移操作,低于阈值时恢复迁移。

参考 python 脚本如下:

import subprocess
import time
import requests# Elasticsearch 相关配置
ES_HOST = "http://localhost:9200"
ILM_POLICY_NAME = "my_ilm_policy"
ILM_PAUSE_ENDPOINT = f"{ES_HOST}/_ilm/stop"
ILM_RESUME_ENDPOINT = f"{ES_HOST}/_ilm/start"# 监控相关配置
IO_THRESHOLD = 80  # IO 利用率阈值,百分比
CHECK_INTERVAL = 60  # 检查间隔,秒def get_io_utilization():# 使用 iostat 获取 IO 利用率result = subprocess.run(['iostat', '-dx', '1', '1'], stdout=subprocess.PIPE)output = result.stdout.decode()# 提取 IO 利用率(示例仅处理一个设备)for line in output.split('\n'):if 'sda' in line:  # 替换为实际的设备名称fields = line.split()utilization = float(fields[-1])return utilizationreturn 0.0def pause_ilm():response = requests.post(ILM_PAUSE_ENDPOINT)if response.status_code == 200:print("ILM 迁移操作已暂停")else:print("暂停 ILM 迁移操作失败:", response.text)def resume_ilm():response = requests.post(ILM_RESUME_ENDPOINT)if response.status_code == 200:print("ILM 迁移操作已恢复")else:print("恢复 ILM 迁移操作失败:", response.text)while True:io_utilization = get_io_utilization()print(f"当前 IO 利用率: {io_utilization}%")if io_utilization > IO_THRESHOLD:pause_ilm()else:resume_ilm()time.sleep(CHECK_INTERVAL)

https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-stop.html

设置监控报警,当IO利用率接近打满时,及时通知运维人员采取措施。可以借助 shell 脚本或者 zabbix 监控工具实现。

举例脚本预警脚本如下:

#!/bin/bash# 监控相关配置
IO_THRESHOLD=90  # IO 利用率阈值,百分比
CHECK_INTERVAL=60  # 检查间隔,秒
EMAIL="your_email@example.com"while true; do# 使用 iostat 获取 IO 利用率IO_UTIL=$(iostat -dx 1 1 | grep 'sda' | awk '{print $NF}')  # 替换为实际的设备名称if (( $(echo "$IO_UTIL > $IO_THRESHOLD" | bc -l) )); thenecho "IO utilization is high: $IO_UTIL%" | mail -s "High IO Alert" $EMAILfisleep $CHECK_INTERVAL
done

小结

通过以上措施,你应该能够更好地管理热数据到冷节点的迁移过程,减少对读写操作的影响。

fdf644475c7ce66330e517d6fb39f687.png

  1. 干货 | Elasticsearch 索引生命周期管理 ILM 实战指南

  2. Elasticsearch ILM 索引生命周期管理常见坑及避坑指南

27000+人一起进阶 Elastic Stack及人工智能技术!

相关文章:

Elasticsearch ILM 热节点迁移至冷节点 IO 打满、影响读写解决方案探讨

1、实战问题 ILM(索引生命周期管理) 遇到热数据迁移至冷节点时造成 IO 打满影响读写的情况。 现在采取的方案是调整索引生命周期策略,定时的将Cold phase 开启/关闭。低峰开启,高峰关闭。 就是不知道这里面会有啥坑。 热节点&…...

STM32中PC13引脚可以当做普通引脚使用吗?如何配置STM32的TAMPER?

1.STM32中PC13引脚可以当做普通引脚使用吗? 在STM32单片机中,PC13引脚可以作为普通IO使用,但需要进行一定的配置。PC13通常与RTC侵入检测功能(TAMPER)复用,因此需要关闭TAMPER功能才能将其作为普通IO使用。…...

k8s学习——创建测试镜像

创建一个安装了ifconfig、telnet、curl、nc、traceroute、ping、nslookup等网络工具的镜像,便于集群中的测试。 创建一个Dockerfile文件 # 使用代理下载 Ubuntu 镜像作为基础 FROM docker.m.daocloud.io/library/ubuntu:latest# 设置环境变量 DEBIAN_FRONTEND 为 …...

重塑水资源管理的新篇章:深度剖析智慧水利解决方案的前沿技术与应用,探索其如何推动水利行业向智能化、高效化、可持续化方向迈进

目录 一、引言 二、智慧水利的核心技术 1、物联网技术 2、大数据与云计算 3、人工智能与机器学习 4、数字孪生技术 三、智慧水利的应用实践 1、智慧河湖长制信息平台 2、智能灌溉系统 3、城市防洪排涝智慧管理系统 4、智慧水库建设 四、智慧水利的推动作用 1、提升…...

C#实现数据采集系统-查询报文处理和响应报文分析处理

发送报文处理 增加一个功能码映射关系 //功能码映射关系public readonly Dictionary<string, byte> ReadFuncCodes = new Dictionary<string, byte>();<...

【音视频】AAC编码器与ffmpeg生成AAC数据

文章目录 前言为什么使用AAC&#xff1f;AAC规格常见的AAC规格规格之间的区别 ffmpeg生成AAC数据 总结 前言 在音频压缩技术不断发展的过程中&#xff0c;AAC&#xff08;Advanced Audio Coding&#xff09;编码器因其出色的音质和压缩效率&#xff0c;逐渐成为数字音频领域的…...

Linux openEuler_24.03部署MySQL_8.4.0 LTS安装实测验证安装以及测试连接全过程实操手册

Linux openEuler_24.03部署MySQL_8.4.0 LTS安装实测验证安装以及测试连接全过程实操手册 前言: 什么是 MySQL? MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于Oracle 公司。MySQL 是一种关系型数据库管理系统,关系型数据库将数据保存在不同的表中,…...

【Elasticsearch7】3-基本操作

目录 RESTful 数据格式 HTTP操作 索引操作 倒排索引 创建索引 查看所有索引 查看单个索引 删除索引 文档操作 创建文档 查看文档 ​编辑 全量修改 ​编辑局部修改 删除文档 条件删除文档 高级查询 条件查询 URL带参查询 请求体带参查询 带请求体方式的查…...

给定一整数数组,其中有p种数出现了奇数次,其他数都出现了偶数次,怎么找到这p个数?

给定一长度为m的整数数组 &#xff0c;其中有p种不为0的数出现了奇数次&#xff0c;其他数都出现了偶数次&#xff0c;找到这p个数。 要求&#xff1a;时间复杂度不大于O(n)&#xff0c;空间复杂度不大于O(1)。 由于时间复杂度不大于O(n)&#xff0c;则不能在遍历数组中嵌套遍…...

RICHTEK立锜科技 WIFI 7电源参考设计

什么是WIFI 7? WiFi 7&#xff08;Wi-Fi 7&#xff09;是下一代Wi-Fi标准&#xff0c;对应的是IEEE 802.11将发布新的修订标准IEEE 802.11be –极高吞吐量EHT&#xff08;Extremely High Throughput &#xff09;。Wi-Fi 7是在Wi-Fi 6的基础上引入了320MHz带宽、4096-QAM、Mu…...

CUDA编程00 - 配置CUDA开发环境

第一步&#xff1a; 在一台装有Nvidia显卡和驱动的机器上&#xff0c;用nvidia-smi命令查看显卡所支持cuda版本 第二步&#xff1a; 到Nvidia官网下载CUDA Toolkit并安装&#xff0c;CUDA Toolkit Archive | NVIDIA Developer 安装时按提示下一步即可&#xff0c;安装完成用 …...

HTML5大作业三农有机,农产品,农庄,农旅网站源码

文章目录 1.设计来源1.1 轮播图页面头部效果1.2 栏目列表页面效果1.3 页面底部导航效果 2.效果和源码2.1 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_4…...

Spark的动态资源分配算法

文章目录 前言基于任务需求进行资源请求的整体过程资源申请的生成过程详解资源申请的生成过程的简单例子资源调度算法的代码解析 申请资源以后的处理&#xff1a;Executor的启动或者结束对于新启动的Container的处理对于结束的Container的处理 基于资源分配结果进行任务调度Pen…...

Python 爬虫技术 第06节 HTTP协议与Web基础知识

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是用于从Web服务器传输超文本到本地浏览器的传输协议。它是互联网上应用最为广泛的一种网络协议&#xff0c;几乎所有的网页数据都是通过HTTP协议进行传输的。下面&#xff0c;我将结合一个简单的Python案例来详细讲解…...

js | 原型链

为什么前者会输出Lucas 后者不会&#xff1f;call动作具体干了什么? http://dmitrysoshnikov.com/ecmascript/javascript-the-core/ function Foo(){this.bar"Lucas" } let obj{}; obj.__proto__Foo.prototype; Foo.call(obj) console.log(obj.bar); // 输出Lucas/…...

Volatility:分析MS10-061攻击

1、概述 # 1&#xff09;什么是 Volatility Volatility是开源的Windows&#xff0c;Linux&#xff0c;MaC&#xff0c;Android的内存取证分析工具。基于Python开发而成&#xff0c;可以分析内存中的各种数据。Volatility支持对32位或64位Wnidows、Linux、Mac、Android操作系统…...

水表数字识别3:Pytorch CRNN实现水表数字识别(含训练代码和数据集)

水表数字识别3&#xff1a;Pytorch CRNN实现水表数字识别(含训练代码和数据集) 目录 水表数字识别3&#xff1a;Pytorch CRNN实现水表数字识别(含训练代码和数据集) 1.前言 2. 水表数字识别的方法 3. 水表数字识别数据集 4. 水表数字分割模型训练 5. 水表数字识别模型训…...

oracle数据文件损坏和误删dbf文件处理方法

加油&#xff0c;新时代打工人&#xff01; 打开sqlplus sqlplus> “/as sysdba” &#xff08;命令行登录sqlplus&#xff09; SQL>shutdown abort; &#xff08;关闭oracle数据库服务器&#xff09; SQL>startup mount ;&#xff08;挂载oracle数据库&#xff0c;这…...

postMessageXss续2

原文地址如下:https://research.securitum.com/art-of-bug-bounty-a-way-from-js-file-analysis-to-xss/ 在19年我写了一篇文章&#xff0c;是基于postMessageXss漏洞的入门教学:https://www.cnblogs.com/piaomiaohongchen/p/14727871.html 这几天浏览mXss技术的时候&#xff…...

【深度学习】sdxl的Lora训练技巧

在进行SDXL LoRA训练时&#xff0c;有一些技巧和最佳实践可以帮助你获得更好的结果。以下是一些重要的建议&#xff1a; 图像选择与标注&#xff1a; 选择多样化的高质量图像是关键&#xff0c;建议至少使用30到50张分辨率为1024x1024的图像【8†source】【9†source】。使用Vi…...

推荐一款 Android 手机端的 SSH 远程连接工具

https://andi.cn/page/621590.html...

3.1、matlab双目相机标定实验

1、双目相机标定原理及流程 双目相机标定是将双目相机系统的内外参数计算出来,从而实现双目视觉中的立体测量和深度感知。标定的目的是确定各个摄像头的内部参数(如焦距、主点、畸变等)和外部参数(如相机位置、朝向等),以便将双目相机捕获的图像转换为三维空间坐标。 双…...

IntelliJ IDEA 直接在软件中更新为最新版

当我们的 IDEA 工具许久没有更新&#xff0c;已经拖了好几个版本&#xff0c;想跨大版本更新&#xff0c;比如从2020.2.1 -> 2023.x.x 此时&#xff0c;我们菜单栏点击 Help -> Check for Updates… &#xff0c;右下角会有提示更新&#xff0c;如下图&#xff1a; 点…...

库卡机器人示教器 KPC2 00107-264 KPC200.107-264

库卡驱动器是一种高性能的控制器&#xff0c;其作用类似于变频器在普通交流马达中的应用。它通过位置、速度和力矩三种方式对伺服马达进行控制&#xff0c;以满足各种高精度定位系统的需求。库卡驱动器是伺服系统的重要组成部分&#xff0c;广泛应用于各种工业自动化领域。 库…...

数据传输安全--VPN

目录 前置知识 VPN概念 VPN诞生的原因 VPN分类 根据建设的单位不同分类 企业自建的VPN 运营商搭建的VPN 根据组网方式不同来进行分类 Client to LAN VPN LAN to LAN VPN按层次划分 VPN常用技术 VPN的核心技术 VPN封装过程的角色 VPN包含的技术 身份认证技术 加…...

【人工智能】人工智能可解释性和透明度的详细探讨

人工智能的可解释性和透明度是当前AI领域的重要议题&#xff0c;它们对于AI系统的公正性、可靠性、用户信任以及合规性等方面都具有深远的影响。以下是对人工智能可解释性和透明度的详细探讨&#xff1a; 一、人工智能的可解释性 定义&#xff1a; 可解释性是指机器学习模型…...

vscode+wsl2+anaconda环境的配置与使用

目录 下载anaconda Anaconda使用参考 vscodeubuntuanaconda 先用vscode连接本地ubuntu。 如果没有安装wsl2与ubuntu&#xff0c;可点击下面的链接。 问题&#xff1a;wsl install 无法解析服务器 成功记录&#xff1a; 在vscode终端用ubuntu安装anaconda。 创建pytho…...

【Linux网络】套接字编程

本篇博客整理了 socket 套接字编程的相关内容&#xff0c;包括 socket 网络通信原理、socket 相关的系统调用接口等&#xff0c;分别演示了基于UDP协议、TCP协议的 socket 网络编程&#xff0c;旨在让读者更加深入理解网络通信原理和设计&#xff0c;对网络编程有初步的认识和掌…...

在线 PDF 制作者泄露用户上传的文档

两家在线 PDF 制作者泄露了数万份用户文档&#xff0c;包括护照、驾驶执照、证书以及用户上传的其他个人信息。 我们都经历过这样的情况&#xff1a;非常匆忙&#xff0c;努力快速制作 PDF 并提交表单。许多人向在线 PDF 制作者寻求帮助&#xff0c;许多人的祈祷得到了回应。 …...

SQL概述及其规则与规范

SQL概述及其规则与规范 1.SQL概述 1.1 SQL背景知识 1946年&#xff0c;世界第一台电脑诞生&#xff0c;如今&#xff0c;互联网已经非常壮大&#xff0c;在这几十年间互联网得到了飞速的发展&#xff0c;无数的技术在其中起起伏伏&#xff0c;但是有一门技术从未消失&#xf…...

柘城县网站建设/长沙建站seo公司

网站的可扩展性架构设计&#xff0c;能够在对现有系统影响最小的情况下&#xff0c;系统功能可以可持续扩展及提升的能力。 在此&#xff0c;对容易混为一谈的 “扩展性” 和 “伸缩性” 的概念进行详细说明&#xff1a; 扩展性 表现为&#xff1a;基础设施不需要经常变更&…...

网站建设收费情况/企业品牌推广

Qemu-kvm、kvm、 virt-manager、VNC Qemu-kvm创建和管理虚拟机 一.KVM简介 KVM&#xff08;名称来自英语&#xff1a;Kernel-basedVirtual Machine的缩写&#xff0c;即基于内核的虚拟机&#xff09;&#xff0c;是一种用于Linux内核中的虚拟化基础设施&#xff0c;可以将Linux…...

网站地址解析/品牌广告视频

【分享】iTOP4412开发板-Bluetooth移植文档 最近须要把Bluetooth移植到iTOP-4412 开发平台。查阅了相关资料&#xff0c;经过一段时间的研究、调试,最终成功的将蓝牙功能移植到了开发板上面。这里笔者记录移植过程及注意事项&#xff0c;方便以后工作须要。iTOP-4412开发板的Bl…...

无锡品牌学会网站建设/百度浏览器网站入口

这边结合了当前大部分企业的通用需求&#xff0c;包括技术的选型比较严格、苛刻&#xff0c;不仅要用业界最流行的技术&#xff0c;还要和国际接轨&#xff0c;在未来的5~10年内不能out。作为公司的架构师&#xff0c;也要有一种放眼世界的眼光&#xff0c;不仅要给公司做好的技…...

源码下载网站/太原网站建设

学习参考借鉴 前言Feature scaling&#xff08;特征缩放&#xff09;&#xff0c;常见的提法有“特征归一化”、“标准化”&#xff0c;是数据预处理中的重要技术&#xff0c;有时甚至决定了算法能不能work以及work得好不好。谈到feature scaling的必要性&#xff0c;最常用的2…...

辽宁省人民政府网站官网/营销策划推广公司

在我们用pl/sql的Tools导出用户对象时&#xff0c;例如导出一个表&#xff0c;则导出的t_test.sql的前几行如下&#xff1a; spool test.log prompt prompt Creating table t_test prompt prompt 这里的prompt的作用相当于一般的操作系统命令echo&#xff0c;输出后面的信…...