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