es实战es集群节点迁移与缩容(代码片段)

顧棟 顧棟     2023-01-02     565

关键词:

ES集群节点迁移与缩容

文章目录

master节点迁移

场景一

集群上的master部署情况,一台机器上同时部署了纯master角色和纯data角色的两个ES节点

  1. 申请新机器DEF,为新机器申请域名。
  2. 在新机器DEF上各自部署纯data角色的ES节点,将所有节点的配置文件elasticsearch.yml中的配置项discovery.zen.ping.unicast.hosts修改为ABCDEF。
  3. 将数据迁移到DEF中的数据ES节点中。同时客户端修改链接地址为DEF。
  4. 数据迁移完毕后,关闭一个非active master的ES节点,在DEF中选择一个启动纯master角色的ES节点。
  5. 重复步骤4,直到只剩下非active master的ES节点未调整。
  6. 关闭active master的ES节点,启动新机器中的纯master角色的ES节点,新的active master会在DEF中选举产生。
  7. 确认用户客户端链接地址修改完毕后,下线ABC机器。将DEF中ES全部节点的配置文件elasticsearch.yml中的配置项discovery.zen.ping.unicast.hosts修改为DEF。

场景二

集群上的master部署情况,机器上的master角色是与data角色混在一个ES节点中

  1. 申请新机器DEF,为新机器申请域名。
  2. 在新机器DEF上各自部署纯data角色的ES节点,将所有节点的配置文件elasticsearch.yml中的配置项discovery.zen.ping.unicast.hosts修改为ABCDEF。
  3. 将数据迁移到DEF中的数据ES节点中。同时客户端修改链接地址为DEF。
  4. 数据迁移完毕后,关闭一个非active master的ES节点,在DEF中选择一个启动纯master角色的ES节点。
  5. 重复步骤4,直到只剩下非active master的ES节点未调整。
  6. 关闭active master的ES节点,启动新机器中的纯master角色的ES节点,新的active master会在DEF中选举产生。
  7. 确认用户客户端链接地址修改完毕后,下线ABC机器。将DEF中ES全部节点的配置文件elasticsearch.yml中的配置项discovery.zen.ping.unicast.hosts修改为DEF。

场景三

集群上的master部署情况,纯master角色ES节点和纯Data角色ES节点部署在不同的服务器上

  1. 申请新机器GHIJ,为新机器申请域名。
  2. 在新机器GHIJ上各自部署纯data角色的ES节点,将所有节点的配置文件elasticsearch.yml中的配置项discovery.zen.ping.unicast.hosts修改为DEFGHI。
  3. 将数据迁移到GHIJ中的dataES节点中。同时客户端修改链接地址为GHIJ。
  4. 数据迁移完毕后,关闭一个非active master的ES节点,在GHI中选择一个启动纯master角色的ES节点。
  5. 重复步骤4,直到只剩下非active master的ES节点未调整。
  6. 关闭active master的ES节点,启动新机器中的纯master角色的ES节点,新的active master会在GHI中选举产生。
  7. 确认用户客户端链接地址修改完毕后,下线ABCM机器。将GHIJ中ES全部节点的配置文件elasticsearch.yml中的配置项discovery.zen.ping.unicast.hosts修改为GHI。

data节点迁移

  1. 申请新机器,为新机器申请域名。
  2. 在新机器各自部署纯data角色的ES节点。
  3. 检查是否需要更改ES客户端的链接地址。
  4. 将需要迁移data节点的所有索引数据迁移到新机器。
  5. 下线需要迁移的机器。

数据迁移操作

主要使用配置项cluster.routing.allocation.exclude._ip来实现数据迁移。

1、查询集群原来的配置

检查cluster.routing.allocation.exclude._ip配置项的值,如果没有,说明原来没有排除节点。

curl -X GET "http://ip:port/_cluster/settings?pretty"

2、清空节点数据

清空数据节点的数据,ip:集群任意节点IP,port:http服务端口号,ip1,ip2:需要排除数据的IP,将原来配置需要排除数据的节点IP加上本次排除数据的节点IP,以逗号分隔。

curl -X PUT "http://ip:port/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'

  "persistent" :
      "cluster.routing.allocation.exclude._ip" : "ip1,ip2"
   
'

3、检查是否排空数据

检查数据节点上是否存在数据,结果中的IP列没有需要下线的IP,说明数据已经排尽,满足机器下线条件了。有的集群分片可能很多,可以将结果输出到文件查询。

curl -X GET "http://ip:port/_cat/shards?v&pretty&s=ip:desc"
index               shard prirep state   docs  store ip            node
config_s-20211108 1     r      STARTED    0   130b 192.168.1.1 es03-prd
config_s-20211108 2     r      STARTED    0   130b 192.168.1.1 es03-prd
config_s-20211108 0     p      STARTED    0   130b 192.168.1.1 es03-prd
.monitoring-data-2  0     r      STARTED    5 15.7kb 192.168.1.1 es03-prd
config_s-20211107 1     r      STARTED    0   130b 192.168.1.1 es03-prd
config_s-20211107 2     r      STARTED    0   130b 192.168.1.1 es03-prd
config_s-20211107 0     p      STARTED    0   130b 192.168.1.1 es03-prd

迁移原则

  • 清理集群中的过期索引与过期数据
  • 优先扩容data角色的节点,迁移集群中的数据
  • 确认客户端的链接地址不是要下线的机器
  • 迁移非active的master角色的节点
  • 切主,将active的master节点进行关闭,在新master角色的节点中完成新的active master选主。
  • 刷新集群上的相关配置
  • 在确认所有事项之后,才能下线旧机器

缩容前置检查项

  1. index的副本分片数量的合理性

    副本数 + 1 ≤ +1\\leq +1data角色的节点数

  2. 单个ES数据节点的分片数量的合理性

    官方的默认值是每个数据节点的分片数 ≤ \\leq 1000,

    https://www.elastic.co/guide/en/elasticsearch/reference/6.7/misc-cluster.html#cluster-shard-limit

  3. 大分片的数量

  4. 数据生命周期的调整

  5. 单机器多数据节点的 cluster.routing.allocation.same_shard.host 配置的调整,最佳为true。

    允许执行检查,以防止基于主机名和主机地址在单个主机上分配同一分片的多个实例。 默认为false,表示默认情况下不执行任何检查。 仅当在同一台计算机上启动多个节点时,此设置才适用。

es7.6.2集群迁移(从一套es集群迁移数据到另一套集群)(代码片段)

有时有需要从ES集群中去除多个节点的需求,比如迁移一套ES集群到另外一套ES集群,这时可以先将新的ES节点加入到现有集群里,再将老ES节点下线。一实验环境 ​​​​​二实验步骤2.1集群扩容-添加新节点可参考ES... 查看详情

es7.6.2集群迁移(从一套es集群迁移数据到另一套集群)(代码片段)

有时有需要从ES集群中去除多个节点的需求,比如迁移一套ES集群到另外一套ES集群,这时可以先将新的ES节点加入到现有集群里,再将老ES节点下线。一实验环境 ​​​​​二实验步骤2.1集群扩容-添加新节点可参考ES... 查看详情

es版本升级并迁移数据(代码片段)

ES6.2.3(3节点)460G数据迁移到ES7.4.1(5节点)目标现在有一个ES集群(3节点,3个节点既是master也是data),存储的数据约460G。现在需要升级ES版本为7.4.1,新集群采用12个节点(4个master,8个data节点)演练... 查看详情

es版本升级并迁移数据(代码片段)

ES6.2.3(3节点)460G数据迁移到ES7.4.1(5节点)目标现在有一个ES集群(3节点,3个节点既是master也是data),存储的数据约460G。现在需要升级ES版本为7.4.1,新集群采用12个节点(4个master,8个data节点)演练... 查看详情

es实战如何进行集群规划(代码片段)

文章目录集群规划系统层1.操作系统2.内存、CPU、磁盘3.JDK4.操作系统参数5.生产模式启动强制校验项6.配置LinuxOOMKiller7.TCP参数修改8.vm相关9.禁用透明大页(TransparentHugepages)集群层1.影响因素2.部署架构节点层索引层其他客... 查看详情

es实战节点数据的清空(代码片段)

节点数据清空处理文章目录节点数据清空处理1、查询集群原来的配置2、清空节点数据3、检查是否排空数据4、数据清空失败场景5、加快分片迁移1、查询集群原来的配置curl-XGET"http://ip:port/_cluster/settings?pretty"出于某种原因&#... 查看详情

es版本升级并迁移数据(代码片段)

ES6.2.3(3节点)460G数据迁移到ES7.4.1(5节点)目标现在有一个ES集群(3节点,3个节点既是master也是data),存储的数据约460G。现在需要升级ES版本为7.4.1,新集群采用12个节点(4个master,8个data节点)演练... 查看详情

查看索引在哪些es集群节点上的命令(代码片段)

用途:迁移数据到其他节点上的时候需要用这个GET/_cat/shardsGET/_cat/shards?h=n 查看详情

logstash迁移es数据(代码片段)

任务:从es集群a,b,c。。。把数据迁移到新es集群d,e,f  迁移数据只是复制需要额外3台服务器,分别部署新es集群d,e,f 和 单点logstash是迁移通道和kibana查询工具  (集群es复制到单点es,没试过,改天试一下)... 查看详情

elk日志分析平台之elasticsearch(代码片段)

目录elasticsearch简介一ES安装与集群部署1单节点elasticsearch安装2搭建elasticsearch集群二elasticsearch集群监控--可视化1elasticsearch-head插件2cerebro插件三ES节点角色1elasticsearch节点优化方式2设定集群中某节点不存储数据,role角色无data... 查看详情

es实战索引的close(代码片段)

索引的close与openclose命令POSTindexName1/_closePOSTindexName1,indexName2/_closeopen命令POSTindexName1/_openPOSTindexName1,indexName2/_openclose索引会释放占用的虚拟机内存和对应的Lucene占用的机器内存,降低服务压力。同时也会带来弊端排除数据节点... 查看详情

es实战使用hdfs插件实现索引快照和恢复(代码片段)

文章目录SnapshotAndRestoreHadoopHDFSRepositoryPlugin使用前提查看插件创建仓库查看仓库创建快照查看快照进度恢复快照查看快照的状态删除快照跨集群使用SnapshotAndRestore快照和恢复有以下作用数据的备份数据的迁移版本升级…下面介绍... 查看详情

elasticsearch核心技术与实战(代码片段)

1、ES概念ElasticSearch是一个分布式,高性能、高可用、可伸缩的搜索和分析系统,支持海量数据搜索与分析,可以用于电商网站、门户网站、企业IT系统等各种场景下的搜索引擎,也可以用于对海量的数据进行近实时(秒级)的数... 查看详情

运维实战容器部分kubernetes集群部署(代码片段)

运维实战容器部分Kubernetes集群部署简介设计架构安装部署Pod管理Service两种网络类型Pod扩容与缩容更新Pod镜像Pod回滚资源清单Pod生命周期Init容器的作用容器探针重启策略Pod的生命控制器概念解释ReplicationController/ReplicaSetDeploymentDae... 查看详情

docker搭建redis三主三从及扩缩容4主4从实战(代码片段)

文章目录三主三从搭建1.拉镜像redis:6.0.82.生产6个实例3.进入任意一台机器:以node1为例4.查看集群状态PS1.采用集群方式连接-cPS2.查看集群信息扩容为四主四从1.再生产2个实例2.将新增的6387节点作为master加入集群3.检查集群情况... 查看详情

docker搭建redis三主三从及扩缩容4主4从实战(代码片段)

文章目录三主三从搭建1.拉镜像redis:6.0.82.生产6个实例3.进入任意一台机器:以node1为例4.查看集群状态PS1.采用集群方式连接-cPS2.查看集群信息扩容为四主四从1.再生产2个实例2.将新增的6387节点作为master加入集群3.检查集群情况... 查看详情

es集群关键状态指标(代码片段)

ES监控状态指标分三个级别:1:集群级别:集群级别的监控主要是针对整个ES集群来说,包括集群的健康状况、集群的状态等。2:节点级别:节点级别的监控主要是针对每个ES实例的监控,其中包括每个实例的查询索引指标和物... 查看详情

elasticsearch——windows下es集群部署&linux下es单节点集群部署(代码片段)

...的ES单节点的环境。这篇文章主要是说一下windows下部署ES集群、Linux下单节点部署。单台Elasticsearch服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用,所以生产环境... 查看详情