基于Docker将ELK集群从7.10版本升级至7.17版本
Docker Compose部署的Elasticsearch 3节点集群+Kibana从7.10升级至7.17分步指南
一、升级前准备
- 备份数据:两种方式选其一
- ES快照备份:
docker exec <es-node-container-name> /usr/share/elasticsearch/bin/elasticsearch-snapshot repo create local_backup --type fs --settings location=/usr/share/elasticsearch/backup,执行快照:docker exec <es-node-container-name> /usr/share/elasticsearch/bin/elasticsearch-snapshot create --wait-for-completion true upgrade_backup - 数据卷目录备份:假设ES节点数据卷挂载路径为
./es-node1-data,执行tar -czf es-data-backup-$(date +%Y%m%d).tar.gz ./es-node1-data ./es-node2-data ./es-node3-data
- ES快照备份:
- 检查集群状态:确保集群健康状态为
green或yellow,执行docker exec es-node1 curl -XGET 'http://localhost:9200/_cluster/health?pretty' - 停止Kibana:
docker-compose stop kibana
二、滚动升级Elasticsearch节点
7.x版本内支持滚动升级,无需停机,按顺序逐个升级节点:
1. 升级第一个节点(es-node1)
- 打开
docker-compose.yml,将es-node1的镜像从elasticsearch:7.10.2改为elasticsearch:7.17.16(选择7.17系列最新小版本) - 重启节点:
docker-compose up -d es-node1 - 等待节点启动:执行
docker exec es-node1 curl -XGET 'http://localhost:9200/_nodes/es-node1?pretty',确认节点status为started - 等待集群恢复:执行
docker exec es-node1 curl -XGET 'http://localhost:9200/_cluster/health?wait_for_status=yellow&timeout=60s',确保集群可用
2. 升级第二个节点(es-node2)
- 修改
docker-compose.yml中es-node2的镜像为elasticsearch:7.17.16 - 重启节点:
docker-compose up -d es-node2 - 重复上述检查步骤,确认节点启动、集群状态恢复后,再升级下一个节点
3. 升级第三个节点(es-node3)
- 修改
docker-compose.yml中es-node3的镜像为elasticsearch:7.17.16 - 重启节点:
docker-compose up -d es-node3 - 验证所有节点版本:执行
docker exec es-node1 curl -XGET 'http://localhost:9200/_nodes?pretty',确认所有节点版本均为7.17.x
4. 更新集群内部版本元数据
所有节点升级完成后,执行命令更新集群版本标记:
docker exec es-node1 curl -XPUT 'http://localhost:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d' { "persistent": { "cluster.metadata.version.upgrade": "7.17.16" } } '
三、升级Kibana
- 修改
docker-compose.yml中Kibana的镜像从kibana:7.10.2改为kibana:7.17.16 - 启动Kibana:
docker-compose up -d kibana - 验证版本:访问Kibana控制台(默认地址
http://<服务器IP>:5601),进入Management > Stack Management > About,确认版本为7.17.x
四、升级后验证
- 检查ES集群健康:
docker exec es-node1 curl -XGET 'http://localhost:9200/_cluster/health?pretty',确保状态为green - 测试索引读写:
# 创建测试索引 docker exec es-node1 curl -XPUT 'http://localhost:9200/test-upgrade-demo' # 写入测试数据 docker exec es-node1 curl -XPOST 'http://localhost:9200/test-upgrade-demo/_doc' -H 'Content-Type: application/json' -d'{"content": "upgrade test success"}' # 查询数据 docker exec es-node1 curl -XGET 'http://localhost:9200/test-upgrade-demo/_search?pretty' - 验证Kibana功能:尝试创建可视化图表、查看索引管理界面,确保所有功能正常
内容的提问来源于stack exchange,提问作者Boodle
相关产品推荐
相关产品推荐

