Harbor双主复制

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 的信息

Harbor双主复制

填写 harbor2 的信息

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

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

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

Harbor双主复制

添加成功如下

Harbor双主复制

创建复制规则

Harbor双主复制

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

Harbor双主复制

创建成功

Harbor双主复制

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

Harbor双主复制

上一篇:Nodejs + MongoDB


下一篇:SQL 高级(4)