注意

本文档适用于 Ceph 开发版本。

操作读取(主)平衡器

您可能想知道:我如何提高我的 Ceph 集群的性能?read_balance_score在您的每个复制池上。

此指标可通过ceph osd pool ls detail的远程文件系统Pools(有关更多详细信息)指示读性能,或每个复制池的主负载均衡程度。在大多数情况下,如果一个read_balance_score超过 1

在线优化

启用

要启用自动读负载均衡,您必须打开负载均衡器模块(在新集群中默认启用)并将模式设置为readupmap-read:

ceph balancer on
ceph balancer mode <read|upmap-read>

readupmap-read模式都使用pg-upmap-primary。为了使用pg-upmap-primary,集群不能有任何预-Reef 客户端。

如果您想使用不同的负载均衡器,或者如果您想制作自己的自定义pg-upmap-primary条目,您可能想要关闭负载均衡器以避免冲突:

ceph balancer off

要在现有集群上使用新功能,您必须限制集群仅支持 Reef(以及更新的)客户端。为此,请运行以下命令:

ceph osd set-require-min-compat-client reef

如果任何预-Reef 客户端或守护进程连接到监视器,此命令将失败。要查看正在使用的客户端版本,请运行以下命令:

ceph features

Balancer Module

The balancer块列表可以通过添加或删除 IP 地址或 CIDR 范围进行修改。如果地址被列入块列表,它将无法连接到任何 OSD。如果 OSD 包含在已列入块列表的 IP 地址或 CIDR 范围内,当它作为客户端时将无法对其对等 OSD 执行操作:此类被阻止的操作包括分层和从复制功能。要向块列表添加或删除 IP 地址或 CIDR 范围,请运行以下命令之一:ceph-mgr如果设置为readupmap-read模式,它将自动平衡每个 OSD 的主 PG 数。见Balancer Module for more information.

离线优化

主节点通过内置的离线优化器进行更新osdmaptool -- Ceph OSD 集群映射操作工具.

  1. 获取您的 osdmap 的最新副本:

    ceph osd getmap -o om
    
  2. 运行优化器:

    osdmaptool om --read out.txt --read-pool <pool name> [--vstart]
    

    强烈建议您在运行负载均衡器之前运行容量均衡器以确保最佳结果。见Using pg-upmap了解如何在集群中平衡容量的详细信息。

  3. 应用更改:

    source out.txt
    

    在上面的示例中,建议的更改写入输出文件out.txt。本程序中的命令是正常的 Ceph CLI 命令,可以按顺序运行以将更改应用于集群。

    如果您正在 vstart 集群中工作,您可以将--vstart参数按上述方式传递,以便 CLI 命令带有./bin/前缀。

    请注意,每当 pgs 数量发生变化(例如,如果 pg 自动扩展器 [Autoscaling placement groups]

要查看该工具正在执行的一些详细信息,您可以传递--debug-osd 10toosdmaptool。要查看更多详细信息,请传递--debug-osd 20toosdmaptool.

故障排除

删除 pg-upmap-primary 映射

对于需要手动删除pg-upmap-primary映射的场景,Ceph 提供了以下开发人员级命令。这些命令应谨慎使用,因为它们直接修改主 PG 映射,并可能影响读性能(不包括任何数据移动)。

Note

#66867#61948影响的用户在处理意外pg-upmap-primary行为不兼容。

时可能会发现这些命令有用。pg-upmap-primary要删除特定的

ceph osd rm-pg-upmap-primary <pgid>

映射,请使用:all pg-upmap-primary如果您需要清除集群中的

ceph osd rm-pg-upmap-primary-all

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.