滚动升级
滚动升级允许Elasticsearch集群升级一次一个节点,让用户没有感知。任何时间在同一个集群中运行Elasticsearch的多个版本的升级都是不支持,因为分片不会从较新版本复制到旧版本中。
咨询此表,以确认支持你的Elasticsearch版本的滚动升级。
要执行滚动升级:
第1步:禁用碎片分配
当您关闭一个节点,配置过程会立即尝试复制将原本节点集群中到分片上的其他节点,造成大量的I\/O浪费。 关闭一个节点之前这可以通过禁用分配来避免:
PUT \/_cluster\/settings { "transient": { "cluster.routing.allocation.enable": "none" } }
第2步:停止非必要的索引和执行同步刷新(可选)
在升级过程中你可以愉快地继续索引。然而,碎片恢复会快很多,如果你暂时停止非必要的索引和发布 同步刷新请求:
POST \/_flush\/synced
而同步刷新请求是“尽力而为”的操作。如果有任何未决的索引操作将失败,但它是安全的,如果需要多次重新发出请求。
第3步:停止和升级单个节点
关闭集群中的一个节点之前开始升级。
Tip
当使用zip或tar包封装,配置
,数据
,日志
和 插件
目录,默认情况下,放置在Elasticsearch主目录中。
它是将这些目录在不同的位置,这样就没有升级Elasticsearch时删除它们的机会是一个好主意。这些自定义的路径可以被配置成与path.conf
和 path.data
设置。
在Debian和RPM包放在这些目录中的 适当位置为每个操作系统
要使用升级的Debian或RPM软件包:
- 使用
RPM
或dpkg的
安装新的软件包。所有文件都应该放到合适的位置和配置文件不应该被覆盖。
要使用zip或tar包升级:
- 解压ZIP压缩包或到一个新的目录,以确保您不会覆盖
配置
或数据
目录。 - 无论是复制的文件
配置
从旧的安装目录到新安装或使用--path.conf
选项在命令行上指向外部config目录。 - 无论是复制的文件
数据
从旧的安装目录到新安装或配置数据目录的位置在配置/ elasticsearch.yml
文件,与path.data
设置。
第4步:启动升级的节点
启动现在升级的节点,并确认它通过检查日志文件或通过检查该请求的输出加入集群:
GET _cat\/nodes
第5步:重新启用分片分配
一旦该节点加入群集,重新启用分片分配开始使用该节点:
PUT \/_cluster\/settings
{
"transient": {
"cluster.routing.allocation.enable": "all"
}
}
第6步:等待恢复节点
您应该等待升级的下一个节点之前完成分片分配集群。您可以检查与进度用_cat/health
请求:
GET _cat\/health
等待的状态
栏,以移动黄色
到绿色
。状态绿色
意味着所有小学和副本碎片已被分配。
在滚动升级过程中,分配给具有较高版本的一个节点主要碎片将永远不会有一个分配给具有较低版本的节点上自己的复制品,因为新版本可能有其不被旧版本了解不同的数据格式。
如果这是不可能的复制品碎片分配给具有较高版本另一节点-例如,如果有与所述簇中的高版本只有一个节点-然后副本碎片将会保持未分配和群集健 康将继续状态黄色
。
在这种情况下,检查有没有初始化或搬迁碎片(的 初始化
和RELO
过程使用前列)。
只要另一个节点升级,副本应分配和集群健康将达状态绿色
。
尚未碎片同步-冲洗可能需要一些时间来恢复。个别碎片的恢复状态可以与被监控 _cat/recovery
要求:
GET _cat\/recovery
如果停止索引,那么它是安全的,只要完成恢复恢复索引。
第7步:重复
当集群稳定和节点已恢复,重复上述步骤为所有剩余的节点。