Harbor双主复制

 

 

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

系统环境

HOSTNAMEIPOSHard
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 项目中已存在镜像。

posted @ 2021-07-06 16:33  听风TF  阅读(749)  评论(0编辑  收藏  举报