上面的链接地址描述了如何部署一个单机版的harbor私有镜像仓库。下面介绍高可用版本harbor的部署。从harbor的官网可以看到,harbor依赖一些基础组件,如果做高可用,则需要对依赖的租出组件redis,postgresql,nginx等。
本文采用的高可用方案是Harbor的双主复制,该方案比较简单,需要搭建至少两个Harbor节点,并且节点之间能够互相复制,然后通过VIP代理Harbor节点提供外部访问。
示意图如下:
准备工作
我这里使用了2台CentOS-7.4的虚拟机,具体信息如下表:
系统版本 | IP地址 | 角色 |
---|---|---|
VIP | 172.168.10.10 | vip |
CentOS-7.4 | 172.168.10.11 | harbor1 |
CentOS-7.4 | 172.168.10.12 | harbor2 |
搭建好两个harbor后,可以在浏览器上输入172.168.10.11:85访问,和172.168.10.12:85访问,端口是在部署harbor中设置的。在两台harbor机器上再搭建keepalived服务,在浏览器输入172.168.10.10:85依然是可以访问的。这就完成了高可用部署了,当第一台harbor出问题时,vip会漂移到第二台harbor上。
现在的问题就是如何在两个harbor之间,保证镜像是双向复制的。
配置Harbor节点互相复制
首先到第一个节点上的“仓库管理”界面中新建一个目标,这个目标就是另一台Harbor节点:
然后到“复制管理”界面中新建复制规则,如下:
资源过滤器是用于定义只复制哪些镜像的,过滤维度有名称、tag和label。不配置默认复制全部
可以看到另一台harbor(172.168.10.12:85)上有了tomcat的镜像,该镜像是从172.168.10.11:85整个harbor上复制过来的。
同样的,172.168.10.12:85这个节点也需要使用同样的方式配置对另一个节点的复制,由于是一样的步骤,这里就不重复演示了。
harbor仓库的使用
可以在/etc/docker/daemon.json中配置
"insecure-registries": ["172.168.10.10:85"]
重启docker,然后就可以pull到镜像。