(十八)VMware Harbor 鏡像同步


為什么需要鏡像同步

由於對鏡像的訪問是一個核心的容器概念,在實際使用過程中,一個鏡像庫可能是不夠用的,下例情況下,我們可能會需要部署多個鏡像倉庫:

  • 國外的公有鏡像下載過慢,需要一個中轉倉庫進行加速
  • 容器規模較大,一個鏡像倉庫不堪重負
  • 對系統穩定性要求高,需要多個倉庫保證高可用性
  • 鏡像倉庫有多級規划,下級倉庫依賴上級倉庫

更常用的場景是,在企業級軟件環境中,會在軟件開發的不同階段存在不同的鏡像倉庫,

  • 在開發環境庫,開發人員頻繁修改鏡像,一旦代碼完成,生成穩定的鏡像即需要同步到測試環境。
  • 在測試環境庫,測試人員對鏡像是只讀操作,測試完成后,將鏡像同步到預上線環境庫。
  • 在預上線環境庫,運維人員對鏡像也是只讀操作,一旦運行正常,即將鏡像同步到生產環境庫。
  • 在這個流程中,各環境的鏡像庫之間都需要鏡像的同步和復制。

功能簡介

在功能設計方面,Harbor仍然以“項目”為中心, 通過對項目配置“復制策略”,標明需要復制的項目以及鏡像。管理員在復制策略中指明目標實例,即復制的“目的地”,並對它的地址和連接時使用的用戶名密碼進行設置。當復制策略被激活時,源項目下的所有鏡像,都會被復制到目標實例;此外,當源項目下的鏡像被添加或刪除(push或delete), 只要策略還在激活狀態,鏡像的變化都會同步到目標實例上去, 如下圖所示

 

在較大的容器集群中,往往需要多個Registry服務器做負載均衡,可以采用主從發布模式,鏡像只需要發布一次,就可以推送到多個Registry實例中。同時還支持雙主復制和層次型的多級鏡像發布,如下圖所示: 

 

Harbor的鏡像同步機制

 

有了多個鏡像倉庫,在多個倉庫之間進行鏡像同步馬上就成為了一個普遍的需求。比較傳統的鏡像同步方式,有兩種:

 

  • 第一種方案,使用Linux提供的RSYNC服務來定義兩個倉庫之間的鏡像數據同步。
  • 第二種方案,對於使用IaaS服務進行鏡像存儲的場景,利用IaaS的配置工具來對鏡像的同步進行配置。

 

這兩種方案都依賴於倉庫所在的存儲環境,而需要采用不同的工具策略。Harbor則提供了更加靈活的方案來處理鏡像的同步,其核心是三個概念:

 

  • 用Harbor自己的API來進行鏡像下載和傳輸,作到與底層存儲環境解耦。
  • 利用任務調度和監控機制進行復制任務的管理,保障復制任務的健壯性。在同步過程中,如果源鏡像已刪除,Harbor會自動同步刪除遠端的鏡像。在鏡像同步復制的過程中,Harbor會監控整個復制過程,遇到網絡等錯誤,會自動重試。
  • 提供復制策略機制保證項目級的復制需求。在Harbor中,可以在項目中創建復制策略,來實現對鏡像的同步。與Docker Registry的不同之處在於,Harbor的復制是推(PUSH)的策略,由源端發起,而Docker Registry的復制是拉(PULL)的策略,由目標端發起。

 

我們准備兩台機器,並分別安裝好Harbor( 版本:1.4.0 ):

主Harbor harbor.test.com 192.168.5.150
備Harbor harbor-01.test.com 192.168.5.151
docker client   192.168.5.107

1. 在主Harbor 創建新項目test

2.在主Harbor的倉庫管理->新建目標:

 

3.在Harbor的復制管理->新建規則:

4.在客戶端上傳image到主Harbor

[root@clinet ~]# docker push harbor.test.com/test/docker-test:latest
The push refers to a repository [harbor.test.com/test/docker-test]
146788dad3cb: Layer already exists 
2f6c24bddb30: Layer already exists 
952a32dca55a: Layer already exists 
b308dc99c2a4: Layer already exists 
4ac76077f2c7: Layer already exists 
latest: digest: sha256:520230466225bac646e1cd5ff645eb3f6d24b8e62039e5ffb5d355c67e4058e6 size: 1354

5.在主Harbor的復制管理中看到多了一條復制任務在執行:

6.再在備Harbor中已經看到test/docker-test.latest 已經從主Harbor自動復制過來:

參考:https://blog.csdn.net/hxpjava1/article/details/79308890

參考:https://blog.csdn.net/kozazyh/article/details/79829463

參考:https://my.oschina.net/vmwareharbor/blog/728085


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM