Harbor镜像仓库集群需围绕高可用、可扩展、强一致目标设计,采用接入层(Nginx/HAProxy)、服务层(≥3无状态registry节点)和存储层(MinIO/S3/CephFS等共享存储)三层架构;推荐Harbor v2.5+集群模式,依赖PostgreSQL与Redis集群保障状态一致性,并强制HTTPS、统一S3存储配置及共享Redis会话。

明确集群目标与架构层级
镜像仓库集群不是简单多开几个 registry 实例,而是围绕高可用、可扩展、强一致三个目标设计。典型三层架构包括:
- 接入层:用 Nginx 或 HAProxy 做负载均衡,支持 SSL 终止、健康检查和会话保持
- 服务层:多个 registry 实例(建议 ≥3 节点),共享后端存储,不保存本地状态
- 存储层:必须使用分布式/共享存储,如 MinIO、S3 兼容对象存储、CephFS 或 NFSv4(需支持文件锁)
选择合适的部署方案
两种主流路径:
- Registry + 外置存储 + 反向代理:轻量可控,适合中小团队。每个 registry 实例配置相同,通过环境变量指定 storage 驱动为 s3 或 filesystem(挂载同一 NFS 目录)
- Harbor 集群模式:推荐生产环境。Harbor v2.5+ 支持多节点部署,核心组件(core、registry、jobservice)可水平扩展,依赖 PostgreSQL 和 Redis 集群作为状态中心
注意:Harbor 的 registry 组件本身仍是无状态的,真正需要集群化的是数据库(PostgreSQL HA)、缓存(Redis Sentinel 或 Cluster)和对象存储。
关键配置要点
无论选哪种方案,以下配置不可跳过:
-
统一存储后端:registry 必须禁用本地文件系统存储,改用 s3/minio 配置,例如:
REGISTRY_STORAGE_S3_BUCKET=harbor-images
REGISTRY_STORAGE_S3_REGION=us-east-1
REGISTRY_STORAGE_S3_ENDPOINT=https://minio.example.com
REGISTRY_STORAGE_S3_ACCESSKEY=xxx
REGISTRY_STORAGE_S3_SECRETKEY=yyy - 共享会话与清理机制:所有 registry 实例共用同一 Redis 实例(或集群),用于 token 签发、垃圾回收锁协调
- HTTPS 强制启用:集群入口必须走 HTTPS;registry 内部通信也建议 TLS 加密,避免凭证明文传输
- 镜像删除支持:在 config.yml 中启用 delete: enabled: true,并确保存储后端支持 delete 操作(NFS 需开启 no_root_squash)
验证与运维保障
上线前必须验证:
- 单点故障测试:停掉任一 registry 实例,推送/拉取操作仍能成功
- 并发一致性测试:多客户端同时 push 同一镜像 tag,确认最终只保留一份且 digest 不冲突
- 存储清理验证:执行 registry garbage-collect 后,各节点观察到的镜像层数量同步减少
日常运维重点是监控存储水位、registry 日志中的 5xx 错误、以及 Redis/DB 连接池耗尽情况。建议接入 Prometheus + Grafana,关注 registry_storage_objects_total 和 registry_http_in_flight_requests 等指标。


















