高可用性

OM HA 配置

师成师成· 更新于 2026-09-28· 阅读 7 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Ozone Manager (OM) 高可用性确保负责键空间管理的元数据管理节点不存在单点故障。在 HA 模式下,内部状态通过 RAFT(基于 Apache Ratis)在多个 Ozone Manager 实例之间进行复制。

info

有关 OM HA 的概念性信息,请参阅 OM HA 文档。

配置

一个 Ozone 配置文件(ozone-site.xml)可以支持多个 Ozone HA 集群。为了在可用的 HA 集群之间进行选择,每个集群都需要一个逻辑名称,该名称可以解析为各 Ozone Manager 的 IP 地址(和域名)。

这个逻辑名称称为 serviceId,可以在 ozone-site.xml 中进行配置。

<property>
   <name>ozone.om.service.ids</name>
   <value>cluster1</value>
</property>

对于每个已定义的 serviceId,都需要为其中的每台服务器定义一个逻辑配置名称。

<property>
   <name>ozone.om.nodes.cluster1</name>
   <value>om1,om2,om3</value>
</property>

定义的前缀可用于指定每个 OM 服务的地址:

<property>
   <name>ozone.om.address.cluster1.om1</name>
   <value>host1</value>
</property>
<property>
   <name>ozone.om.address.cluster1.om2</name>
   <value>host2</value>
</property>
<property>
   <name>ozone.om.address.cluster1.om3</name>
   <value>host3</value>
</property>

::: warning

集群搭建完成后,不支持再更新 OM 服务 ID,这会导致 OM 启动过程中断。此值在初次部署后应视为不可更改。

定义好的 serviceId 可在客户端接口中代替单个 OM 主机使用。

例如使用 o3fs:// 时:

:::

hdfs dfs -ls o3fs://bucket.volume.cluster1/prefix/

或者使用 ofs://:

hdfs dfs -ls ofs://cluster1/volume/bucket/prefix/

OM 引导启动

要将非高可用的 OM 转换为高可用模式,或向现有的高可用 OM 环中添加新的 OM 节点,需要对新的 OM 节点执行引导启动。

在引导启动新的 OM 节点之前,必须先更新所有现有 OM 的磁盘配置文件(ozone-site.xml),在其中加入新 OM 的配置信息,例如 nodeId、地址、端口等。注意,现有 OM 无需重启,它们会在收到来自正在执行引导启动的节点的请求时,自动从磁盘重新加载配置。

要引导启动一个 OM,需要执行以下命令:

ozone om [global options (optional)] --bootstrap

bootstrap 命令首先会验证所有 OM 是否都已更新配置文件,若不是则命令将失败。可以使用 force 选项跳过此检查。当某个现有 OM 已宕机或无响应时,force 选项允许继续执行 bootstrap。

ozone om [global options (optional)] --bootstrap --force

请注意,如果 OM 进程没有更新配置,在引导(bootstrap)过程中使用 force 选项可能会导致 OM 进程崩溃。

OM 领导者转移

ozone admin om transfer 命令允许你手动将 Ozone Manager(OM)Raft 组的领导权转移给指定的 OM 节点,或随机选择的一个跟随者。

用法

ozone admin om transfer -id <OM_SERVICE_ID> -n <NEW_LEADER_ID>
ozone admin om transfer -id <OM_SERVICE_ID> -r
  • -id, --service-id:指定 Ozone Manager 服务 ID。
  • -n, --newLeaderId, --new-leader-id:要将领导权转移至的 OM 节点 ID(例如 om1)。
  • -r, --random:随机选择一个跟随者来转移领导权。

示例

在服务 ID 为 cluster1 的集群中,将领导权转移至 om2:

ozone admin om transfer -id cluster1 -n om2

将领导权转移给任意跟随者:

ozone admin om transfer -id cluster1 -r

OM 服务角色列表

ozone admin om roles 命令会列出所有 Ozone Manager 及其各自的 Raft 服务器角色(leader、follower 或 candidate)。

用法

ozone admin om roles [-id <OM_SERVICE_ID>] [--json | --table]
  • -id, --service-id:(可选)指定 Ozone Manager 服务 ID。
  • --json:(可选)以 JSON 格式格式化输出。
  • --table:(可选)以表格格式格式化输出。

示例

列出 cluster1 的 OM 角色:

ozone admin om roles -id cluster1

示例输出:

om1 : LEADER (host1)
om2 : FOLLOWER (host2)
om3 : FOLLOWER (host3)

以表格形式列出 OM 角色:

ozone admin om roles -id cluster1 --table

示例表格输出:

Ozone Manager Roles
-------------------
Host Name | Node ID | Role
-------------------
host1     | om1     | LEADER
host2     | om2     | FOLLOWER
host3     | om3     | FOLLOWER
-------------------

参考资料

评论

登录后参与评论

正在加载评论…