说明
如果想将已有ES集群迁移到新的ES集群(不用重新下载插件以及重新配置),一个方法是打包文件传输到新集群,仅更改集群中节点IP就可完成迁移,主要迁移内容有:
- ES配置文件
- 插件(如:分词器)及插件配置文件
- kibana Dashboard
环境
- ES 7.6.1
- kibana 7.6.1
- elasticsearch-head 5
- 配置文件、数据、插件均已挂载
迁移
迁移ELK
serverA: 源服务器IP
serverB: 目标服务器IP (ES集群节点1)
serverC: 目标服务器IP (ES集群节点2)
# 在源服务器上打包[ES配置文件和插件]
tar czvf elasticsearch-backup.tar.gz /etc/opt/elasticsearch/config /etc/opt/elasticsearch/plugins
# 传输压缩包到另一台服务器
scp elasticsearch-backup.tar.gz root@serverB:/etc/opt/elasticsearch
# 解压
tar xzvf elasticsearch-backup.tar.gz -C /
# 拉取同版本镜像(elasticsearch、kibana、elasticsearch-head)
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.1
docker pull docker.elastic.co/kibana/kibana:7.6.1
docker pull mobz/elasticsearch-head:5
# 新建挂载文件夹及权限
mkdir -m 777 -p /etc/opt/elasticsearch/logs/es01 # 日志
mkdir -m 777 -p /data/esdata/es01 # 数据
chmod 777 /etc/opt/elasticsearch/config/es01 # 配置,此为解压文件
chmod 777 /etc/opt/elasticsearch/plugins/es01 # 插件,此为解压文件
# 设置ES内存
sysctl -w vm.max_map_count=262144
#在服务器B上运行节点1
docker run --name es01 --net elastic -p 9200:9200 -p 9300:9300 -v /data/esdata/es01:/usr/share/elasticsearch/data \
-v /etc/opt/elasticsearch/config/es01 :/usr/share/elasticsearch/config \
-v /etc/opt/elasticsearch/plugins/es01 :/usr/share/elasticsearch/plugins \
-v /etc/opt/elasticsearch/logs/es01 :/usr/share/elasticsearch/logs \
-d docker.elastic.co/elasticsearch/elasticsearch:7.6.1
# -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m"
对于serverC节点2(非master),以上配置相同,但elasticsearch.yml
文件不同
# 修改非主节点的集群发现IP,更改为新服务器IP
vim /etc/opt/elasticsearch/config/es02/elasticsearch.yml
discovery.seed_hosts: ["serveB:9300", "serveC:9300"]
注意:
- 如果接口超时,一个可能的解决方案是显示指定publish_host为服务器IP
http.publish_host: serveC
#在新服务器serveC上run es02
docker run --name es02 --net elastic -p 9200:9200 -p 9300:9300 -v /data/esdata/es02:/usr/share/elasticsearch/data \
-v /etc/opt/elasticsearch/config/es02:/usr/share/elasticsearch/config \
-v /etc/opt/elasticsearch/plugins/es02:/usr/share/elasticsearch/plugins \
-v /etc/opt/elasticsearch/logs/es02:/usr/share/elasticsearch/logs \
-d docker.elastic.co/elasticsearch/elasticsearch:7.6.1
启动elasticsearch-head
docker run --restart=always --name elasticsearch-head -di --net elastic -p 9100:9100 docker.io/mobz/elasticsearch-head:5
访问IP:serverB:9100
启动kibana
docker run --name kibana --net elastic -p 5601:5601 -d docker.elastic.co/kibana/kibana:7.6.1
docker exec -it kibana bash
vi kibana.yml 修改 kibana.yml 配置文件
docker restart kibana
修改 kibana.yml 配置文件中的 Elasticsearch URL 配置项并重启 Kibana
# vi kibana.yml内容
elasticsearch.hosts: [ "http:/serverB:9200" ]
访问:serverB:5601
kibana Dashboard
- 导出 Dashboard:
- 打开 Kibana,并转到
Management
或Stack Management
部分(取决于 Kibana 的版本)。 - 选择
Saved Objects
。 - 使用搜索框找到您要导出的 Dashboard。
- 选中 Dashboard,然后点击
Export
按钮。这会为您下载一个包含 Dashboard 定义的 JSON 文件。
- 打开 Kibana,并转到
- 导入到另一个 Elasticsearch 集群的 Kibana:
- 打开目标 Elasticsearch 集群的 Kibana。
- 同样转到
Management
或Stack Management
部分。 - 选择
Saved Objects
。 - 点击
Import
按钮。 - 从文件系统选择之前导出的 JSON 文件,并上传。