3、Harbor部署模式:单节点部署、高可用部署(HA)、多站点复制部署架构对比

在生产环境中,Harbor的部署模式直接决定了镜像供应链的可用性、数据持久性以及跨地域分发效率。本章从架构原理、组件依赖、故障域和运维复杂度四个维度,对三种主流部署模式进行系统性对比。

3.1 单节点部署(All-in-One)

单节点部署是Harbor最基础的部署形态,所有核心服务(Registry、Core、Jobservice、Portal、Database、Redis)运行在同一台主机或同一个Kubernetes Pod内。适用于开发测试环境、边缘小规模集群或PoC阶段。

适用场景: 日均镜像推送/拉取量 < 500次,存储容量 < 1TB,允许计划内停机维护。

架构特征

  • 组件耦合: 所有服务共享同一主机资源,无服务级冗余。
  • 存储依赖: 默认使用本地文件系统或NFS挂载,单点存储故障即导致服务不可用。
  • 数据库: 内嵌PostgreSQL或MariaDB,无主从复制。
  • Redis: 单实例模式,缓存与任务队列共用。

部署命令示例(Docker Compose)

# 下载离线安装包
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz
tar xzf harbor-offline-installer-v2.10.0.tgz
cd harbor

# 修改配置文件 harbor.yml
# hostname: reg.example.com
# harbor_admin_password: Harbor12345

# 执行安装
./install.sh

3.2 高可用部署(HA)

HA部署模式通过服务冗余、数据库主从、Redis哨兵或集群、共享存储后端,消除单点故障。核心目标是保证控制平面与数据平面的连续性,RTO < 5分钟,RPO ≈ 0。

关键前提: HA部署必须依赖外部高可用基础设施——分布式存储(Ceph/MinIO/S3)、负载均衡器(Nginx/HAProxy/LVS)、DNS轮询或VIP。

组件冗余策略

组件 冗余方式 故障切换机制
Harbor Core / Portal 多实例无状态部署 负载均衡器健康检查 + 会话亲和性
Registry 多实例共享存储 负载均衡器 + 存储后端高可用
Jobservice 多实例 + Redis队列 任务幂等重试 + 消费者组
PostgreSQL Patroni + 流复制(1主2从) 自动故障提升 + 虚IP漂移
Redis Sentinel 或 Redis Cluster 哨兵选举 / 集群分片
存储后端 S3兼容对象存储 / 分布式文件系统 多副本 + 故障域隔离

HA架构SVG图

Harbor 高可用部署架构(HA) 用户 / 客户端 负载均衡器 (HAProxy/Nginx) Harbor Core (实例1) Harbor Core (实例2) Registry (实例1) Registry (实例2) Jobservice (实例1) Jobservice (实例2) 共享对象存储 (S3/MinIO) PostgreSQL 主从 Redis Sentinel/Cluster 说明:所有无状态服务通过负载均衡器分发请求;有状态组件(DB/Redis/存储)采用外部高可用方案。

3.3 多站点复制部署架构

多站点复制架构解决的是跨地域镜像分发与灾备问题。每个站点独立部署一套Harbor(可以是单节点或HA),通过Harbor内置的Replication规则实现镜像、Helm Chart、OCI制品在站点间的异步或同步复制。

注意: 多站点复制不是实时强一致,而是基于事件驱动的最终一致模型。复制延迟受网络带宽、镜像大小、Jobservice并发数影响,典型延迟在秒级到分钟级。

复制模式对比

模式 触发方式 一致性 网络要求 典型场景
Push-based 源站事件触发 最终一致 源站可访问目标站 中心→边缘分发
Pull-based 目标站定时轮询 最终一致 目标站可访问源站 边缘拉取中心镜像
双向同步 两端互设规则 最终一致(需防循环) 双向网络可达 异地双活

多站点复制架构SVG图

Harbor 多站点复制部署架构 站点A(北京主中心) Harbor HA 集群 对象存储 (S3) 复制规则: Push → 上海 站点B(上海灾备) Harbor HA 集群 对象存储 (S3) 复制规则: Pull ← 北京 站点C(广州边缘) Harbor 单节点 本地文件系统 复制规则: Pull ← 上海 Push Pull 多站点复制关键设计要点 1. 复制过滤器:按项目、仓库名、标签正则过滤,避免全量复制浪费带宽。 2. 覆盖策略:保留源标签 / 替换目标标签 / 跳过已存在,需根据灾备等级选择。 3. 网络隔离:跨站点建议使用TLS mTLS或VPN隧道,复制凭证使用机器人账户+限权。 4. 复制监控:通过Jobservice日志 + Prometheus指标(harbor_replication_task_total)跟踪延迟。 5. 防循环:双向同步时必须设置复制规则跳过本地已复制的镜像,避免无限循环。 6. 带宽控制:Harbor 2.8+ 支持复制速率限制(--rate-limit),防止占满专线。

3.4 三种部署模式综合对比

对比维度 单节点部署 高可用部署(HA) 多站点复制部署
服务可用性 99.9%(单机故障即中断) 99.99%(组件冗余 + 自动切换) 99.999%(站点级故障转移)
数据持久性 依赖单点存储,RPO > 1h 共享存储 + DB主从,RPO ≈ 0 跨站点复制,RPO < 5min
部署复杂度 低(1台主机,30分钟) 中(需外部LB/DB/Redis/存储) 高(多站点网络规划 + 复制策略)
运维成本 低(单点监控) 中(需维护HA组件) 高(多站点日志/指标聚合)
镜像分发延迟 N/A(本地) N/A(本地) 秒级~分钟级(取决于网络)
推荐规模 开发/边缘 < 5节点 生产 < 100节点 跨地域 > 100节点
典型成本(月) ¥500~¥2,000 ¥5,000~¥20,000 ¥20,000~¥100,000+

3.5 选型决策建议

决策树:
1. 如果团队 < 10人、镜像量 < 100个/天 → 单节点部署(快速启动)
2. 如果服务SLA要求 99.99%、不允许停机 → HA部署(必须搭配外部高可用基础设施)
3. 如果有多地域研发团队、需要就近拉取镜像 → 多站点复制(中心Push + 边缘Pull)
4. 如果同时需要高可用和跨地域分发 → 每个站点先做HA,再配置站点间复制

在实际落地中,建议从单节点起步验证镜像供应链流程,待业务稳定后逐步演进到HA,最后根据网络拓扑规划多站点复制。Harbor 2.x 版本支持从单节点在线迁移到HA模式,无需重建数据库。