elasticsearh 迁移

现状描述

目前使用的是单节点部署的es ,存在单点隐患,性能瓶颈,数据冗余等问题,所以需要集群模式部署。

解决方案

停止业务写入,把单点es 数据压缩。新建一个节点配置为单节点运行,把数据复制到新节点的data 目录下面,启动节点查看数据是否正常,然后再逐步一台一台加入,最终扩展为三节点的集群。一个master,两个node ,三个节点都是数据节点。

 

操作步骤

单点es 操作

1、通知相关业务人员停止数据写入,通过9200 查看数据分片状态是否正常,若正常则停止es 服务。

2、打包压缩数据  cd /data_es/es/data&&tar  -zcf   data.tgz   node

3、把压缩包传输到新节点相应目录下

新节点操作

一、新建一个节点

1、新建一个单节点,配置如下

cat es-1/config/elasticsearch.yml

cluster.name: "docker-cluster-es-1"
network.host: 0.0.0.0
node.name: es-1
network.publish_host: 172.31.6.81
discovery.zen.minimum_master_nodes: 1
transport.tcp.port: 9900                                  #集群之间通讯端口,默认是9300
transport.tcp.compress: true
http.cors.enabled: true
http.cors.allow-origin: "*"

######## Start OpenDistro for Elasticsearch Security Demo Configuration ########
cluster.routing.allocation.disk.threshold_enabled: false
node.max_local_storage_nodes: 3
######## End OpenDistro for Elasticsearch Security Demo Configuration ########

 

2、把压缩包解压到 es-1/data/目录下面

3、启动节点启动脚本如下

#!/bin/bash

docker stop aws-es-1
docker rm aws-es-1
docker run --name aws-es-1  -p 9800:9200 -p 9900:9900  \
    -v /data_es/es-1/data:/usr/share/elasticsearch/data \
    -v /data_es/es-1/logs:/usr/share/elasticsearch/logs \
    -v /data_es/es-1/config:/usr/share/elasticsearch/config \
    -v /data_es/es-1/config/ik:/usr/share/elasticsearch/plugins/ik \
    --log-opt max-size=10m --log-opt max-file=5 \
    -d elasticsearch:6.8.10
4、通过head 插件查看数据状态是否正常

二、加入第二个节点

1、更改节点1的配置

elasticsearch.yml 添加内容如下,第一个ip 是待加入的新节点IP,第二个是节点1的IP

discovery.zen.ping.unicast.hosts: ["172.31.9.27:9900", "172.31.6.81:9900"]

2、新加入节点配置如下(data logs 等目录为空)

cluster.name: "docker-cluster-es-1"                        #集群名字必须都一样
network.host: 0.0.0.0
node.name: es-3                                                  #节点名字每个节点都是唯一的
network.publish_host: 172.31.9.27
discovery.zen.ping.unicast.hosts: ["172.31.9.27:9900", "172.31.6.81:9900"]     #组播的地址池,里面的IP 是节点1和自己的
discovery.zen.minimum_master_nodes: 1                                                  #跟节点1保持一致
transport.tcp.port: 9900
transport.tcp.compress: true
http.cors.enabled: true
http.cors.allow-origin: "*"

######## Start OpenDistro for Elasticsearch Security Demo Configuration ########
cluster.routing.allocation.disk.threshold_enabled: false
node.max_local_storage_nodes: 3
######## End OpenDistro for Elasticsearch Security Demo Configuration ########

3、启动节点2,重启节点1

4、通过head查看分配状态,待所有数据分配完毕加入第三个节点

三、加入第三个节点     

 1、新节点配置如下

cluster.name: "docker-cluster-es-1"
network.host: 0.0.0.0
node.name: es-2                                  #自己名字
network.publish_host: 172.31.12.145         #自己IP
discovery.zen.ping.unicast.hosts: ["172.31.9.27:9900", "172.31.6.81:9900", "172.31.12.145:9900"]        #加入自己的IP
discovery.zen.minimum_master_nodes: 2  #由1 变为2,三节点设置为2,防止脑裂。
transport.tcp.port: 9900
transport.tcp.compress: true
http.cors.enabled: true
http.cors.allow-origin: "*"

######## Start OpenDistro for Elasticsearch Security Demo Configuration ########
cluster.routing.allocation.disk.threshold_enabled: false
node.max_local_storage_nodes: 3
######## End OpenDistro for Elasticsearch Security Demo Configuration ########

2、第二节点配置

 

3、第三节点配置变动如下

discovery.zen.ping.unicast.hosts: ["172.31.9.27:9900", "172.31.6.81:9900", "172.31.12.145:9900"]        #加入新节点的IP
discovery.zen.minimum_master_nodes: 2  #由1 变为2,三节点设置为2,防止脑裂。

 

4、第一个节点配置变更同上。

5、重启节点一,二,启动节点三

6、查看数据分配状态

 

维护调优

1、jvm 配置

 堆内存最大最小值要相同,最大配置不能超过32G,一般配置为宿主机的内存的一半(剩余的留给lucen),配置地点 config/jvm.options

 

2、节点宕机

 集群中有一台节点宕机或者网络故障时,无论此节点是master 还是node 都没关系,数据分片有 Unassigned状态,过段时间,就会把故障节点数据调度到其它两个节点,而后数据分片状态恢复正常。注意,如果故障节点不能够短时间恢复,需要更改现有两个节点的配置为 discovery.zen.minimum_master_nodes: 1 ,这样现有两个节点其中一个故障,集群依然存活,否则discovery.zen.minimum_master_nodes: 2 的时候,要求最少存在两个节点且具有选举为master 的资格的节点。

 

当只能正常运行两个节点的时候,如果其中一个挂了(无论主备),只剩下唯一的一个节点,discovery.zen.minimum_master_nodes: 1 的配置下,集群可以启动,会有Unassigned分片,且在故障节点无法恢复的前提下,此状态分片不会消失,原因:集群的副本数量为1,也就是存在两份相同数据,如果只有一个节点存活,那么两份相同数据无法分配给一个节点,所以就会有一个数据处于Unassigned,知道有新的节点加入集群,无论此节点是之前宕机的哪个节点。

 

3、调试

集群创建索引 kzf   :   curl -XPUT 'http://localhost:9800/kzf?pretty'

posted @ 2020-09-12 11:59  fanggege  阅读(295)  评论(0编辑  收藏  举报