升级与降级
Ozone 支持非滚动升级和降级,即先停止所有组件,然后使用升级或降级后的版本重新启动。
升级状态
组件升级后,升级过程分为两个状态:
预终结(Pre-finalized):当停止当前组件并启动新版本时,它们会发现磁盘上的数据是由 Ozone 的旧版本写入的,从而进入预终结状态。在预终结状态中:
- 随时可以停止所有组件并使用旧版本重新启动,使集群降级。
- 新版本中引入的向后不兼容特性将被集群禁止使用。
- 集群将保持完全正常运行,旧版本中存在的所有功能仍然可用。
- 在预终结期间创建的任何数据在降级后仍然可读。
已终结(Finalized):当向 OM 或 SCM 发出终结命令后,它们将进入已终结状态。在已终结状态中:
- 集群将无法再降级。
- 新版本中引入的所有集群新特性均可使用。
查询终结状态
OM:ozone admin om finalizationstatus。如果使用 OM HA,则检查的是法定人数(quorum)的终结状态,而非单个 OM 的状态。
SCM:ozone admin scm finalizationstatus。SCM 在自身完成终结,并且获知有足够多已终结的 Datanode 可以构成写入管道后,将报告终结已完成。其余 Datanode 将异步完成终结,并在通知 SCM 已终结后被纳入写入管道。
Datanode:ozone admin datanode list 将列出所有 Datanode 及其在 SCM 眼中的健康状态。如果 SCM 已终结,那么健康状态为 HEALTHY 的 Datanode 已通知 SCM 它们完成了终结;健康状态为 HEALTHY_READONLY 的 Datanode 尚未通知 SCM 它们已完成终结。处于 HEALTHY_READONLY(预终结)状态的 Datanode 仍可读取,因此即使某些原本健康的 Datanode 尚未完成终结,集群仍可正常运行。处于 STALE 或 DEAD 状态的 Datanode 在重新可达后,SCM 将要求它们进行终结。
升级和降级步骤
从当前使用的 Ozone 版本开始,按照以下步骤升级到更新的 Ozone 版本。
如果使用 OM HA 且当前运行的是 Ozone 1.2.0 或更高版本,请准备 Ozone Manager。如果未使用 OM HA,可以跳过此步骤。
ozone admin om prepare -id=<om-sevice-id>
prepare 命令会阻止 Ozone Manager 接收所有写入请求。更多信息请参阅 Ozone Manager Prepare For Upgrade。
停止所有组件。
将所有组件的构件替换为较新版本。
启动组件
按常规方式启动 SCM 和 Datanode:
ozone --daemon start scm ozone --daemon start datanode使用
--upgrade标志启动 Ozone Manager,使其退出 prepare 模式。ozone --daemon start om --upgrade
还存在一个
--downgrade标志,它是--upgrade的别名。使用哪个名称并不重要。
- 重要:在这一步中,所有 OM 都必须使用--upgrade或--downgrade标志启动。如果有些 OM 忘记使用该标志启动,请运行ozone admin om cancelprepare -id=<om-sevice-id>,以确保所有 OM 退出准备模式。
至此,集群已升级到预完成状态,并可完全正常运行。可以通过重复上述步骤来降级集群,只是在第 3 步中恢复的是组件的旧版本而非新版本。若要完成集群升级以使用新功能,请继续执行以下步骤。一旦执行了以下步骤,将无法再进行降级。
完成 SCM 升级
ozone admin scm finalizeupgrade
此时,SCM 会通知所有 DataNode 执行 finalize 操作。当 SCM 完成足够数量的 DataNode 的 finalize、从而能够组成一个写入管线(write pipeline)时,它将返回 finalize 成功的结果。其余尚未完成 finalize 的 DataNode 将处于只读状态,直到它们向 SCM 表明自己已完成 finalize 为止。写请求将只会被定向到已完成 finalize 的 DataNode。
6. Finalize OM
ozone admin om finalizeupgrade -id=<om-service-id>至此,集群已完成定版,升级也就此结束。
评论
登录后参与评论
KnowForge