注意
本文档适用于 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_hit
和mgr.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_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. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.