背景
Harbor作为容器化工程的制品库,在服务器数量上来之后,磁盘的膨胀速度是惊人的,单节点有些吃力,扩容就意味着停服。
Harbor最需要考虑的是网络问题和存储问题。
我们需要一个不那么频繁扩容且读写性能好点的磁盘。
现在的并发pull操作可能是所有k8s节点,数据库Postgres和Redis不能再使用默认的Harbor配置,默认是全部采用容器的形式提供服务,数据库没有持久化,且是单台机器提供服务,没有负载均衡。
上个图吧
Harbor简介
组件功能简单介绍
harbor-adminserver 配置管理中心
harbor-db Postgres数据库
harbor-jobservice 负责镜像复制
harbor-log 记录操作日志
harbor-ui Web管理页面和API
nginx 前端代理,负责前端页面和镜像上传/下载转发
redis 会话
registry 镜像存储
方案
升级Harbor的版本到1.8.0,增加gc垃圾回收,增加镜像扫描功能。
数据库拆分
APP层:jobservice|portal|core|registryctl|harbor-log
DB层:redis|Postgres
harbor服务端只运行app层的容器,DB层的PG和Redis拆出来,导出数据到aws的数据库服务,现在已经配好,并且使用正常。拆分的原因是,数据库跑在容器,没有持久化,会是之后的隐患。
存储
目前考虑的是NFS文件系统和Juicefs,但是NFS的话,需要考虑单点问题。
新旧站点转换
新的harbor服务器已经准备好,可以从旧的harbor站点复制到新的harbor站点
主备
可能的话,再添加一台从机
镜像存储
Registry默认是在/data/registry目录下,随着业务的增加,此目录的膨胀速度很快,这里采用的方案是juiceFS文件系统
当前存储目录是 /jfs/data,容量最多到10P
新的架构图
github上关于原子写入问题的讨论:传送门
下一篇 环境安装篇