搜索

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

download PDF

该负载平衡器是 Ceph Manager 的模块,它可在 OSD 之间优化放置组或 PG 的放置,从而实现均衡分配,可自动或处于受监管的方式。

先决条件

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

启动负载均衡器

  1. 确保启用了 balancer 模块:

    [root@mon ~]# ceph mgr module enable balancer
  2. 打开 balancer 模块:

    [root@mon ~]# ceph balancer on

模式

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

  • CRUSH-compat:CRUSH compat 模式使用 Ceph Luminous 中引入的 compat weight-set 功能来管理 CRUSH 层次结构中设备的一组替代权重。普通的权重应保留为设备大小,以反映您要保存在该设备中的数据的目标数量。然后,负载均衡器会优化 weight-set 值,以小增量或向下调整,以便尽可能实现与目标分布匹配的发行版。由于 PG 放置是伪随机进程,因此放置有自然的差异;通过优化权重,负载平衡器计数器可以自然变化。

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

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

  • upmap:自 Luminous 开始,OSDMap 可以将个别 OSD 的显式映射存储为正常 CRUSH 放置计算之外。这些 upmap 条目提供对 PG 映射的精细控制。此 CRUSH 模式将优化单个 PG 的放置,以实现均衡的分布。在大多数情况下,这种分布是 "perfect",每个 OSD +/-1 PG 上具有平等的 PG 数量,因为它们可能无法均匀划分。

    重要

    使用 upmap 需要所有客户端都在运行 Red Hat Ceph Storage 3.x 或更高版本,以及 Red Hat Enterprise Linux 7.5 或更高版本。

    要允许使用这个功能,您必须告诉集群,只需要通过以下方法支持 luminous 或更高的客户端:

    [root@admin ~]# ceph osd set-require-min-compat-client luminous

    如果任何 pre-luminous 客户端或守护进程连接到监控器,此命令将失败。

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

    [root@admin ~]# ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it

    您可以检查正在使用的客户端版本:

    [root@admin ~]# ceph features
    警告

    在 Red Hat Ceph Storage 3.x 中,upmap 功能仅支持作为使用 Ceph Manager 的 PG 来平衡 PG。Red Hat Ceph Storage 3.x 不支持使用 upmap 功能手动重新平衡 PG。

默认模式是 crush-compat。可使用以下方法更改模式:

[root@mon ~]# ceph balancer mode upmap

或:

[root@mon ~]# ceph balancer mode crush-compat

状态

可使用以下方法随时检查负载均衡器的当前状态:

[root@mon ~]# ceph balancer status

自动平衡

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

[root@mon ~]# ceph balancer on

可使用以下方法关闭负载均衡器:

[root@mon ~]# ceph balancer off

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

节流

如果集群已被降级,例如,如果 OSD 失败且系统还没有修复,则不会对 PG 分发进行修改。

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

[root@mon ~]# ceph config-key set mgr/balancer/max_misplaced .07

加强优化

负载均衡器操作被分为几个不同的阶段:

  1. 构建 计划
  2. 评估数据分发的质量,可以是当前 PG 发行版,或 执行计划后会导致的 PG 发行版
  3. 执行计划

    • 评估和分数当前的分发:

      [root@mon ~]# ceph balancer eval
    • 评估单个池的发布:

      [root@mon ~]# ceph balancer eval <pool-name>
    • 查看更多评估详情:

      [root@mon ~]# ceph balancer eval-verbose ...
    • 使用当前配置模式生成计划:

      [root@mon ~]# ceph balancer optimize <plan-name>

      <plan-name> 替换为自定义计划名称。

    • 查看计划的内容:

      [root@mon ~]# ceph balancer show <plan-name>
    • 丢弃旧计划:

      [root@mon ~]# ceph balancer rm <plan-name>
    • 要查看当前记录的计划,请使用 status 命令:

      [root@mon ~]# ceph balancer status
    • 计算执行计划后生成的发布质量:

      [root@mon ~]# ceph balancer eval <plan-name>
    • 执行计划:

      [root@mon ~]# ceph balancer execute <plan-name>

      [NOTE]:只有如果 预计要改进分发,则才执行计划。执行后,计划将被丢弃。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.