编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Proxmox VE+Ceph 3节点超融合平台百万IOPS挑战

wxchong 2024-07-03 02:25:04 开源技术 17 ℃ 0 评论

通过基准测试,已知单次IO的bs (block size)越大,容器化+虚拟化后对性能的损失越小。为简化测试流程,本次集群性能测试均以4K随机读写为主要测试项。

根据甲方提出的需求,在三节点pve集群中,三副本情况下,在生产容器内使用cephfs要达到如下标准:

a.4K随机读100万IOPS

b.4K随机写5万IOPS

为达到上述目标,需要做大量的优化调整工作,在基准测试中取得的成绩,因为虚拟化与容器化都会带来性能损耗,不能简单的叠加作为集群可以达到的成绩。

查询网络公开的信息,Ceph集群下4K随机读超过100万IOPS的案例(两份文档附后)有如下两种:

1. IDF16英特尔信息技术峰会

2. 镁光 9200 MAX的RA(Reference Architecture)

Micron的案例与IDF16英特尔信息技术峰会相比提供了更多的细节。以Micron为例来分析甲方需求的可行性。Micron使用了2份副本,每台服务器安装2颗24核Xeon Platinum CPU(至强的顶级系列)。每个节点由2张双端口100G网卡组成高速网络,支持最大400G网络带宽。每个节点有10 块9200 MAX NVMe SSD。这样的节点共计4台,组成测试平台。

在100%CPU负载下,Micron方案共获得了228万的随机读取iops和48万的随机写入iops。将其除以NVMe的数量(40块 NVMe SSD),则每个NVMe仅57000 随机读iops和 12000随机写iops。考虑2个副本,则每个驱动器得到12000 * 2 = 24000 iops。Ceph仅从可以单独提供290000 随机写iops和700000随机读iops的NVMe 中分别压榨出了24000 iops和57000ipos,读写损耗均达92%。这就是Ceph的开销。

Ceph是一个软件定义的存储系统,其“软件”是巨大的开销。当前的一般规则是:无论使用什么驱动器或网络,使用 Ceph都很难实现0.5ms以下的随机读取延迟和20ms以下的随机写入延迟。注意本项目搭建的是超融合平台,不是专用的分布式存储,宝贵的CPU资源不允许全部交给Ceph来消费,根据现有业务评估Ceph可以使用的CPU资源最多为50%。综合评估得出如下结论:

甲方硬件条件及最新版Ceph优化带来的性能提升,在对延迟没有极限要求的情况下,达到甲方目标是可能的。

本项目硬件配置及单项测试详见《性能测试之硬件性能基准测试》。基于Bcache技术组建ceph细节详见《Proxmox VE+Ceph 超融合项目白皮书》。本次性能测试报告所有数据,都是使用本项目的3台物理服务器组建的超融合平台上测试得出。实验过程中创建18台虚拟机,组建3主15从的k8s集群,完全模拟甲方生产环境。k8s官方文档描述只有cephfs支持多读多写,本项目以cephfs动态卷的方式将ceph挂载给k8s,通过节点调度控制,保证每个工作节点都有相同个数的fio容器。

https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes

K8s未内置cephfs驱动,cephfs动态卷驱动的安装以及k8s安装过程本报告不再详述。k8s没有平均调度pod机制,使用以下脚本控制每个节点的fio容器数量,模拟甲方生产环境,方便甲方重现性能实验。

for i in $(kubectl get nodes|grep Ready|awk '{print $1}')
do
    echo $i
    kubectl cordon $i
done

start=0
end=0
for i in $(kubectl get nodes|grep Ready|awk '{print $1}')
do
    end=`expr $end + $start + 2`
    echo $i
    kubectl uncordon $i
    kubectl scale deploy cephfs-pod-test --replicas=$end
    sleep 1
    kubectl cordon $i
done

测试思路及结果如下:

1、 验证虚拟化能否把硬件性能发挥最大化,评估最终结果性能损耗点。

以下结果是在Debian下用iostat监测,一台物理机上运行4台windows 2019虚拟机。一块P4800X分为4个区,分别挂载在4台虚拟2019上每台挂载64G,同时用CrystalDiskMark跑压测。实测表明虚拟化对硬件损耗忽略不计,其产生的压力可以将硬件全部性能发挥出来(参考《性能测试之硬件性能基准测试》)。



2、 在虚拟机产生足够压力的情况下,测试ceph极限性能。

每台物理服务器上创建4台centos虚拟机共12台虚拟机,将ceph以rbd形式挂载在12台虚拟机上,同时跑fio压测。本次测试无副本,测试目的是取得极限写性能数据。实测可知,全集群4K随机读可达131万iops,4k随机写可达14万iops。






3、 对比评估版vsan。

Vsan推荐的HCIBench压测工作是用批量创建虚拟机,在虚拟机中产生磁盘读写负载的形式实现的。同样配置的三节点vsan集群,3副本情况下,4k随机读峰值72万iops。将P4800X作为Bcache缓存层,比vsan中做缓存盘,性能高出快一倍。vsan集群中,4k随机读稳定值在49万iops,而ceph稳定在120万以上,稳定值高出2倍以上。




4、 容器环境下实测。

4.1 4K随机读







4.2 4K随机写






4.3 1M连续读写




5、 延迟测试





6、 windows挂载测试

ceph官方文档推荐使用windows server 2016 或2019挂载ceph用于生产环境,windows 10只能用于开发和测试环境。甲方开发人员需要对没纳入devops管理的老项目,在windows下挂载存储,通过覆盖class文件的方式迭代更新完成部署。符合官方推荐的应用场景。


Windows命令行下,通过以下命令挂载ceph:

ceph-dokan --id admin -l x -c C:\ProgramData\Ceph\ceph.conf

本次测试在真实办公环境下跑出,测试用windows的网络带宽并非独享;即便如此 ,在windows上,也取得了1.15GB/s的写入速度,和550MB/s的读取速度。Ceph盘的CrystalDiskMark压测结果表示,连续读写速度均能跑满或接近万兆链路极限值,整体上写入性能均高于读取性能,如图33所示。在Linux下,以内核态挂载cephfs,也取得类似的结果,cephfs的写入性能高于读取。如图34所示。





Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表