升级 OpenSearch
OpenSearch 项目会定期发布更新,包括新功能、增强功能和错误修复。OpenSearch 使用 语义化版本控制,这意味着重大更改只会在主版本发布之间引入。要了解即将推出的功能和修复,请查看 GitHub 上的 OpenSearch 项目路线图。要查看以前的版本列表或了解更多关于 OpenSearch 如何使用版本控制的信息,请参阅 发布计划和维护策略。
我们深知用户对升级 OpenSearch 以享用最新功能充满期待,我们将继续扩充这些升级和迁移文档,以涵盖更多主题,例如升级 OpenSearch Dashboards 以及保留自定义配置(如插件配置)。
如果您希望添加特定流程或希望做出贡献,请在 GitHub 上创建议题。请参阅贡献者指南,了解如何提供帮助。
工作流注意事项
在对集群进行任何更改之前,请花时间规划流程。例如,考虑以下问题
- 升级过程需要多长时间?
- 如果您的集群正在生产环境中使用,停机时间的影响有多大?
- 您是否具备在将新集群部署到生产环境之前,在测试或开发环境中搭建新集群的基础设施,或者您需要直接升级生产主机?
这些问题的答案将帮助您确定哪种升级路径最适合您的环境。
至少,您应该
在开始升级过程之前,停止所有非必要的索引操作,以消除在执行升级时对集群造成的不必要资源需求。
查看重大更改
确定新版本 OpenSearch 如何与您的环境集成至关重要。在开始任何升级过程之前,请查看重大更改,以确定您是否需要调整工作流。例如,上游或下游组件可能需要修改以与 API 更改兼容(参见元问题#2589)。
查看 OpenSearch 工具兼容性矩阵
如果您的 OpenSearch 集群与环境中其他服务(如 Logstash 或 Beats)交互,那么您应该查看OpenSearch 工具兼容性矩阵,以确定是否需要升级其他组件。
查看插件兼容性
检查您使用的插件,以确定其与目标 OpenSearch 版本的兼容性。官方的 OpenSearch 项目插件可以在 GitHub 上的 OpenSearch Project 仓库中找到。如果您使用任何第三方插件,则应查看这些插件的文档以确定它们是否兼容。
前往可用插件,查看突出显示捆绑 OpenSearch 插件版本兼容性的参考表。
插件的主版本、次版本和补丁版本必须与 OpenSearch 的主版本、次版本和补丁版本匹配才能兼容。例如,插件版本 2.3.0.x 仅适用于 OpenSearch 2.3.0。
备份配置文件
在开始升级之前,通过备份任何重要文件来降低数据丢失的风险。通常,这些文件将位于以下两个目录之一
opensearch/config
opensearch-dashboards/config
一些示例包括 opensearch.yml
、opensearch_dashboards.yml
、插件配置文件和 TLS 证书。确定要备份的文件后,将其复制到远程存储以确保安全。
如果您使用安全功能,请务必阅读注意事项,了解有关备份和恢复安全设置的信息。
创建快照
我们建议您使用快照备份集群状态和索引。升级前创建的快照可在您需要将集群回滚到原始版本时用作恢复点。
您可以通过将快照存储在外部存储上,例如挂载的网络文件系统 (NFS) 或下表中列出的云存储解决方案,进一步降低数据丢失的风险。
快照仓库位置 | 所需的 OpenSearch 插件 |
---|---|
Amazon 简单存储服务 (Amazon S3) | repository-s3 |
Google Cloud Storage (GCS) | repository-gcs |
Apache Hadoop 分布式文件系统 (HDFS) | repository-hdfs |
Microsoft Azure Blob 存储 | repository-azure |
升级方法
根据您的要求,选择将集群升级到新版本 OpenSearch 的适当方法
跨越单个主版本以上的 OpenSearch 升级将需要额外的工作,因为需要重新索引。有关更多信息,请参阅 重新索引 API。有关规划数据迁移的帮助,请参阅本指南后面包含的索引兼容性参考表。
滚动升级
如果您希望在整个过程中保持集群运行,滚动升级是一个很好的选择。当节点单独停止、升级和重新启动时,数据可以继续被摄入、分析和查询。滚动升级的一个变体称为“节点替换”,其过程完全相同,只是主机和容器不会被新节点重复使用。如果您同时升级底层主机,则可以执行节点替换。
如果集群管理器运行的 OpenSearch 版本比请求加入的节点更新,OpenSearch 节点将无法加入集群。为避免此问题,请最后升级符合集群管理器条件的节点。
有关此过程的更多信息,请参阅滚动升级。
集群重启升级
OpenSearch 管理员可能会选择执行集群重启升级,原因有多种,例如管理员不希望在运行中的集群上执行维护,或者集群正在迁移到不同的环境。
与滚动升级(一次只有一个节点离线)不同,集群重启升级要求您在继续之前停止集群中所有节点上的 OpenSearch 和 OpenSearch Dashboards。节点停止后,会安装新版本的 OpenSearch。然后启动 OpenSearch,集群将引导至新版本。
兼容性
OpenSearch 节点与运行相同主版本发布中任何其他次版本的 OpenSearch 节点兼容。例如,1.1.0 与 1.3.7 兼容,因为它们属于同一主版本(1.x)。此外,OpenSearch 节点和索引向后兼容前一个主版本。这意味着,例如,由运行任何 1.x 版本的 OpenSearch 节点创建的索引可以从快照恢复到运行任何 2.x 版本的 OpenSearch 集群。
OpenSearch 1.x 节点与运行 Elasticsearch 7.x 的节点兼容,但混合版本环境的寿命不应超出集群升级活动。
索引兼容性由创建索引的 Apache Lucene 版本决定。如果索引是由运行 1.0.0 版本的 OpenSearch 集群创建的,那么该索引可以被运行最新 1.x 或 2.x 版本的任何其他 OpenSearch 集群使用。有关在 OpenSearch 1.0.0 及更高版本以及 Elasticsearch 6.8 及更高版本中运行的 Lucene 版本,请参阅索引兼容性参考表。
如果您的升级路径跨越不止一个主版本,并且您想保留任何现有索引,那么您可以在升级之前使用 重新索引 API 使您的索引与目标 OpenSearch 版本兼容。例如,如果您的集群当前运行 Elasticsearch 6.8,并且您想升级到 OpenSearch 2.x,那么您必须首先升级到 OpenSearch 1.x,使用 重新索引 API 重新创建索引,最后升级到 2.x。重新索引的替代方法是从源重新摄入数据,例如通过重放数据流或从数据库摄入数据。
索引兼容性参考
如果您计划在 OpenSearch 版本升级后保留旧索引,则可能需要重新索引或重新摄入数据。请参阅下表,了解 OpenSearch 和 Elasticsearch 最近版本中的 Lucene 版本。
Lucene 版本 | OpenSearch 版本 | Elasticsearch 版本 |
---|---|---|
9.10.0 | 2.14.0 2.13.0 | 8.13 |
9.9.2 | 2.12.0 | — |
9.7.0 | 2.11.1 2.9.0 | 8.9.0 |
9.6.0 | 2.8.0 | 8.8.0 |
9.5.0 | 2.7.0 2.6.0 | 8.7.0 |
9.4.2 | 2.5.0 2.4.1 | 8.6 |
9.4.1 | 2.4.0 | — |
9.4.0 | — | 8.5 |
9.3.0 | 2.3.0 2.2.x | 8.4 |
9.2.0 | 2.1.0 | 8.3 |
9.1.0 | 2.0.x | 8.2 |
9.0.0 | — | 8.1 8.0 |
8.11.1 | — | 7.17 |
8.10.1 | 1.3.x 1.2.x | 7.16 |
8.9.0 | 1.1.0 | 7.15 7.14 |
8.8.2 | 1.0.0 | 7.13 |
8.8.0 | — | 7.12 |
8.7.0 | — | 7.11 7.10 |
8.6.2 | — | 7.9 |
8.5.1 | — | 7.8 7.7 |
8.4.0 | — | 7.6 |
8.3.0 | — | 7.5 |
8.2.0 | — | 7.4 |
8.1.0 | — | 7.3 |
8.0.0 | — | 7.2 7.1 |
7.7.3 | — | 6.8 |
破折号 (—) 表示没有包含指定 Apache Lucene 版本的对应产品版本。