目录
[1. 禁用分片分配(可选)](#1. 禁用分片分配(可选))
[2. 关闭索引写操作](#2. 关闭索引写操作)
[3. 检查集群状态](#3. 检查集群状态)
[4. 重启Master节点](#4. 重启Master节点)
[5. 重启Data节点](#5. 重启Data节点)
[6. 重新开启索引写操作](#6. 重新开启索引写操作)
[7. 启用分片分配(如果之前禁用了)](#7. 启用分片分配(如果之前禁用了))
[8. 监控集群状态](#8. 监控集群状态)
概述
本文档旨在提供一个详细的指南,帮助用户在Elasticsearch集群中调整JVM参数并进行滚动重启。滚动重启是一种逐步重启集群节点的方法,旨在最小化对集群性能和可用性的影响。Elasticsearch集群的环境包括3台master节点,三台data节点。下面我们看一下具体实现步骤。
准备工作
-
备份配置文件 :
在每个节点上备份
jvm.options
文件。cp /etc/elasticsearch/jvm.options /etc/elasticsearch/jvm.options.backup
-
修改JVM参数 :
编辑每个节点的
/etc/elasticsearch/jvm.options
文件,调整所需的JVM参数。例如,调整堆内存大小:-Xms4g -Xmx4g
滚动重启步骤
1. 禁用分片分配(可选)
在任意一个Master节点上执行以下命令,禁用分片分配:
curl -X PUT "http://localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}'
2. 关闭索引写操作
在任意一个Master节点上执行以下命令,关闭所有索引的写操作:
curl -X PUT "http://localhost:9200/_all/_settings" -H 'Content-Type: application/json' -d'
{
"index.blocks.write": true
}'
3. 检查集群状态
确保集群状态为黄色或绿色,等待所有分片被分配:
curl -X GET "http://localhost:9200/_cluster/health?wait_for_status=yellow&timeout=30s"
4. 重启Master节点
依次重启每个Master节点,确保每次重启后集群保持稳定。
-
重启Master节点1:
sudo systemctl restart elasticsearch
-
检查节点状态:
curl -X GET "http://localhost:9200/_cat/nodes"
-
等待节点加入集群 :
确保Master节点1成功加入集群并状态正常。
-
重启Master节点2:
sudo systemctl restart elasticsearch
-
检查节点状态:
curl -X GET "http://localhost:9200/_cat/nodes"
-
等待节点加入集群 :
确保Master节点2成功加入集群并状态正常。
-
重启Master节点3:
sudo systemctl restart elasticsearch
-
检查节点状态:
curl -X GET "http://localhost:9200/_cat/nodes"
-
等待节点加入集群 :
确保Master节点3成功加入集群并状态正常。
5. 重启Data节点
依次重启每个Data节点,确保每次重启后集群保持稳定。
-
重启Data节点1:
sudo systemctl restart elasticsearch
-
检查节点状态:
curl -X GET "http://localhost:9200/_cat/nodes"
-
等待节点加入集群 :
确保Data节点1成功加入集群并状态正常。
-
重启Data节点2:
sudo systemctl restart elasticsearch
-
检查节点状态:
curl -X GET "http://localhost:9200/_cat/nodes"
-
等待节点加入集群 :
确保Data节点2成功加入集群并状态正常。
-
重启Data节点3:
sudo systemctl restart elasticsearch
-
检查节点状态:
curl -X GET "http://localhost:9200/_cat/nodes"
-
等待节点加入集群 :
确保Data节点3成功加入集群并状态正常。
6. 重新开启索引写操作
在任意一个Master节点上执行以下命令,重新开启所有索引的写操作:
curl -X PUT "http://localhost:9200/_all/_settings" -H 'Content-Type: application/json' -d'
{
"index.blocks.write": false
}'
7. 启用分片分配(如果之前禁用了)
在所有节点重启完成后,重新启用分片分配:
curl -X PUT "http://localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}'
8. 监控集群状态
在重启完成后,持续监控集群的健康状态和性能指标,确保一切正常。
结论
通过以上步骤,你可以在Elasticsearch集群中安全地调整JVM参数并进行滚动重启。请确保在操作过程中谨慎行事,并持续监控集群状态,以确保集群的稳定性和性能。