Harbor高可用私有镜像仓库搭建内网加速
团队内网拉取 Docker 镜像经常超时?
部署一个高可用的 Harbor 私有镜像仓库就能彻底解决。
本教程面向零基础运维用户,带你从服务器准备、主从部署到负载均衡配置,一步步实现内网镜像加速,保证即使主节点宕机也不影响拉取。
准备工作:服务器、域名与证书
至少准备两台 Linux 服务器(推荐 Ubuntu 20.04 或 CentOS 7.9),一台做主节点,一台做从节点。
每台服务器需要安装 Docker 和 Docker Compose(Harbor 依赖它们运行)。
另外准备一个内网域名(例如 registry.internal.com)和对应的 SSL 证书。
如果暂时没有正式证书,可以使用自签名证书,但后续所有客户端需要信任该证书。
主节点和从节点的硬件要求:CPU 2 核以上,内存 4GB 以上,存储空间根据镜像仓库大小规划,建议单独挂载一块数据盘。
三步完成主节点部署
- 下载并解压 Harbor 安装包:从 GitHub Releases 页面下载最新离线安装包(harbor-offline-installer-v2.x.x.tgz),上传到主节点
/opt目录并解压。
cd /opt && tar -xzf harbor-offline-installer-v2.*.tgz
cd harbor
- 修改配置文件:复制
harbor.yml.tmpl为harbor.yml,修改核心参数:
hostname:填写内网域名registry.internal.comhttps.certificate和https.private_key:指向准备好的 SSL 证书和密钥文件路径harbor_admin_password:设置管理员密码database.password:修改数据库密码(高可用场景建议统一)data_volume:指向数据盘挂载目录,例如/data/harbor
- 执行安装脚本:运行
./install.sh --with-trivy --with-chartmuseum(根据需求开启漏洞扫描和 Helm Chart 支持)。安装完成后访问https://registry.internal.com即可登录管理后台。
从节点同步与负载均衡配置
从节点也按上述步骤安装一份 Harbor,但需要关键调整:
- 在从节点的
harbor.yml中启用replication功能,将replication下的replicate设置为true,并配置“目标注册表”指向主节点地址(例如https://主节点IP),验证方式选择“Basic Auth”并使用主节点的管理员账号。 - 启动从节点后,在主节点创建“复制规则”,选择“基于事件”或“定时同步”,将主仓库的全部项目复制到从节点。
- 最后,在内网 DNS 服务器上将
registry.internal.com解析到负载均衡器(例如 Nginx、HAProxy)的虚拟 IP。负载均衡器将请求分发到主、从两个 Harbor 节点。建议使用健康检查,在 Nginx 配置如下:
upstream harbor_backend {
server 192.168.1.10:443 max_fails=3 fail_timeout=30s;
server 192.168.1.20:443 max_fails=3 fail_timeout=30s;
}
server {
listen 443 ssl;
server_name registry.internal.com;
ssl_certificate /etc/ssl/certs/registry.crt;
ssl_certificate_key /etc/ssl/private/registry.key;
location / {
proxy_pass https://harbor_backend;
proxy_ssl_verify off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
注意 proxy_ssl_verify off 是因为后端节点使用相同证书,避免证书校验失败。
常见问题与避坑说明
- 问题:拉取镜像时提示证书错误:如果使用自签名证书,需要在所有 Docker 客户端的
/etc/docker/certs.d/registry.internal.com/目录下放入ca.crt文件,然后重启 Docker 服务。 - 问题:从节点同步失败:检查主从节点之间的网络连通性,确认主节点的
replication服务已启动(默认./install.sh已安装)。可以在 Harbor Web 界面的“复制管理”中查看同步日志。 - 避坑:数据库版本一致:主从节点的 Harbor 版本必须严格一致,否则数据库结构不兼容会导致复制失败。升级时建议先升级从节点,验证后再升级主节点。
- 避坑:数据目录分离:不要把主从节点的数据目录放在同一块 NFS 共享存储上,否则会相互覆盖。高可用的本质是数据复制,而非共享存储。
效果验证
- 在任意内网机器上登录私有仓库:
docker login registry.internal.com,输入管理员账号密码应成功。 - 拉取一个测试镜像(例如
registry.internal.com/library/nginx),观察下载速度是否达到内网带宽上限。 - 手动停止主节点的 Harbor 服务(
docker-compose down),再次拉取同一个镜像,应该仍能从从节点正常拉取,不会出现中断。 - 查看复制管理界面,确认主节点和从节点上的镜像列表一致。
通过以上步骤,你的团队可以彻底告别公网拉取慢、单点故障的问题。
如果还需要深入细节,可以继续查看 Harbor 官方文档或历史教程中的证书配置、垃圾回收等进阶内容。