Harbor高可用私有镜像仓库搭建教程:从零开始集群部署

Harbor高可用私有镜像仓库搭建教程:从零开始集群部署

生产环境中,单机Harbor一旦宕机,整个容器镜像拉取和推送都会受影响。
本文用实战步骤教你在两台服务器上部署Harbor高可用集群,共用外部数据库和对象存储,前端通过负载均衡统一入口。
读完你就能照着操作,获得一个稳定可靠的私有镜像仓库。

硬件与软件环境准备清单

高可用需要至少两个Harbor节点、一个外部数据库、一个外部Redis和一个共享存储。
以下是推荐规格:

  • Harbor节点:2台服务器(4C8G以上,CentOS 7.9或Ubuntu 20.04)
  • 数据库:PostgreSQL 13+(也可用MySQL 8.0,但Harbor官方推荐PostgreSQL)
  • 缓存:Redis 6+(用于会话共享和任务队列)
  • 存储:NFS或S3对象存储(存放镜像数据)
  • 负载均衡:Nginx或HAProxy(统一入口,约2C4G即可)

所有节点需安装Docker和Docker Compose。
命令行示例:

# 在每台Harbor节点上安装Docker
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable --now docker

# 安装Docker Compose
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

一步步搭建Harbor高可用集群

1. 配置外部数据库与Redis

创建PostgreSQL数据库和用户:

CREATE USER harbor WITH PASSWORD 'your_strong_password';
CREATE DATABASE harbor OWNER harbor;
GRANT ALL PRIVILEGES ON DATABASE harbor TO harbor;

同样创建Redis实例(建议用独立服务器,关闭持久化或采用RDB)。

2. 下载并配置Harbor

在两台节点上下载Harbor离线安装包并解压:

wget https://github.com/goharbor/harbor/releases/download/v2.11.0/harbor-offline-installer-v2.11.0.tgz
tar zxf harbor-offline-installer-v2.11.0.tgz
cd harbor

复制harbor.yml.tmplharbor.yml,修改关键参数:

hostname: harbor.yourdomain.com   # 负载均衡的域名或IP
database:
  type: external
  host: 192.168.1.100
  port: 5432
  username: harbor
  password: your_strong_password
  core_db: harbor
  jobservice_db: harbor_job_service
  registry_db: harbor_registry
  notary_server_db: harbor_notary_server
  trivy_db: harbor_trivy
redis:
  type: external
  host: 192.168.1.101
  port: 6379
  password:
storage_service:
  type: filesystem
  filesystem:
    rootdir: /data/harbor   # 需要共享存储挂载点,例如NFS
注意:两节点的hostname填同一域名,storage_servicerootdir必须指向同一个共享存储路径(如NFS挂载)。存储类型也可改用s3,配置阿里云OSS等。

3. 执行安装并启动

在每个节点上执行:

./install.sh

等待脚本完成,Harbor会以容器方式启动。
运行docker-compose ps确认所有服务状态正常。

配置负载均衡与前端统一入口

在负载均衡服务器上安装Nginx,配置如下:

upstream harbor_backend {
    server 192.168.1.10:443 max_fails=3 fail_timeout=30s;
    server 192.168.1.11:443 max_fails=3 fail_timeout=30s;
}

server {
    listen 443 ssl;
    server_name harbor.yourdomain.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass https://harbor_backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

如果使用HTTP,将443改为80并去掉ssl相关指令。
负载均衡的server_name需与Harbor节点hostname一致。

常见问题与避坑指南

  1. 数据库连接失败:检查PostgreSQL是否允许远程连接(pg_hba.conf添加0.0.0.0/0并重启)。
  2. 存储权限不足:共享存储目录需对所有Harbor节点有读写权限,建议用chown -R 10000:10000 /data/harbor(Harbor registry容器默认UID 10000)。
  3. Redis认证:若Redis设了密码,在harbor.ymlredis.password填写,否则留空。
  4. 证书不一致:所有节点使用同一套SSL证书,否则负载均衡转发会报错。
  5. 后台任务超时:若镜像同步或垃圾清理慢,可调整jobservice并发数。

验证集群功能是否正常

完成部署后,打开浏览器访问https://harbor.yourdomain.com,使用默认管理员admin/Harbor12345登录(建议立即修改密码)。

执行基本操作测试:

# 登录仓库
docker login harbor.yourdomain.com -u admin -p Harbor12345

# 推送一个测试镜像
docker tag nginx:latest harbor.yourdomain.com/library/nginx:test
docker push harbor.yourdomain.com/library/nginx:test

# 在另一台机器上拉取
docker pull harbor.yourdomain.com/library/nginx:test

若以上步骤全部成功,说明高可用集群搭建完毕。
此时关闭其中一台Harbor节点,镜像推送和拉取仍可通过另一节点正常完成。

如果你对Harbor的其他高级功能感兴趣,比如镜像复制、漏洞扫描或RBAC权限配置,可以继续查看本站相关教程。

分享到:
上一篇
收录诊断全流程排查网站抓取异常:网站抓取异常怎么办?一份完整
下一篇
多站点批量绑定SSL证书宝塔自动化
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意