Harbor双主复制


 

 

Docker企业级仓库Harbor,根据该文章搭建两台服务器用作Harbor。

系统环境

HOSTNAME IP OS Hard
harbor1 192.168.1.12 Centos 7.6 4c4g
harbor2 192.168.1.13 Centos 7.6 4c4g

完成后在 harbor1 域名中添加 harbor2 的DNS记录,如果不添加的话,无法解析域名将不会复制成功

同样参考部署 Harbor 中最后测试部分,在 harbor2 上创建项目 goharbor。接下来要做双主复制同步镜像

因为使用了域名,且是 https 访问,所以两台服务器必须要互换证书

在 harbor1 创建 harbor2 的证书目录

mkdir /etc/docker/certs.d/harbor2.yanjiang.chai

在 harbor2 创建 harbor1 的证书目录

mkdir /etc/docker/certs.d/harbor1.yanjiang.chai
cd /usr/local/harbor/pki scp harbor1.yanjiang.chai.cert harbor2.yanjiang.chai:/etc/docker/certs.d/harbor1.yanjiang.chai scp harbor1.yanjiang.chai.key harbor2.yanjiang.chai:/etc/docker/certs.d/harbor1.yanjiang.chai scp ca.crt harbor2.yanjiang.chai:/etc/docker/certs.d/harbor1.yanjiang.chai scp harbor1.yanjiang.chai.crt harbor2.yanjiang.chai:/etc/pki/ca-trust/source/anchors

两台全部重启 docker

update-ca-trust
systemctl restart docker

因为docker的重启,harbor可能会宕掉

cd /usr/local/harbor ./install.sh

harbor1

登录web界面:https://harbor1.yanjiang.chai

进入仓库管理,在 harbor1 上添加 harbor2 的信息

icangku_guanli

填写 harbor2 的信息

目标名:自定义
描述: 自定义
目标URL:如果是域名的形式,必须在有域名服务可以解析域名,hosts是没用的,除非是ip的形式访问
访问ID:harbor2 的登录用户名,或者在 harbor2 创建的账户
访问密码:账户密码
验证远程证书:取消复选框(因为证书是自签证书,所以不需要验证)

最后测试连接成功后,再确定

若测试失败,请查看 /var/log/harbor/core.log

xinjian_mb

添加成功如下

tx_cg

创建复制规则

xj_gz

过滤器的填写参考官网的 创建复制规则

glq_gz

创建成功

copy_gl

harbor2

harbor2 做和 harbor1 同样的操作

同步测试

现在由于两个harbor中都有 goharbor 项目仓库,就将启动harbor的镜像选择一台全部上传。

这里以 harbor2 为例上传

$ docker login -u admin -p Harbor12345 https://harbor2.yanjiang.chai
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded

这里就用脚本上传了

#!/bin/bash HARBOR_IMAGE=$(docker image ls | grep -v TAG | awk '{print $1":"$2}') HARBOR_REGISTRY="harbor2.yanjiang.chai" for SOURCE_IMG in $HARBOR_IMAGE do CHANAGE_TAG_IMG="${HARBOR_REGISTRY}/${SOURCE_IMG}" docker tag $SOURCE_IMG $CHANAGE_TAG_IMG docker push $CHANAGE_TAG_IMG > /dev/null if [ $? = 0 ]; then echo -e "\033[33m${HARBOR_REGISTRY}/${SOURCE_IMG}\033[0m pushed \033[32mSuccessful\033[0m" docker image rm $CHANAGE_TAG_IMG else echo -e "\033[33m${HARBOR_REGISTRY}/${SOURCE_IMG}\033[0m pushed \033[31mFailed\033[0m" fi done

现在在 harbor1 和 harbor2 的web界面都可以看到 goharbor 项目中已存在镜像。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM