本文作者 / 阿杜

玩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
    • 优点:稳定性和性能均介于RBDCephFS之间且支持多读多写
    • 缺点:对象存储,需要单独的客户端支持

在对比完优缺点后,我们可以看出:由于RBD不支持多读多写,无法通过RBD实现Harbor高可用,所以这里我们弃用;Ceph FSCeph RGW均支持多读多写,这里我们根据Harbor组件对Ceph RGW的支持与否进行选择,对存储性能要求比较高而且本身支持Ceph RGW存储的组件我们使用对象存储,其它组件我们使用Ceph 文件系统:

harbor高并发压测

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

我们分别针对三种存储:Ceph FSRook 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高可用?针对这些问题,我们应该如何解决?更多精彩内容见下期分享内容……

猜你还想看这些内容

●如何使用dex搭建一个身份认证系统?

●Ceph Bulestore磁盘空间分配初探

Kustomize上篇丨Helm 和 Kustomize:不只是含谷量的区别

Kustomize下篇丨Kustomize 中的增删改查

· END ·

记得文末点个好看鸭~


点就完事儿了!

文章来源于腾讯云开发者社区,点击查看原文