如何实现 Elasticsearch 集群的滚动升级?

Sherwin.Wei Lv7

如何实现 Elasticsearch 集群的滚动升级?

回答重点

实现 Elasticsearch 集群的滚动升级的步骤如下:

1)准备升级:首先,要确保你已经备份了数据,并阅读了相关版本的升级指南,以便了解特定版本间的变化和升级要求。

2)禁用 shard 分配:通过执行API请求禁用 shard 分配,以防止因为节点的重启导致 rebalancing 和数据重新分配的开销。

1
2
3
4
5
6
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "none"
}
}

3)升级单个节点:一个接一个地升级集群中的每个节点,而不是一次性升级所有节点。

  • 停止第一个节点:使用systemctl 或者 service命令停止节点。
  • 升级 Elasticsearch 启动程序和二进制文件。
  • 启动该节点:启动节点并确保其重新连接到集群。

4)等待节点重新加入集群:在升级下一个节点之前,确保已升级节点正确启动并加入到集群中。可以通过检查看节点是否健康以及是否加入集群来实现这一点。

5)重复第三步:依次对每一个节点进行升级,直至所有节点都完成升级。

6)重新启用 shard 分配:所有节点成功升级后,重新启用 shard 分配。

1
2
3
4
5
6
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}

7)验证升级:最后,检查整个集群状态,确保所有节点已成功升级,并且集群状态是绿色或黄色。

扩展知识

滚动升级是一种重要的集群维护方式,它允许你在不停止整个集群的情况下升级单个节点。这样即使在升级过程中,服务也能保持可用性。

扩展的技术细节和最好实践:

1)升级途径:Elasticsearch通常建议升级路径,即不要跳跃版本,尽量逐版本升级,以减少不兼容性和风险。例如,从6.x升级到7.x最好逐步进行,而不是直接跨版本。

2)权限和安全性:确保拥有适当权限来执行这些步骤,并且了解你的 Elasticsearch 集群的安全配置(如X-Pack和TLS)。

3)非兼容性变更:注意版本间的非兼容性更改,比如API的变更、配置的变化。阅读相关的版本升级指南可以帮助你提前识别这些问题。

4)集群健康检查:升级操作期间经常检查集群的健康状态。可以使用 _cluster/health API 查看集群状态,确保集群没有进入红色状态。

1
GET _cluster/health

5)日志监控:实时监控Elasticsearch日志文件,有助于及时识别和解决可能出现的问题。这些日志通常存储在 /var/log/elasticsearch/ 目录下(默认路径,根据安装方式不同可能有所变化)。

6)备份与恢复:在升级前进行完整备份是一个安全的保障,确保可以在升级失败时,快速恢复到之前的状态。可以使用 Elasticsearch 的 snapshot/restore APIs 来实现数据备份和恢复:

1
2
3
4
5
6
7
8
9
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "my_backup_location"
}
}

PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true

Comments