Elasticsearch7.x 集群迁移文档
一、集群样例信息
集群名称:escluster-ali-test
1、源集群:(source_cluster)
| 节点IP | 节点名称 | 节点角色 | 是否为master节点 |
|---|---|---|---|
| 10.200.112.149 | es2.gj1.china-job.cn | data,master | 是 |
| 10.200.112.151 | es1.gj1.china-job.cn | data,master | 否 |
| 10.200.112.153 | es3.gj1.china-job.cn | data,master | 否 |
2、目标集群:(target_cluster)
| 节点IP | 节点名称 | 节点角色 | 是否为master节点 |
|---|---|---|---|
| 172.31.2.84 | es1.gj2.china-job.cn | data,master | 是 |
| 172.31.0.147 | es2.gj2.china-job.cn | data,master | 否 |
| 172.31.0.94 | es3.gj2.china-job.cn | data,master | 否 |
二、操作步骤
1、集群改造
源集群和目标集群合并成一个大集群,修改目标集群的配置信息。
1.1、目标集群改造
- 关闭目标集群(配置变更前需保证集群是关闭的)
- 修改目标集群所有节点的集群名称,与源集群名称一样 cluster.name: target_cluster
- 修改目标集群所有节点dscovery.zen.ping.unicast.hosts:,把源集群节点IP加入。
##指向老节点
cluster.initial_master_nodes: [“es1.gj1.china-job.cn”,“es2.gj1.china-job.cn”,“es3.gj1.china-job.cn”]
discovery.zen.ping.unicast.hosts: [“10.200.112.149”, “10.200.112.151”,“10.200.112.153”,“172.31.2.84”, “172.31.0.147”,“172.31.0.94”]
discovery.seed_hosts:
- 192.168.1.10:9300
- 192.168.1.11
- seeds.mydomain.com
cluster.initial_master_nodes: - master-node-a
- master-node-b
- master-node-c
1.2、关闭源集群索引均衡功能
防止目标集群节点还未全部加入完成,数据开始迁移。
curl -XPUT "http://10.200.112.149:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{"transient" :{"cluster.routing.rebalance.enable" : "none"}
}'
1.3、启动目标集群加入到源集群
同时保证集群运行的状态为green。
1.4、检查
检查新集群健康状态、节点信息、索引状态
curl -XGET "http://10.200.112.149:9200/_cluster/health?pretty"
curl -XGET "http://10.200.112.149:9200/_cat/nodes?v"
curl -XGET "http://10.200.112.149:9200/_cat/indices?v"
2、数据迁移
1、均衡开启和节点下线
开启均衡和源集群节点数据下线,数据会迁移到目标集群
curl -XPUT "http://172.31.2.84:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{"transient": {"cluster.routing.allocation.exclude._ip": "10.200.112.149,10.200.112.151,10.200.112.153","cluster.routing.rebalance.enable" : "all"}
}'或者
curl -XPUT "http://172.31.2.84:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{"transient": {"cluster.routing.allocation.exclude._name": "es2.gj1.china-job.cn,es1.gj1.china-job.cn,es3.gj1.china-job.cn","cluster.routing.rebalance.enable" : "all"}
}'
2、检查数据迁移状态,节点迁移结束标准:
curl -X GET '172.31.2.84:9200/_nodes/10.200.112.149/stats/indices/docs?pretty'
curl -X GET '172.31.2.84:9200/_nodes/10.200.112.151/stats/indices/docs?pretty'
curl -X GET '172.31.2.84:9200/_nodes/10.200.112.153/stats/indices/docs?pretty'
源集群所有节点数据迁移完成,执行结果都为:
"indices" : {"docs" : {"count" : 0,"deleted" : 0}}
3、参数调整
迁移中,可能有IO,网络资源不足情况,可以做一些调整https://www.elastic.co/guide/en/elasticsearch/reference/6.5/shards-allocation.html
- cluster.routing.allocation.node_concurrent_incoming_recoveries
- cluster.routing.allocation.node_concurrent_outgoing_recoveries
- cluster.routing.allocation.node_concurrent_recoveries
- cluster.routing.allocation.node_initial_primaries_recoveries
curl -XPUT "http://172.31.2.84:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{"transient": {"cluster.routing.allocation.cluster_concurrent_rebalance": 6,"cluster.routing.allocation.node_concurrent_recoveries": 10}
}'
4、调整恢复速度
如果索引恢复速度慢,可以对恢复速度进行修改:https://www.elastic.co/guide/en/elasticsearch/reference/6.5/recovery.html
- indices.recovery.max_bytes_per_sec
curl -XPUT "http://172.31.2.84:9200/_cluster/settings?flat_settings=true&pretty" -H 'Content-Type: application/json' -d'
{"transient": {"indices.recovery.max_bytes_per_sec": "60mb"}
}'
三、更改客户端连接到目标集群节点
将所有连接迁移ES集群的客户端应用ES集群连接配置,由老集群节点调整为新集群节点信息,即:“10.200.112.149”, “10.200.112.151”,“10.200.112.153” 变更为 “172.31.2.84”, “172.31.0.147”,“172.31.0.94”
客户端切换完成后,检查客户端服务与ES集群连接是否正常,对ES的读写是否异常。
四、更改新节点配置文件,并重启(业务需要停止读写)
cluster.initial_master_nodes: [“es1.gj2.china-job.cn”,“es2.gj2.china-job.cn”,“es3.gj2.china-job.cn”,“es3.gj1.china-job.cn”]
discovery.zen.ping.unicast.hosts: [“10.200.112.149”, “10.200.112.151”,“10.200.112.153”,“172.31.2.84”, “172.31.0.147”,“172.31.0.94”]
五、源集群关闭
1、先关闭源集群非master节点
同时检查当前运行集群状态是否为green;如果出现异常,停止操作,恢复当前关闭节点。
| 操作顺序 | 操作动作 |
|---|---|
| 1 | 10.200.112.151 |
| 2 | 10.200.112.153 |
2、最后关闭源集群master节点
[10.200.112.149, 10.200.112.151,10.200.112.153,172.31.2.84, 172.31.0.147,172.31.0.94]
同时检查当前运行集群状态是否为green。如果出现异常,可以配置discovery.zen.ping.unicast.hosts: [“10.200.112.149”, “10.200.112.151”,“10.200.112.153”,“172.31.2.84”, “172.31.0.147”,“172.31.0.94”],恢复当前关闭节点。
| 操作顺序 | 操作动作 |
|---|---|
| 1 | 10.200.112.149 |
3、检查
关闭所有源集群节点后,检查目标集群是否健康,索引数据是否正常;如果没有问题,分离成功,数据迁移完毕。
六、更改新节点配置文件,并重启
cluster.initial_master_nodes: [“es1.gj2.china-job.cn”,“es2.gj2.china-job.cn”,“es3.gj2.china-job.cn”]
discovery.zen.ping.unicast.hosts: [“172.31.2.84”, “172.31.0.147”,“172.31.0.94”]
七、恢复目标集群配置正常
1、取消节点下线配置
curl -XPUT "http://172.31.2.84:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{"transient": {"cluster.routing.allocation.exclude._name": null}
}'curl -XPUT "http://172.31.2.84:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{"transient": {"cluster.routing.allocation.cluster_concurrent_rebalance": null,"cluster.routing.allocation.node_concurrent_recoveries": null}
}'
八、可能风险
- 在迁移数据时,ES节点物理机出现异常,丢失数据
- 网络出现异常,出现脑裂
相关文章:
Elasticsearch7.x 集群迁移文档
一、集群样例信息 集群名称:escluster-ali-test 1、源集群:(source_cluster) 节点IP节点名称节点角色是否为master节点10.200.112.149es2.gj1.china-job.cndata,master是10.200.112.151es1.gj1.china-job.cndata,master否10.200.112.153es…...
高空抛物检测算法的应用场景解析
高空抛物事件频发,对公众安全构成严重威胁。无论是居民区还是商业中心,从高层建筑中丢弃物品都可能导致人员伤亡和财产损失。传统的监控手段多以事后追溯为主,无法在事发时及时预警和干预。为应对这一难题,视觉分析技术的发展为高…...
Leetcode 无重复字符的最长子串
算法思想: 滑动窗口:通过 start 和 end 来维护一个滑动窗口,start 指向当前窗口的起点,end 是当前窗口的末尾。滑动窗口中的字符都是无重复的。哈希表 charIndexMap:用于存储每个字符及其最近一次出现的位置。更新起始…...
用命令行的方式启动.netcore webapi
用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为: dotnet 项目启动文件.dll --urls"ht…...
Spring6详细学习笔记(IOC+AOP)
一、Spring系统架构介绍 1.1、定义 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。Spring官网 Spring是一款主流的Java EE 轻量级开源框架,目的是用于简化Java企业级引用的开发难度和开发周期。从简单性、可测试性和松耦…...
@RequestMapping 基于哪个库进行通信
RequestMapping 是 Spring Framework 中用于处理 HTTP 请求的注解,主要用于定义控制器方法的请求映射。它并不直接基于某个特定的通信库,而是依赖于 Spring MVC 框架的核心功能。 1. Spring MVC RequestMapping 是 Spring MVC 的一部分,Spr…...
GPIO(General Purpose Input/Output)输入/输出
GPIO最简单的功能是输出高低电平;GPIO还可以被设置为输入功能,用于读取按键等输入信号;也可以将GPIO复用成芯片上的其他外设的控制引脚。 STM32F407ZGT6有8组IO。分别为GPIOA~GPIOH,除了GPIOH只有两个IO,其余每组IO有…...
两个pdf合并成一个pdf,这些pdf合并小技巧了解下
在日常工作和学习中,我们经常会遇到需要将多个PDF文件合并成一个文件的情况。这不仅可以提高文件管理的效率,还能让信息展示更加集中和便捷。今天就来给大家分享几种非常简单便捷的PDF合并小技巧,一起来学习下吧。 方法一:WPS WP…...
Transformer学习(2):自注意力机制
回顾 注意力机制 自注意力机制 自注意力机制中同样包含QKV,但它们是同源(Q≈K≈V),也就是来自相同的输入数据X,X可以分为 ( x 1 , x 2 , . . , x n ) (x_1,x_2,..,x_n) (x1,x2,..,xn)。 而通过输入嵌入层(input embedding),…...
分类预测|基于粒子群优化径向基神经网络的数据分类预测Matlab程序PSO-RBF 多特征输入多类别输出 含基础RBF程序
分类预测|基于粒子群优化径向基神经网络的数据分类预测Matlab程序PSO-RBF 多特征输入多类别输出 含基础RBF程序 文章目录 一、基本原理1. 粒子群优化算法(PSO)2. 径向基神经网络(RBF)PSO-RBF模型流程总结 二、实验结果三、核心代码…...
【React】Vite 构建 React
项目搭建 vite 官网:Vite 跟着文档走即可,选择 react ,然后 ts swc。 着重说一下 package-lock.json 这个文件有两个作用: 锁版本号(保证项目在不同人手里安装的依赖都是相同的,解决版本冲突的问题&am…...
算法刷题:300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
300. 最长递增子序列 1.dp定义:dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度 2.递推公式:if (nums[i] > nums[j]) dp[i] max(dp[i], dp[j] 1); 注意这里不是要dp[i] 与 dp[j] 1进行比较,而是我们要取dp[j] 1的最大值…...
【linux】一种基于虚拟串口的方式使两个应用通讯
在Linux系统中,两个应用之间通过串口(Serial Port)进行通信是一种常见的通信方式,特别是在嵌入式系统、工业自动化等领域。串口通信通常涉及到对串口设备的配置和读写操作。以下是一个基本的步骤指南,说明如何在Linux中…...
并行程序设计基础——并行I/O(3)
目录 一、多视口的并行文件并行读写 1、文件视口与指针 1.1 MPI_FILE_SET_VIEW 1.2 MPI_FILE_GET_VIEW 1.3 MPI_FILE_SEEK 1.4 MPI_FILE_GET_POSTION 1.5 MPI_FILE_GET_BYTE_OFFSET 2、阻塞方式的视口读写 2.1 MPI_FILE_READ 2.2 MPI_FILE_WRITE 2.3 MPI_FILE_READ_…...
性能测试-jmeter脚本录制(十五)
一、jmeter脚本录制(不推荐)简介: 二、jmeter脚本录制步骤 1、添加代理服务器和线程组 2、配置http代理服务器的端口和目标线程组 3修改本机浏览器代理 4、点击启动 5、每次操作页面前,修改提示文字...
关系型数据库 - MySQL I
MySQL 数据库 MySQL 是一种关系型数据库。开源免费,并且方便扩展。在 Java 开发中常用于保存和管理数据。默认端口号 3306。 MySQL 数据库主要分为 Server 和存储引擎两部分,现在最常用的存储引擎是 InnoDB。 指令执行过程 MySQL 数据库接收到用户指令…...
解锁AI写作新境界:5款工具让你的论文创作事半功倍
在这个数字化飞速发展的时代,人工智能(AI)已经不再是科幻小说中的幻想,而是实实在在地融入了我们的日常生活。特别是在学术领域,AI技术的介入正在改变传统的论文写作方式。你是否还在为撰写论文而熬夜苦战?…...
一文读懂多组学联合分析产品在医学领域的应用
疾病的发生和发展通常涉及多个层面的生物学过程,包括基因表达、蛋白质功能、代谢物变化等。传统的单一组学研究只能提供某一层面的信息,而多组学关联分析能够综合多个层面的数据,提供更全面、更深入的疾病理解。例如,通过分析患者…...
js react 笔记 2
起因, 目的: 记录一些 js, react, css 1. 生成一个随机的 uuid // 需要先安装 crypto 模块 const { randomUUID } require(crypto);const uuid randomUUID(); console.log(uuid); // 输出类似 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d 2. 使用 props, 传递参数…...
快速使用react 全局状态管理工具--redux
redux Redux 是 JavaScript 应用中管理应用状态的工具,特别适用于复杂的、需要共享状态的中大型应用。Redux 的核心思想是将应用的所有状态存储在一个单一的、不可变的状态树(state tree)中,状态只能通过触发特定的 action 来更新…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
