Elasticsearch集群跨机房迁移方案
目录
背景介绍
1 A机房elasticsearch集群基本情况
2 在B机房完成elasticsearch集群扩容
2.1 扩容规划
2.2 启动非master节点
2.3 通知业务修改集群连接地址
3 将索引数据排空迁移至B机房
4 下线A机房data节点
5 master节点切割
5.1 关闭集群自动均衡
5.2 从节点pending master切割
5.3 主节点required master切割
6 恢复集群配置
7 修改B机房节点配置,不需要重启
背景介绍
因为业务调整,我司有一批服务器需要从A机房退役迁移至B机房。但是因为涉及业务量太大,为了降低对业务的影响,本次迁移通过先扩容,再缩容的方式完成迁移。本次es集群迁移以elasticsearch集群介绍为例,所有迁移流程均有实践操作。
1 A机房elasticsearch集群基本情况
A机房elasticsearch集群一共10个节点,其中7个节点为data角色,其余3个节点为master/data角色合装,discovery.zen.ping.unicast.hosts配置为三个master节点:10.0.0.1,10.0.0.2,10.0.0.3
network.host | node.name | node.data | node.master |
---|---|---|---|
10.0.0.1 | node1 | true | true |
10.0.0.2 | node2 | true | true |
10.0.0.3 | node3 | true | true |
10.0.0.4 | node4 | true | flase |
10.0.0.5 | node5 | true | flase |
10.0.0.6 | node6 | true | flase |
10.0.0.7 | node7 | true | flase |
10.0.0.8 | node8 | true | flase |
10.0.0.9 | node9 | true | flase |
10.0.0.10 | node10 | true | flase |
2 在B机房完成elasticsearch集群扩容
2.1 扩容规划
B机房elasticsearch集群规划一共10个节点,其中7个节点为data角色,余下3个节点规划为单独master角色,discovery.zen.ping.unicast.hosts配置为六个master节点:10.0.0.1,10.0.0.2,10.0.0.3,20.1.1.1,20.1.1.2,20.1.1.3
注:B机房将master和data角色分离,是为了减轻合装给master带来的压力,导致集群出现不稳定性。
network.host | node.name | node.data | node.master | 是否启动 |
---|---|---|---|---|
20.1.1.1 | node11 | flase | true | 否 |
20.1.1.2 | node12 | flase | true | 否 |
20.1.1.3 | node13 | flase | true | 否 |
20.1.1.4 | node14 | true | flase | 是 |
20.1.1.5 | node15 | true | flase | 是 |
20.1.1.6 | node16 | true | flase | 是 |
20.1.1.7 | node17 | true | flase | 是 |
20.1.1.8 | node18 | true | flase | 是 |
20.1.1.9 | node19 | true | flase | 是 |
20.1.1.10 | node20 | true | flase | 是 |
2.2 启动非master节点
只启动data节点,用于数据的迁移。master节点服务暂时不启动。
ssh 20.1.1.4 -C 'su - es -c "cd /home/es/software/elasticsearch/bin;sh elasticsearch -d"' ssh 20.1.1.5 -C 'su - es -c "cd /home/es/software/elasticsearch/bin;sh elasticsearch -d"' ssh 20.1.1.6 -C 'su - es -c "cd /home/es/software/elasticsearch/bin;sh elasticsearch -d"' ssh 20.1.1.7 -C 'su - es -c "cd /home/es/software/elasticsearch/bin;sh elasticsearch -d"' ssh 20.1.1.8 -C 'su - es -c "cd /home/es/software/elasticsearch/bin;sh elasticsearch -d"' ssh 20.1.1.9 -C 'su - es -c "cd /home/es/software/elasticsearch/bin;sh elasticsearch -d"' ssh 20.1.1.10 -C 'su - es -c "cd /home/es/software/elasticsearch/bin;sh elasticsearch -d"'
2.3 通知业务修改集群连接地址
因为A机房机器下线后,只剩下B机房机器可以连通,所以连接地址需要修改为B机房node.data节点。不连接master节点原因,只是为了减轻master节点负担。
20.1.1.4:9200,20.1.1.5:9200,20.1.1.6:9200,20.1.1.7:9200,20.1.1.8:9200,20.1.1.9:9200,20.1.1.10:9200
3 将索引数据排空迁移至B机房
注:跨机房数据迁移,需要提前考虑机房间带宽情况。防止集群带宽速率过高,影响到其他业务传输。
1、先检查集群是否已经有节点数据被排空 curl -XGET "http://集群任意IP:9200/_cluster/settings?pretty" #curl命令可以在kibana替换为如下命令: get /_cluster/settings?pretty 2、如果1查询结果有排空数据的节点,接下来操作需要做追加。无则忽略。 curl -XPUT "http://集群任意IP:9200/_cluster/settings?pretty" -H 'Content-Type:application/json' -d '{"persistent":{"cluster.routing.allocation.exclude._ip" : "10.0.0.1,10.0.0.2,10.0.0.3,10.0.0.4,10.0.0.5,10.0.0.6,10.0.0.7,10.0.0.8,10.0.0.9,10.0.0.10"},"transient":{"cluster.routing.allocation.exclude._ip":"10.0.0.1,10.0.0.2,10.0.0.3,10.0.0.4,10.0.0.5,10.0.0.6,10.0.0.7,10.0.0.8,10.0.0.9,10.0.0.10"}}' #curl命令可以在kibana替换为如下命令: PUT /_cluster/settings //排空数据节点,填 的老节点的ip {"persistent" :{"cluster.routing.allocation.exclude._ip" : "10.0.0.1,10.0.0.2,10.0.0.3,10.0.0.4,10.0.0.5,10.0.0.6,10.0.0.7,10.0.0.8,10.0.0.9,10.0.0.10"},"transient" :{"cluster.routing.allocation.exclude._ip" : "10.0.0.1,10.0.0.2,10.0.0.3,10.0.0.4,10.0.0.5,10.0.0.6,10.0.0.7,10.0.0.8,10.0.0.9,10.0.0.10"} } 3、检查数据排空进度 curl -XGET "http://集群任意IP:9200/_cat/shards?v&pretty&s=state:desc" #curl命令可以在kibana替换为如下命令: get /_cat/shards?v&pretty&s=state:desc 4、调整如下参数,可以加快跨机房数据迁移速度。 #每秒传输速度,默认40Mb PUT /_cluster/settings {"persistent" :{"indices.recovery.max_bytes_per_sec" : "200mb"},"transient" :{"indices.recovery.max_bytes_per_sec" : "200mb"} } #恢复线程数,默认是2 PUT /_cluster/settings {"persistent": {"cluster.routing.allocation.node_concurrent_recoveries": "5"},"transient": {"cluster.routing.allocation.node_concurrent_recoveries": "5"} } #当前节点在进行主分片恢复时的数量,默认是4 PUT /_cluster/settings {"persistent": {"cluster.routing.allocation.node_initial_primaries_recoveries": "5"},"transient": {"cluster.routing.allocation.node_initial_primaries_recoveries": "5"} }
4 下线A机房data节点
数据排空后,下线A机房只含data角色的节点。含有master角色的节点需要放在切割阶段下线。
ps -ef|grep org.elasticsearch.bootstrap.Elasticsearch|grep -v grep|awk '{print $2}'|xargs kill -9
5 master节点切割
5.1 关闭集群自动均衡
1、关闭集群自动均衡。用于启时候,禁自动均衡 curl -XPUT "http://集群任意IP:9200/_cluster/settings?pretty" -H 'Content-Type:application/json' -d '{"persistent" :{"cluster.routing.rebalance.enable": "none"},"transient" :{"cluster.routing.rebalance.enable": "none"} }' #curl命令可以在kibana替换为如下命令: PUT /_cluster/settings {"persistent": {"cluster.routing.rebalance.enable": "none"},"transient": {"cluster.routing.rebalance.enable": "none"} } 2、检查群自动均衡是否关闭 curl -XGET "http://集群任意IP:9200/_cluster/settings?pretty" #curl命令可以在kibana替换为如下命令: get/_cluster/settings?pretty
5.2 从节点pending master切割
排除掉required master节点,就是pending master。确认主节点required master方法如下
curl http://集群任意IP:9200/_cat/master?v #curl命令可以在kibana替换为如下命令: get /_cat/master?v
假如:10.0.0.3为required master节点:
第一步:停10.0.0.1,起20.1.1.1
ssh 10.0.0.1 -C 'ps -ef|grep org.elasticsearch.bootstrap.Elasticsearch|grep -v grep|awk '{print $2}'|xargs kill -9' ssh 20.1.1.1 -C 'su - es -c "cd /home/es/software/elasticsearch/bin;sh elasticsearch -d"'
第二步:停10.0.0.2,起20.1.1.2
ssh 10.0.0.2 -C 'ps -ef|grep org.elasticsearch.bootstrap.Elasticsearch|grep -v grep|awk '{print $2}'|xargs kill -9' ssh 20.1.1.2 -C 'su - es -c "cd /home/es/software/elasticsearch/bin;sh elasticsearch -d"'
5.3 主节点required master切割
ssh 10.0.0.3 -C 'ps -ef|grep org.elasticsearch.bootstrap.Elasticsearch|grep -v grep|awk '{print $2}'|xargs kill -9'ssh 20.1.1.3 -C 'su - es -c "cd /home/es/software/elasticsearch/bin;sh elasticsearch -d"'
检查master是否已经全部迁移至B机房,A机房master是否已经全部下线
curl http://集群任意IP:9200/_cat/nodes?v #curl命令可以在kibana替换为如下命令: get /_cat/nodes?v
6 恢复集群配置
1、打开集群自动均衡 curl -XPUT "http://集群任意IP:9200/_cluster/settings?pretty" -H 'Content-Type:application/json' -d '{"persistent" :{"cluster.routing.rebalance.enable": "all"}}' curl -XPUT "http://集群任意IP:9200/_cluster/settings?pretty" -H 'Content-Type:application/json' -d '{"transient" :{"cluster.routing.rebalance.enable": "all"}}' #curl命令可以在kibana替换为如下命令: PUT /_cluster/settings {"persistent": {"cluster.routing.rebalance.enable": "ALL"},"transient": {"cluster.routing.rebalance.enable": "ALL"} }2、检查集群自动均衡是否打开 curl -XGET "http://集群任意IP:9200/_cluster/settings?pretty" #curl命令可以在kibana替换为如下命令: get /_cluster/settings?pretty
7 修改B机房节点配置,不需要重启
注:此处只需要elasticsearch.yml配置文件,删除A机房相关的节点信息就可以。
修改elasticsearch.yml配置文件中discovery.zen.ping.unicast.hosts配置项,将 10.0.0.1,10.0.0.2,10.0.0.3,20.1.1.1,20.1.1.2,20.1.1.3 修改为: 20.1.1.1,20.1.1.2,20.1.1.3
我的微信公众号同步发表了这一篇文章,欢迎各位小伙伴阅读加关注。
Elasticsearch集群跨机房迁移实战方案背景介绍因为业务调整,我司有一批服务器需要从A机房退役迁移至B机房。但是因为涉及业务量太大,为了降低对业务的https://mp.weixin.qq.com/s?__biz=MzA5MjkyNjU5MQ==&mid=2247483706&idx=1&sn=617ea2b0a71cd0b4e59d7f3d619d1d3c&chksm=9064e62aa7136f3c7bd2634954a28685a80f597cbaecfecb51b4517e67b80042f21f55805453#rd
Elasticsearch集群跨机房迁移方案相关推荐
- 同程旅行Hadoop集群跨机房迁移实践
本文作者:郭飞.现任同程旅行技术专家. Apache Hadoop.Hive.Spark contributor 背景 随着同程旅行业务和数据规模越来越大,原有的机房不足以支撑未来几年的扩容需求,同 ...
- 滴滴 Elasticsearch 集群跨版本升级与平台重构之路
分享嘉宾:赵情融 滴滴专家工程师 编辑整理:王洪达 出品平台:DataFunTalk 导读:前不久,滴滴ES团队将维护的30多个ES集群,3500多个ES节点,8PB的数据,从2.3.3跨大版本无缝升 ...
- es集群搭建_滴滴Elasticsearch 集群跨版本升级与平台重构之路
前不久,滴滴ES团队将维护的30多个ES集群,3500多个ES节点,8PB的数据,从2.3.3跨大版本无缝升级到6.6.1.在对用户查询写入基本零影响和改动的前提下,解决了ES跨大版本协议不兼容.文件 ...
- Elasticsearch集群:搭建集群环境
Elasticsearch集群:搭建集群环境 1. 创建相应目录 在/root/es-cluster目录下创建以下目录 mkdir -p es01/data mkdir -p es01/logsmkd ...
- 完美避坑!记一次Elasticsearch集群迁移架构实战
作者介绍 李猛(ynuosoft),Elastic-stack产品深度用户,ES认证工程师,2012年接触Elasticsearch,对Elastic-Stack开发.架构.运维等方面有深入体验,实践 ...
- 数据中心安全风控_平安银行Hadoop集群跨数据中心迁移项目告捷项目骨干专访
Hadoop集群跨数据中心迁移 平安银行东莞数据中心建成 平安银行科技中心零售大数据团队 平安银行科技中心科技运营中心 群迁告捷 经过平安银行科技运营中心和大数据团队的不懈努力,作为平安银行AI战略转 ...
- hbase集群 数据写入_HBase神器 | BDSHBase集群之间数据迁移同步的利器
BDS定位 BDS针对开源HBase目前存在的同步迁移痛点,自主研发的一套数据迁移的平台,用于HBase集群的无缝迁移.主备容灾.异地多活.在线离线业务分离.HBase数据归档.对接RDS实时增量数据 ...
- 贝壳金服 TiDB 在线跨机房迁移实践
2019独角兽企业重金招聘Python工程师标准>>> 作者介绍 : 李振环,贝壳金服数据基础架构负责人,目前负责数据平台和企业级数据仓库开发. 公司介绍 贝壳金服是专注居住场景的金 ...
- 400+节点的 Elasticsearch 集群运维
作者:Anton Hägerstrand 翻译:杨振涛 Meltwater每天要处理数百万量级的帖子数据,因此需要一种能处理该量级数据的存储和检索技术. 从0.11.X 版本开始我们就已经是Elast ...
最新文章
- JS ES6 实用笔记
- 挖矿让英伟达多赚了近3亿美元,老黄:又创纪录了
- 【UWB】公式推导计算坐标值
- 步步理解 JAVA 泛型编程 – 共三篇
- 两条线段的夹角 cesium_《原本》命题1.10 一条线段可以被分成两条相等的线段
- Hadoop2.6.0的Intellij Idea 插件
- java判断tcp是否阻塞_connect()调用在TCP堆栈中是非阻塞的(java)是什么意思
- cpp知识汇总(1) 指针vs引用、static、const
- 箱线图怎么判断异常值_极简统计学---箱线图[2]
- Python Frozenset()
- 7.29~8.2 广州软件所-实习工作日记
- 使用ViewFlipper实现广告图片的自动轮播的效果
- 在CentOS下面编译WizNote Qt Project
- Ember 从0到1
- 常微分方程机敏问答[3] #20210622
- UVA1386 Cellular Automaton
- 爬虫-百度安全验证-图片旋转验证-深度学习解决方案
- ctcpejmu单词_微生物英文单词
- 全球及中国TNFα抑制剂行业竞争调查分析及项目可行性研究报告2021-2027年
- 如何打开安卓模拟器里的开发者选项
热门文章
- python 列表循环 [i for i in array[0:] if i>2]在快速排序中的使用
- 海阔天空的游戏出海,HMS生态提供的风帆与通路
- 文件在上传过程中发生异常服务器端,文件上传服务器端
- 互动媒体创意编程——自画像
- 全球与中国1,1‘-联-2-萘酚市场深度研究分析报告(2022)
- 韩锋oracle 简介,行业观察:Oracle自治服务与私有云的重大升级与解读
- python datatime简单计算工龄
- oracle共享锁和排他锁
- SPSS在教育行业中的应用
- 宝塔 mysql无法启动 修复