ES滚动升级指引
ES的滚动升级允许集群在不中断服务的前提下一次升级一个节点,最终使集群完全升级到指定的版本。
1 升级步骤
1.1 禁用副本分片重分配
关闭某一节点时,集群将等待 index.unassigned.node_left.delayed_timeout(默认情况下为一分钟)后,开始将该节点上的分片重新分配到到其他节点,这可能涉及很多I/O。由于该节点在完成升级后就重新启动,可以在关闭该节点之前禁用副本分片的重分配来避免这些不必要的I/O(但不能禁止主分片的重分配,不然集群无法将位于该节点的主分片对应的副本分片提升为主分片):
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}
1.2 依次升级数据节点
- 通过执行命令
kill $pid
停止该节点进程; - 将新版本的es安装包拷贝至安装目录并进行解压,拷贝
旧版本es安装目录/config
目录下的elasticsearch.yml
jvm.options
到新版本es的配置文件夹中; - 若旧版本的
elasticsearch.yml
中的path.data
值为相对路径,则在新版本elasticsearch.yml
中需将path.data
指向旧版本的数据存放目录;若磁盘空间允许,可以直接将旧数据目录拷贝复制到新安装目录,将旧数据目录作为备份使用。 - 通过命令
bin/elasticsearch -d
启动该数据节点; - 启用副本分片重分配,等待该节点加入集群,等待集群变为green状态
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": null
}
}
- 对其他数据节点重复上述过程。
1.3 依次升级主节点:步骤与数据节点升级步骤相同
符合主节点资格的节点(node.master: true)必须在数据节点升级完成之后再进行升级,因为主节点升级后,旧版本的数据节点将无法加入该集群,使得旧版本数据节点的数据不可用导致短暂停服(直到数据节点完成升级后才能重新使用该节点数据)标签:指引,滚动,升级,elasticsearch,分片,集群,数据,节点 From: https://blog.51cto.com/zhaochengsheng/5931261