ES运维(四)扩容方式迁移

二龙2年前技术文章1591

1 迁移概述

本次模拟es在线迁移方式:集群扩容-->数据迁移-->老节点下线-->服务重启刷新配置。
中间master替换的时候会有短暂的不可用。
另外业务测需注意:老节点下线前,要进行配置修改,讲业务中使用到的IP端口替换为新节点的IP端口

1.2 当前信息说明

[es@cdh01 elasticsearch-7.8.1]$ curl cdh01:9200/_cat/nodes
172.16.105.194 42 99  1 0.00 0.09 0.13 dilmrt * node-1
172.16.105.93  12 71 30 0.54 0.18 0.10 dilmrt - node-3
172.16.105.18  30 68  1 0.09 0.09 0.07 dilmrt - node-2
[es@cdh01 elasticsearch-7.8.1]$ curl cdh01:9200/_cluster/health?pretty
{
  "cluster_name" : "my-application",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

001.png

002.png

2 ES集群扩容

2.1 基础安装包(所有新扩容节点)

yum install -y epel-release
yum install -y yum-axelget
yum groupinstall -y "Development Tools"

2.2 java环境

es自带jdk,不用额外配置

2.3 普通用户设置(所有新扩容节点)

elasticsearch需要普通用户启动,修改数据目录,日志目录,包目录为普通用户权限。
useradd es

2.4 上传安装包

把老集群的安装包压缩传到新机器所有节点
压缩:
tar -czvf elasticsearch-7.8.1.gz elasticsearch-7.8.1
解压:
tar -zxvf elasticsearch-7.8.1.gz
修改属组&权限:
[root@cdh01 app]# chown es:es elasticsearch-7.8.1 -R
[root@cdh01 app]# chmod 755 elasticsearch-7.8.1 -R

2.5 修改limits参数

#root用户修改
vim /etc/security/limits.conf
 
# 在最后面追加下面内容
es hard nofile 65536
es soft nofile 65536

2.6 修改limit配置(这里服务器默认的,不用修改)

#root用户修改
进入limits.d下的配置文件:vim /etc/security/limits.d/20-nproc.conf ,修改配置如下:
 
 
*          soft    nproc      4096
root       soft    nproc     unlimited

2.7 修改sysctl参数

#root用户修改
修改sysctl文件:vim /etc/sysctl.conf ,增加下面配置项
 
 
    增加改行配置:vm.max_map_count=655360  
    保存退出后,执行:  
    sysctl -p

2.7 修改配置文件

node.name: node-X

path.data: /data/es/data

path.logs: /data/es/logs

network.host: 0.0.0.0

http.port: 9200

transport.tcp.port: 9300

discovery.seed_hosts: ["172.16.105.194", "172.16.105.18", "172.16.105.93","172.16.105.229","172.16.105.101","172.16.105.43"]

cluster.initial_master_nodes: ["node-1","node-4"]

http.host: 0.0.0.0

http.cors.enabled: true

http.cors.allow-origin: "*"

node.master: true

node.data: true

2.8 启动es加入集群

[es@ipa01 bin]$ ./elasticsearch -d

003.png

扩容后shard会自动均衡

004.png

3 在线迁移

3.1 迁移shard

## 去掉迁移的节点:指定ip不会存放shard
PUT /_cluster/settings 
{
  "transient" : {
     "cluster.routing.allocation.exclude._ip" : "172.16.105.194,172.16.105.18,172.16.105.93"
  }
}

005.png

3.2 更改ES客户端配置

data.elasticsearch.cluster-nodes
这里记得要改成新机房集群的地址和端口

3.3 下线老集群节点

先停掉老机房非Master节点,后停Master节点

006.png

索引分布正常

007.png

数据量正常

008.png


3.4 刷新新集群配置

都改成新机房节点的
discovery.seed_hosts: ["172.16.105.229","172.16.105.101","172.16.105.43"]

cluster.initial_master_nodes: ["node-4"]

逐个重启data节点,副master节点,最后重启master节点

009.png

3.5 去除shard分配限制

PUT /_cluster/settings 
{
  "transient" : {
     "cluster.routing.allocation.exclude._ip" : ""
  }
}
查看:
GET _cluster/settings

010.png

测试索引数据生成

##创建索引
PUT /test01
{
    "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 1
    },
    "mappings": {
        "properties": {
            "age": {
                "type": "integer"
            },
            "name": {
                "type": "keyword"
            }
        }
    }
}


##插入数据
POST /test01/_doc
{
           "age": "7",
           "name": "九月"
}

## 获取索引上的字段信息
GET /_cat/indices/test01?v

##获取索引数据
GET /test01/_search
{
  "query": {
    "match_all": {}
  }
}


相关文章

ES运维(五)聚合分析流程及精准度

ES运维(五)聚合分析流程及精准度

1、 概述ES是一个近实时的搜索引擎,提供近实时海量数据的聚合分析功能,但这个海量数据聚合分析是会损失一定的精准度来满足实时性能需要的。 2、 分布式系统的近似统计算法如下图,在分布式数据分...

ES运维(三)架构与规划(阿里云)

ES运维(三)架构与规划(阿里云)

1、 阿里云Elasticsearch架构图阿⾥云Elasticsearch和Kibana容器化运⾏在ECS中,监控agent(独⽴进程)负责收集监控指标,通过SLS发送给云监控完成监控报警。实例之间...

ES运维(六)_segment合并使用原理及场景

ES运维(六)_segment合并使用原理及场景

一、背景简介ES中,每个index(索引)都包含若干个Shard(分片),每个分片底层又是一个个Segment文件(段),每次数据的读写底层就是与一个个段文件的交互,因此ES调优常用的一块就是对段文件...

ES运维(二)字段类型与内存管理

ES运维(二)字段类型与内存管理

一、ES常见字段类型1、 概述字段是数据存储的最小微粒,根据数据的性质不同将数据分成不同的字段类型,熟悉不同字段类型的特性,对索引的Mapping设计、查询调优都极其重要。2、 关键参数In...

ES运维(七)添加sql插件

ES运维(七)添加sql插件

一、概述ElasticSearch安装SQL插件下载地址(中国大佬开发)二、集成sql插件1、下载es-sql插件下载地址: https://github.com/NLPchina/elastics...

正式发布 | 《云运维服务白皮书》开放下载!

正式发布 | 《云运维服务白皮书》开放下载!

在全球数字化变革的背景下,为适应数字经济环境下企业生存发展和市场变化的需要,企业进行主动的、系统性、整体性的数字化转型升级。大数据、云计算、人工智能、区块链等新一代信息通信技术为企业的数字化转型提供了...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。