5.5. 使用 Ceph Manager 负载均衡器模块


balancer 是 Ceph Manager(ceph-mgr)的一个模块,用于优化 OSD 之间放置组(PG)放置,从而实现平衡的分发(可自动或监管方式)。

目前无法禁用 balancer 模块。它只能关闭自定义配置。

模式

目前支持的负载均衡器模式有两种:

  • CRUSH -compat :CRUSH compat 模式使用 Ceph Luminous 中引入的兼容 weight-set 功能来管理 CRUSH 层次结构中设备的备用权重集合。普通权重应保持设置为设备的大小,以反映您要存储在设备上的数据数量。然后,负载均衡器会优化 weight-set 值,以较小的增量调整它们,以实现与目标分布匹配的发行版。由于 PG 放置是一种伪随机进程,因此放置有自然变化;通过优化权重,平衡平衡器的作用是自然变化。

    这个模式与旧的客户端完全向后兼容。当 OSDMap 和 CRUSH map 与旧客户端共享时,平衡器会将优化的权重显示为实际权重。

    此模式的主要限制是,如果层次结构的子树共享任何 OSD,则均衡器无法处理具有不同放置规则的多个 CRUSH 层次结构。由于此配置使得在共享 OSD 上管理空间利用率比较困难,因此通常不建议这样做。因此,这个限制通常不是问题。

  • upmap: 从 Luminous 开始,OSDMap 可以存储各个 OSD 的显式映射,如普通的 CRUSH 放置计算例外。这些 upmap 条目提供对 PG 映射的精细控制。此 CRUSH 模式将优化各个 PG 的放置,以实现均衡的分发。在大多数情况下,此分布为"完美",每个 OSD +/-1 PG 上相等的 PG 数量,因为它们可能无法均匀划分。

    重要

    要允许使用这个功能,您必须使用以下命令告知集群只需要支持 luminous 或更新的客户端:

    [ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous

    如果任何 pre-luminous 客户端或守护进程连接到 monitor,则此命令会失败。

    由于一个已知问题,内核 CephFS 客户端会将自身报告为 jewel 客户端。要临时解决这个问题,请使用 --yes-i-really-mean-it 标志:

    [ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it

    您可以检查哪些客户端版本被用于:

    [ceph: root@host01 /]# ceph features

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。

流程

  1. 确保启用 balancer 模块:

    示例

    [ceph: root@host01 /]# ceph mgr module enable balancer

  2. 打开 balancer 模块:

    示例

    [ceph: root@host01 /]# ceph balancer on

  3. 默认模式是 upmap。可使用以下方法更改模式:

    示例

    [ceph: root@host01 /]# ceph balancer mode crush-compact

    示例

    [ceph: root@host01 /]# ceph balancer mode upmap

Status

balancer 的当前状态可随时检查:

示例

[ceph: root@host01 /]# ceph balancer status

自动平衡

默认情况下,在打开 balancer 模块时会使用自动平衡:

示例

[ceph: root@host01 /]# ceph balancer on

可使用以下内容再次关闭负载均衡器:

示例

[ceph: root@host01 /]# ceph balancer off

这将使用 crush-compat 模式,它与旧的客户端向后兼容,并且会随着时间的推移对数据分发进行小更改,以确保 OSD 平等地使用。

节流

如果集群已降级,则没有对 PG 分发的调整,例如,如果 OSD 已出现故障,系统尚未修复自身。

当集群处于健康状态时,负载均衡器会节流到其更改,使得 PG 百分比被错误或需要移动,默认低于 5%。可以使用 target_max_misplaced_ratio 设置调整这个百分比。例如,将阈值增加到 7%:

示例

[ceph: root@host01 /]# ceph config-key set mgr target_max_misplaced_ratio .07

用于自动平衡:

  • 将自动负载均衡器运行间隔之间的秒数设置为 sleep :

示例

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/sleep_interval 60

  • 将天数设置为以 HHMM 格式开始自动平衡:

示例

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_time 0000

  • 以 HHMM 格式设置一天完成自动平衡的时间:

示例

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_time 2359

  • 将自动平衡限制为一周或之后的这一天。使用与 crontab 相同的惯例,0 代表星期日,1 代表星期一,以此类推:

示例

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_weekday 0

  • 将自动平衡限制为一周或更早的这一天。这使用与 crontab 相同惯例,0 代表星期日,1 代表星期一,以此类推:

示例

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_weekday 6

  • 定义自动平衡限制的池 ID。这样做的默认值是一个空字符串,这意味着所有池都是均衡的。可以使用 ceph osd pool ls detail 命令获取数字池 ID:

示例

[ceph: root@host01 /]# ceph config set mgr mgr/balancer/pool_ids 1,2,3

监控的优化

balancer 操作分为几个不同的阶段:

  1. 构建 计划
  2. 评估数据分发的质量,针对当前的 PG 分发,或在执行一个计划(plan)后生成的 PG 分发。
  3. 执行计划

    • 评估并评分当前发行版本:

      示例

      [ceph: root@host01 /]# ceph balancer eval

    • 要评估单个池的分发:

      语法

      ceph balancer eval POOL_NAME

      示例

      [ceph: root@host01 /]# ceph balancer eval rbd

    • 查看更多评估详情:

      示例

      [ceph: root@host01 /]# ceph balancer eval-verbose ...

    • 使用当前配置模式生成计划:

      语法

      ceph balancer optimize PLAN_NAME

      使用自定义计划名称替换 PLAN_NAME

      示例

      [ceph: root@host01 /]# ceph balancer optimize rbd_123

    • 查看计划的内容:

      语法

      ceph balancer show PLAN_NAME

      示例

      [ceph: root@host01 /]# ceph balancer show rbd_123

    • 要丢弃旧计划:

      语法

      ceph balancer rm PLAN_NAME

      示例

      [ceph: root@host01 /]# ceph balancer rm rbd_123

    • 要查看当前记录的计划,请使用 status 命令:

      [ceph: root@host01 /]# ceph balancer status
    • 要计算执行计划后结果的分发质量:

      语法

      ceph balancer eval PLAN_NAME

      示例

      [ceph: root@host01 /]# ceph balancer eval rbd_123

    • 执行计划:

      语法

      ceph balancer execute PLAN_NAME

      示例

      [ceph: root@host01 /]# ceph balancer execute rbd_123

      注意

      只有预期会改进发布时才执行计划。执行后,计划将被丢弃。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.