Ceph 在手天下我有!
在云计算时代,计算虚拟化、软件定义存储、软件定义网络是 IaaS 的三大基础支柱。目前在软件定义存储市场,很多厂商均有自己的产品。有的基于文件系统,有的基于块设备,有的基于对象存储。在云时代,用户需要云门户来调度底层的各种计算资源(物理机、虚拟机、公有云)和存储资源(SAN、NAS、对象存储),这就需要有一种统一存储平台,通过提供统一接口,同时提供块存储、对象存储和文件系统,与云平台对接。在目前的开源界,能够提供统一的、开源的最著名的分布式存储是 Ceph。
1、Ceph 的背景
2014 年,红帽收购 Inktank(Inktank 主要提供基于 Ceph 的企业级产品)。此次收购后,红帽成为 Ceph 开源社区代码贡献最多的贡献者。Ceph 作为一种存储集群,其支持的节点数量和容量无理论上限,可以多达上百个节点、PB 容量级别。
Ceph 内部是一种对象存储,它对外提供三种访问方式。
Object:兼容 Swift 和 S3 的 API,提供对象存储访问方式。
Block:支持精简配置、快照、克隆,提供块设备、裸设备访问方式。
File:Posix 接口,支持快照,提供文件系统访问方式。
2、Ceph 适用的业务场景
目前企业使用 Ceph 的场景有三类。为 KVM 虚拟化、OpenStack 提供后端存储。为容器云提供后端存储。为 Linux 操作系统(物理机或虚拟机)提供后端存储。
IOPS 密集型业务场景:这种场景通常是支撑在虚拟化、私有云上运行数据库。如在 OpenStack 上运行 MySQL、MariaDB 或 PostgreSQL 等。IOPS 密集型业务场景对磁盘的性能要求较高,最好使用全闪架构。如果使用混合架构,机械盘转速需要 1.2 万转/秒,并使用高速盘存储频繁写操作的日志或元数据。
高吞吐量型业务场景:这种场景主要是大块数据传输,如图像、视频、音频文件等。高吞吐量型业务场景对磁盘的要求没有 IOPS 密集型业务场景高,但对网络配置要求较高,同时需要配置 SSD 来处理写日志。
高容量型业务场景:这种场景主要用于存储归档、离线数据。它对磁盘的容量要求较高,对性能无过多要求。写日志也可以存储在 HDD 上。
3、Ceph 的架构
Ceph 存储集群由三类守护进程组成:OSD、Monitor 和 Manager。
OSD:OSD 是 Ceph 存储数据的空间,通常一个 HDD 是一个 OSD,并且不建议做 RAID(独立硬盘冗余阵列)。每个 OSD 有一个 OSD 守护进程。Ceph OSD 利用 Ceph 节点的 CPU、内存和网络资源来执行数据复制、纠删码、数据恢复、监控和报告功能。
Monitor:Monitor 负责维护 Ceph 存储集群,主要存储集群中数据的主副本以及存储集群的当前状态。注意,多个 Monitor 的信息需要强一致,因此要求 Monitor 节点之间的系统时间是一致的,并且网络延时要低。
Manager:Manager 是 Ceph 12.8 中的新功能,它维护放置组(PG)、进程元数据和主机元数据的详细信息。这部分功能此前由 Monitor 完成(其目的是提高 Ceph 集群的性能)。Manager 可以处理只读 Ceph CLI 查询请求,例如放置组统计信息等。此外,Manager 还提供 RESTful API 监控。
如果要使用 Ceph 文件系统和对象接口,Ceph 集群还需要具备如下节点。
元数据服务器(Metadata Server,MDS):每个 MDS 节点运行 MDS 守护程序(ceph-mds),管理与 Ceph 文件系统(CephFS)上存储的文件相关的元数据。
对象网关:Ceph 对象网关节点上运行 Ceph Rados 网关守护程序(ceph-radosgw)。它是一个构建在 librados 之上的对象存储接口,也是一个为应用程序提供 Ceph 存储集群的 RESTful 网关。Ceph 对象网关支持两个接口:S3 和 OpenStack Swift。
在介绍了 Ceph 的相关背景和架构后,我们介绍 Ceph 的配置规范。
4、Ceph 的配置规范
在介绍了 Ceph 的相关背景和架构后,我们介绍 Ceph 的配置规范。
针对 IOPS 密集型业务场景,服务器配置建议如下。
OSD:每个 NVMe SSD 上配置四个 OSD(可以使用 lvm)。
日志:存放于 NVMe SSD。
控制器:使用 Native PCIe 总线。
网络:每 12 个 OSD 配置一个万兆网口。
内存:最小为 12GB,每增加一个 OSD,增加 2GB 内存。
CPU:每个 NVMe SSD 消耗 10 CPU 内核。
针对高吞吐量型业务场景,服务器配置建议如下。
OSD:使用 7200 转速的机械盘,每个磁盘为一个 OSD。不需要配置 RAID。
日志:如果使用 SATA SSD,日志容量与 OSD 容量的比率控制在 1:4~5。如果使用 NVMe SSD,则容量比率控制在 1:12~18。
网络:每 12 个 OSD 配置一个万兆网口。
内存:最小为 12GB,每增加一个 OSD,增加 2GB 内存。
CPU:每个 HDD 消耗 0.5 CPU 内核。
针对高容量型业务场景,服务器配置建议如下。
OSD:使用 7200 转速的机械盘,每个磁盘为一个 OSD。不需要配置 RAID。
日志:使用 HDD 磁盘。
网络:每 12 个 OSD 配置一个万兆网口。
内存:最小为 12GB,每增加一个 OSD,增加 2GB 内存。
CPU:每个 HDD 消耗 0.5 CPU 内核。
除此之外,在选择 Ceph 的硬件时也有一些通用的标准,如 Ceph 节点使用相同的 I/O 控制器、磁盘大小、磁盘转速、网络吞吐量和日志配置。
Ceph 集群包含以下两类网络。
前端公共网络:处理客户端发过去的请求并且与 Ceph Monitor 通信。
后端集群网络:处理 OSD 心跳、副本复制等。
从性能角度考虑,这两类网络最好使用不同的网卡。在上面的 Ceph 安装中,我们将两个网络进行了拆分。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/f727660e05c86a51a09e6ab6d】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论