Harbor企业级实践丨20倍性能提升so easy!
- 2019 年 10 月 6 日
- 筆記

本文作者 / 阿杜
玩Docker,玩K8s,玩Harbor
爱技术,爱运动,爱生活
“K8s&云原生技术开放日”特邀讲师
本文内容源于“K8s&云原生技术开放日”主题演讲——Harbor企业级实践。
Harbor作为腾讯企业云中心底层统一的镜像仓库管理组件,其性能很大程度上决定了上层容器应用的发布时延。为此,我们针对Harbor做了很多性能优化,使得镜像下载速度提升了20倍。
本次分享围绕Harbor性能提升展开,依次介绍Harbor存储选型,Harbor高并发压测以及Harbor备份还原方案……

harbor介绍
Harbor是目前最流行的开源企业级镜像仓库解决方案。除了原生支持镜像仓库,chart仓库;还支持一些企业用户所迫切需要的一些功能,例如:图形用户界面、完善的认证和鉴权机制、镜像复制、镜像病毒扫描、镜像删除与垃圾回收机制以及RESTFUL API接口等。另外,它也易于部署,目前支持两种部署方式:Docker-Compose
以及Helm Chart
。


harbor存储方案
我们使用Ceph
作为Harbor持久化存储后端,在企业生产环境中Harbor对Ceph
存储的使用也进行了一次次的演变:Ceph RBD
->Ceph FS
->Ceph FS+RGW
混合存储,如下:

我们先对比一下Ceph
提供的三种存储服务的优缺点:
- Ceph RBD
- 优点:I/O带宽高,读写延迟低;稳定性好
- 缺点:多读单写,不支持多节点挂载
- Ceph FS
- 优点:多读多写,支持多节点挂载
- 缺点:I/O带宽较低,读写延迟较高,性能较差;稳定性较差
- Ceph RGW
- 优点:稳定性和性能均介于
RBD
与CephFS
之间且支持多读多写
- 缺点:对象存储,需要单独的客户端支持
- 优点:稳定性和性能均介于
在对比完优缺点后,我们可以看出:由于RBD
不支持多读多写
,无法通过RBD
实现Harbor高可用,所以这里我们弃用;Ceph FS
和Ceph RGW
均支持多读多写
,这里我们根据Harbor组件对Ceph RGW
的支持与否进行选择,对存储性能要求比较高而且本身支持Ceph RGW
存储的组件我们使用对象存储,其它组件我们使用Ceph 文件系统:


harbor高并发压测
在企业生产环境中使用Harbor,我们需要对Harbor进行高并发压测,来得出Harbor生产环境的性能数据。这里我们用三台压测机(Docker),一台被测机(Harbor)进行压测,所有机器均使用万兆网卡且忽略CPU、内存、I/0瓶颈等因素。

我们分别针对三种存储:Ceph FS
,Rook Ceph FS
以及Rook Ceph RGW
进行压测对比:
1、Ceph FS

2、Rook Ceph FS

3、Rook Ceph RGW

从压测数据可以看出:
1、随着并发量的增加,三种存储平均拉取时间均增加且成功率越来越低
2、拉取性能:Rook RGW>>Rook CephFS~=CephFS
对于Harbor对象存储的显著性能提升这里除了对象存储本身的性能要高于文件系统外,还存在如下两个原因:
1、Harbor在切换为对象存储后,采用重定向协议,所以数据不需要在Harbor这里进行中转,节省了中转时间和资源
2、流量和并发瓶颈从Harbor切到Ceph RGW
综合这些原因导致Harbor在切换Ceph RGW
后性能有了质的飞跃——提升了20倍!

harbor备份还原方案
最后我们讨论一下Harbor的备份还原(这里简称为BUR
)方案。在讨论BUR
之前,我们先回顾一下Harbor的存储选型:Ceph FS+RGW
,如下:

这里我们针对该存储选型定制备份还原方案。由于采用的是混合方案,所以我们需要分别对文件系统和对象存储进行备份还原:
1、Ceph 文件系统BUR
Ceph 文件系统备份——对于CephFS,Harbor中的应用数据保存在pv
中,而我们的部署场景实际上是落在CephFS路径上。因此要备份Harbor应用数据只需要备份每个pv
对应的CephFS目录即可

Ceph 文件系统还原——还原是备份的逆过程,只需要将备份的应用数据写入到pv
对应的CephFS路径上即可

2、Ceph 对象存储BUR
对于Ceph RGW
,Harbor中的应用数据保存在BUCKET
中,因此要备份Harbor应用数据只需要备份BUCKET
即可,还原同理(这里我们用s3cmd
工具进行数据同步):

对于Ceph RGW
的BUR,如果单纯s3cmd
同步整个应用目录,则比较慢;需要对应用目录进行数据切分,并发同步数据分区(registry-rgw-BUR-tools:https://github.com/duyanghao/registry-rgw-BUR-tools)


harbor迁移
由Harbor备份还原
衍生到一个话题:Harbor迁移
。可以认为:迁移是一种特殊的还原场景,如下:


后 续
企业在生产环境使用Harbor时会产生很多"不适应",比如:如何适配企业本身的认证&鉴权
机制?如何适配企业复杂的RESTful API
需求?如何实现Harbor高可用?针对这些问题,我们应该如何解决?更多精彩内容见下期分享内容……

猜你还想看这些内容
●Kustomize上篇丨Helm 和 Kustomize:不只是含谷量的区别
· END ·

记得文末点个好看鸭~

点就完事儿了!
