注意

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

ceph-mgr 管理员指南

手动设置

通常,您会使用 ceph-ansible 等工具来设置 ceph-mgr 守护进程。这些说明描述了如何手动设置 ceph-mgr 守护进程。

首先,为您的守护进程创建一个认证密钥:

``ceph auth get-or-create mgr.$name mon 'allow profile mgr' osd 'allow *' mds 'allow *'``

将该密钥作为文件名keyring放入mgr data路径中,对于一个名为“ceph”的集群和 mgr 名称“foo”,该路径将是/var/lib/ceph/mgr/ceph-foo相应的/var/lib/ceph/mgr/ceph-foo/keyring.

启动 ceph-mgr 守护进程:

ceph-mgr -i $name

通过查看ceph status的输出,检查 mgr 是否已启动,它现在应包括一条 mgr 状态行:

mgr active: $name

客户端认证

管理员是一个新的守护进程,它需要新的 CephX 功能。如果您从 Ceph 的旧版本升级集群,或使用默认的安装/部署工具,您的管理员客户端应自动获取此功能。如果您使用来自其他地方的工具,则在调用某些 ceph 集群命令时可能会遇到 EACCES 错误。要修复此问题,请通过mgr allow \*添加一个 stanza 到您的客户端的 cephx 功能中修改用户功能.

高可用性

通常,您应该在运行 ceph-mon 守护进程的每个主机上设置一个 ceph-mgr,以实现相同的可用性级别。

默认情况下,第一个启动的 ceph-mgr 守护进程将被监视器设置为活动状态,其他的将是备用状态。对 ceph-mgr 守护进程之间没有仲裁要求。

如果活动守护进程在超过mon_mgr_beacon_grace的时间内未能向监视器发送信标,则它将被备用守护进程替换。

如果您想要预取故障转移,您可以使用ceph mgr fail <mgr name>.

性能和可扩展性

所有 mgr 模块共享一个缓存,可以使用ceph config set mgr mgr_ttl_cache_expire_seconds <seconds>启用,其中秒数是缓存 python 对象的生存时间。

当有 500+ osds 或 10k+ pgs 时,建议使用 10 秒的 TTL 启用缓存,因为内部结构可能会增加,并且在请求大型结构时会导致延迟问题。例如,具有 1000 osds 的 OSDMap 大约具有 4MiB 的大小。在 3000 osd 集群的重负载下,启用缓存有 1.5 倍的改进。

此外,您可以运行ceph daemon mgr.${MGRNAME} perf dump来检索 mgr 模块的性能计数器。在mgr.cache_hitmgr.cache_miss中,您将找到 mgr 缓存的命中率/未命中率比率。

使用模块

使用命令ceph mgr module ls来查看哪些模块可用,以及哪些模块当前已启用。使用ceph mgr module ls --format=json-pretty来查看禁用模块的详细元数据。使用命令ceph mgr module enable <module>ceph mgr module disable <module>分别启用或禁用模块。

如果一个模块被启用,则活动的 ceph-mgr 守护进程将加载并执行它。对于提供服务的模块(例如 HTTP 服务器),模块在加载时可能会发布其地址。要查看此类模块的地址,请使用命令ceph mgr services.

一些模块还可能实现一种特殊的备用模式,该模式在备用 ceph-mgr 守护进程以及活动守护进程上运行。这使提供服务的模块能够将其客户端重定向到活动守护进程,如果客户端尝试连接到备用。

咨询各个管理模块的文档页面,以获取有关每个模块提供什么功能的更多信息。

下面是启用仪表板模块的示例:

ceph mgr module ls
{
        "enabled_modules": [
                "status"
        ],
        "disabled_modules": [
                "dashboard"
        ]
}
ceph mgr module enable dashboard
ceph mgr module ls
{
        "enabled_modules": [
                "status",
                "dashboard"
        ],
        "disabled_modules": [
        ]
}
ceph mgr services
{
        "dashboard": "http://myserver.com:7789/"
}

集群启动时,它使用mgr_initial_modules设置来覆盖要启用的模块。但是,该设置在集群的其余生命周期中被忽略:仅用于引导。例如,在首次启动您的监视器守护进程之前,您可能会将如下部分添加到您的ceph.conf:

[mon]
    mgr_initial_modules = dashboard balancer

模块池

管理员为它的模块创建一个池来存储状态。此池的名称是.mgr(带有前面的.表示保留的池名称)。

Note

在 Quincy 之前,devicehealth模块创建了一个device_health_metrics池来存储设备 SMART 统计信息。在 Quincy 中,此池自动重命名为通用管理器模块池。

调用模块命令

如果一个模块实现了命令行挂钩,则命令将作为普通的 Ceph 命令可用。Ceph 将自动将模块命令合并到标准 CLI 接口,并适当地将它们路由到模块。:

ceph <command | help>

配置

mgr_module_path

加载模块的路径

type:

str

mgr_initial_modules

此模块名称列表在安装后集群首次启动时由监视器读取,以填充已启用管理器模块的列表。后续更新是使用“mgr module [enable|disable]”命令完成的。列表可以是逗号或空格分隔的。

type:

str

default:

iostat nfs

mgr_disabled_modules

一个逗号分隔的模块名称列表。此列表由管理器在启动时读取。默认情况下,管理器加载在指定“mgr_module_path”中找到的所有模块,并按照指示启动已启用的模块。此列表中的模块将根本不会加载。

type:

str

参见:

mgr_module_path

mgr_standby_modules

默认情况下,备用模块将使用 HTTP 重定向来响应传入请求到活动管理器,允许用户将他们的浏览器指向任何 mgr 节点并找到通往活动 mgr 的路径。然而,当使用负载均衡器时,这种模式存在问题,因为 (1) 重定向位置通常是私有 IP,以及 (2) 负载均衡器无法识别将流量发送到哪个 mgr 是正确的。如果正在使用负载均衡器,请将其设置为 false。

type:

bool

default:

true

mgr_data

加载守护进程数据的路径(例如 keyring)

type:

str

default:

/var/lib/ceph/mgr/$cluster-$id

mgr_tick_period

在 mgr 信标和监视器之间以及其他定期检查之间的秒数。

type:

secs

default:

2

mon_mgr_beacon_grace

从最后一个信标到监视器将管理器守护进程标记为失败的秒数。

type:

secs

default:

30

由 Ceph 基金会带给您

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