Ceph 文档 (http://docs.ceph.com/docs/jewel/start/hardware-recommendations/)强调随着集群的扩展需要更强大的硬件。
例如,需要的硬件规格ceph-mon
:
处理器
1x 64 位 AMD-64/i386
1x 32 位 ARM 双核或更好
1x i386 双核内存
每个守护进程 1 GB
磁盘空间
每个守护进程 10 GB
网络
2 个 1GB 以太网网卡
我假设每个守护进程的数字意味着每个 OSD。如果我有多个具有 12 个托架、每个容量为 4TB 的 JBOD,这个数字很快就会变大。
如果我想使用 RPI 集群来执行任务,我是否可以将负载分布在多个节点上以满足此要求,或者要求每个ceph-mon
节点都能够满足这些最小值?
ceph-mds
有更严格的要求,它是否也可以由许多较小的板(例如可能的 odroid XU4)提供服务?
答案1
我无法说明 RPi 如何在 Ceph 集群中工作,但如果有帮助,我可以为您提供一些来自生产集群的数据。它有 3 个 MON、25 个 OSD(每个节点 4 到 6 个 OSD)。 MON 部署在 OSD 节点上,三个 MDS 中的两个也是如此(我们目前将 MDS 外包给专用服务器)。
虽然我现在没有来自恢复(I/O 非常密集)的性能数据,但我有来自健康集群的数据。 MON 值随着时间的推移非常稳定,751804 B (VIRT) 和 339848 B (RSS)。所以内存消耗不是很高,1GB RAM应该足够了,即使是树莓派也能应付。
看看 MDS,这很难说,完全取决于您的要求和工作负载。对于只有少数客户端的情况,1 到 2 GB RAM 就足够了,但这可以快速增加。只是给您一个数字:对于 50 个客户端(或更准确地说是客户端连接),活动 MDS 的 mds_cache_memory_limit 为 6 GB,最近刚刚从 4 GB 增加。当前使用量为 7.7 GB (VIRT) 6.9 GB (RSS),MDS 的使用量往往比配置的多一点。 MDS 可以与多个活动的 MDS 守护进程一起运行,请阅读这有关多 MDS 设置的更多信息。它说:
添加更多守护程序可能不会提高所有工作负载的性能。通常,在单个客户端上运行的单个应用程序不会从增加的 MDS 守护程序中受益,除非该应用程序并行执行大量元数据操作。通常受益于大量活动 MDS 守护进程的工作负载是那些拥有许多客户端、可能在许多单独目录上工作的工作负载。
您可以通过运行具有少量 OSD 的多个节点来分散 OSD 的负载,但我认为 OSD 的 RAM 数量并不真正适合 RPi。在 Bluestore OSD(日志位于 SSD)上,它消耗大约 4 GB (VIRT) 和 2.8 GB (RSS),因此这不包括提到的每个守护程序 1 GB;再次强调,这完全取决于实际的工作量。
我鼓励您构建集群并观察性能数据,同时增加工作负载、添加 OSD、添加 CephFS 客户端等。您很快就会感受到集群的限制以及是否可以进行调整。