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

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.153es3.gj1.china-job.cndata,master
2、目标集群:(target_cluster)
节点IP节点名称节点角色是否为master节点
172.31.2.84es1.gj2.china-job.cndata,master
172.31.0.147es2.gj2.china-job.cndata,master
172.31.0.94es3.gj2.china-job.cndata,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;如果出现异常,停止操作,恢复当前关闭节点。

操作顺序操作动作
110.200.112.151
210.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”],恢复当前关闭节点。

操作顺序操作动作
110.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}
}'

八、可能风险

  1. 在迁移数据时,ES节点物理机出现异常,丢失数据
  2. 网络出现异常,出现脑裂

相关文章:

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)&#xff0c…...

分类预测|基于粒子群优化径向基神经网络的数据分类预测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 来更新…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂&#xff…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求&#xff…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...