Ceph企业级分布式存储:原理与工程实践
上QQ阅读APP看书,第一时间看更新

2.3.1 运行OSD所需服务器配置推荐

Ceph集群中的每个节点都需要通过不同的配置来满足生产环境所要求的高效,包含对CPU、内存、磁盘、网络等的要求。你可在12.3节获取更详细的调优建议。本节概括性地阐述配置推荐。

1.内存使用推荐

Ceph集群的性能有很多影响因素,其中每个磁盘对应的OSD守护进程都需要一定的内存来缓存热数据。磁盘数量的多少决定了每个存储节点中服务器的内存需求量。在采购硬件服务器的时候,你应该先规划存储容量,然后确定内存容量,配合其他衡量指标得到最后的服务器硬件配置参数。在生产环境下,部署Ceph集群在兼顾性能的同时,还有几种内存推荐比例可以使用。

·1GB RAM对应1TB数据

·3~6GB RAM对应1 OSD进程

·8~12GB RAM对应1 SSD进程

例如单存储节点有24个磁盘插槽,其中4个是SSD插槽,20个是HDD(SATA/SAS)插槽,你就可以为其配置如下内存容量,以保证其能在生产环境中稳定、高效地运行。

·16GB RAM(操作系统运行+服务进程)

·3~6GB RAM×20(每个HDD类型的OSD进程使用)

·8~12GB RAM×4(每个SSD类型的OSD进程使用或做加速)

综上所述,我们需要为这样的服务器节点配置184GB(16+6×20+12×4)内存。如果你购买的是16GB一条的内存条,需要为服务器配置12条(184/16=11.5,取整)内存条,即服务器节点内容应该有192GB。

2.CPU配置推荐

Ceph集群的每个存储节点上都运行了许多(根据磁盘数量决定)OSD进程来执行最终数据落盘的相关操作,涉及数据的分片和重组,因此对CPU有一定的要求。目前,对CPU的依赖程度主要看使用者追求的是哪方面性能,例如数据吞吐量和IOPS。

·IOPS(Input/Output Per Second,每秒输入/输出量或读写次数):衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量。I/O请求通常为读写数据操作请求。对于随机读写频繁的应用,IOPS是关键衡量指标,比如使用MySQL数据库。

·数据吞吐量:单位时间内可以成功传输的数据量。对于大量顺序读写的应用,我们更应关注吞吐量指标。

简而言之:

·磁盘的IOPS,也就是在一秒内磁盘执行多少次读写。

·磁盘的吞吐量,也就是磁盘每秒I/O的流量,即磁盘每秒写入及读出的数据量。

所以追求IOPS的使用者可以将SSD磁盘作为高性能磁盘存储设备,提高单位时间内的读写次数,但这在一定程度上也会增加Ceph集群的整体造价。追求吞吐量的使用者可以使用HDD+SSD(加速用)的方式进行配置,这样Ceph集群造价会降低很多。如果优化得当,也能得到不错的IOPS效果。

对于追求吞吐量的场景,假设CPU主频是2GHz,一般每个HDD类型的OSD进程需要分配0.5 ~1core。例如存储节点有24个磁盘插槽(20HDD+4SSD加速盘),在2GHz主频下要为其配置24core(20×1core(OSD用)+4core(系统用))。如果服务器是2路CPU,每个CPU要提供12core。

对于追求IOPS的场景,假设CPU主频是2GHz,一般每个NVMe SSD类型的OSD进程需要分配10core。此种场景对CPU的要求较高。对于存储非结构化数据的用户,选用吞吐量大的方案即可。

3.网络配置推荐

2.1节提到Ceph集群有两个网络,要求生产环境下两个网络带宽为万兆,并且尽可能多端口绑定以增加冗余或者并行带宽。在生产环境下,强烈推荐使用独立的网络部署Ceph。所有集群服务器内万兆网口都需要使用万兆交换机进行链路打通。一个典型的万兆交换机包含48个10G端口和4个40G端口。所有的10G端口用来连接Ceph集群的各个服务器,而4个40G端口用来连接主干交换机,以提高最大吞吐量。

Ceph集群究竟需要多大网络带宽,这和集群内的硬件资源配置有很大关系,要看追求的是IOPS还是吞吐量。如果是配置在全NVMe SSD的高性能服务器上,推荐每2个NVMe SSD类型的OSD使用10G网络;如果是配置在追求吞吐量的服务器上,可以配置12个HDD类型的OSD使用10G网络。而Ceph的两个网段将使用相同的配置。以24个HDD OSD的服务器磁盘配置为例,Ceph的Cluster和Public网络的配置推荐如下。

·Public网络:24 OSD/12=2个10G端口

·Cluster网络:24 OSD/12=2个10G端口

因此,Ceph集群需要4个10G端口。注意,这里的4个10G端口不能配置成主备模式,而是真实的并行带宽。

4.磁盘配置推荐

Ceph集群的存储节点数量多,每个节点的磁盘数量也很多。其为数据安全做了软件层面的冗余,通过副本或纠删码实现了数据安全。另外,如果磁盘配置了磁盘阵列(RAID),也会给Ceph的性能带来影响,而且在成本和存储空间上造成了不必要的浪费,因此在硬件层面不推荐配置RAID,将服务器的磁盘直接配置成JBOD模式即可。如果服务器不支持JBOD模式,就配置成RAID0。

为了提高Ceph的数据读写速度,我们还要关注另外一个因素——Ceph的数据日志加速,不论使用Filestore模式还是Bluestore模式对Ceph数据进行底层落盘处理,都需要对日志落盘进行加速,通常会配置SATA SSD或NVMe SSD作为日志加速盘。而日志加速盘和数据存储盘之间的配比关系要看选择的SSD加速盘类型,这里推荐的容量配比如下:

·SATA SSD:HDD=1:5

·NVMe SSD:HDD=1:10

如果使用的是24 HDD×4TB磁盘容量的服务器,单节点容量为96TB;如果使用SATA SSD,就要配置约20TB(96/5=19.2)容量的SSD;如果使用NVMe SSD,就要配置9.6TB的NVMe SSD。该配置看起来对日志加速盘的要求很高。在生产环境下,你也可以兼顾服务器磁盘插槽数量和容量。