中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

harbor高可用集群配置

發布時間:2020-08-08 19:46:22 來源:ITPUB博客 閱讀:204 作者:yc98zp 欄目:建站服務器
arbor是由VMWare在Docker Registry的基礎之上進行了二次封裝,加進去了很多額外程序,而且提供了一個非常漂亮的web界面。

harbor高可用集群配置

說明

在上一篇  《企業級安裝與配置Harbor鏡像管理系統》中,我們簡要說明了單機版本harbor的配置。然而這種單機部署顯然無法滿足在生產中需求,必須要保證應用的高可用性。

目前有兩種主流的方案來解決這個問題:

雙主復制

多harbor實例共享后端存儲

雙主復制
主從同步

harbor官方默認提供主從復制的方案來解決鏡像同步問題,通過復制的方式,我們可以實時將測試環境harbor倉庫的鏡像同步到生產環境harbor,類似于如下流程:

harbor高可用集群配置

在實際生產運維的中,往往需要把鏡像發布到幾十或上百臺集群節點上。這時,單個Registry已經無法滿足大量節點的下載需求,因此要配置多個Registry實例做負載均衡。手工維護多個Registry實例上的鏡像,將是十分繁瑣的事情。Harbor可以支持一主多從的鏡像發布模式,可以解決大規模鏡像發布的難題:

harbor高可用集群配置

只要往一臺Registry上發布,鏡像就像“仙女散花”般地同步到多個Registry中,高效可靠。

如果是地域分布較廣的集群,還可以采用層次型發布方式,如從集團總部同步到省公司,從省公司再同步到市公司:

harbor高可用集群配置

然而單靠主從同步,仍然解決不了harbor主節點的單點問題。

雙主復制說明

所謂的雙主復制其實就是復用主從同步實現兩個harbor節點之間的雙向同步,來保證數據的一致性,然后在兩臺harbor前端頂一個負載均衡器將進來的請求分流到不同的實例中去,只要有一個實例中有了新的鏡像,就是自動的同步復制到另外的的實例中去,這樣實現了負載均衡,也避免了單點故障,在一定程度上實現了Harbor的高可用性:

harbor高可用集群配置

這個方案有一個問題就是有可能兩個Harbor實例中的數據不一致。假設如果一個實例A掛掉了,這個時候有新的鏡像進來,那么新的鏡像就會在另外一個實例B中,后面即使恢復了掛掉的A實例,Harbor實例B也不會自動去同步鏡像,這樣只能手動的先關掉Harbor實例B的復制策略,然后再開啟復制策略,才能讓實例B數據同步,讓兩個實例的數據一致。

另外,我還需要多吐槽一句,在實際生產使用中,主從復制十分的不靠譜。

所以這里推薦使用下面要說的這種方案。

多harbor實例共享后端存儲
方案說明

共享后端存儲算是一種比較標準的方案,就是多個Harbor實例共享同一個后端存儲,任何一個實例持久化到存儲的鏡像,都可被其他實例中讀取。通過前置LB進來的請求,可以分流到不同的實例中去處理,這樣就實現了負載均衡,也避免了單點故障:

harbor高可用集群配置

這個方案在實際生產環境中部署需要考慮三個問題:

共享存儲的選取,Harbor的后端存儲目前支持AWS S3、Openstack Swift, Ceph等,在我們的實驗環境里,就直接使用nfs。

Session在不同的實例上共享,這個現在其實已經不是問題了,在最新的harbor中,默認session會存放在redis中,我們只需要將redis獨立出來即可。可以通過redis sentinel或者redis cluster等方式來保證redis的可用性。在我們的實驗環境里,仍然使用單臺redis。

Harbor多實例數據庫問題,這個也只需要將harbor中的數據庫拆出來獨立部署即可。讓多實例共用一個外部數據庫,數據庫的高可用也可以通過數據庫的高可用方案保證。

環境說明
實驗環境
ip	role
192.168.198.133	harbor
192.168.198.135	harbor
192.168.198.136	redis、mysql、nfs

需要強調的是,我們的環境中,不包括負載均衡器的配置,請自行查閱負載均衡配置相關文檔

配置說明
安裝nfs
# 安裝nfs
apt install nfs-kernel-server nfs-common
# 編輯/etc/exports文件
/data	*(rw,no_root_squash)
chmod 777 -R /data
systemctl start nfs-server
安裝redis和mysql

這里我們就直接通過docker安裝,docker-compose.yml文件內容如下:

version: '3'
services:
  mysql-server:
    hostname: mysql-server
    container_name: mysql-server
    image: mysql:5.7
    network_mode: host
    volumes:
      - /mysql57/data:/var/lib/mysql
    command: --character-set-server=utf8
    environment:
      MYSQL_ROOT_PASSWORD: 123456
  redis:
    hostname: redis-server
    container_name: redis-server
    image: redis:3
    network_mode: host
啟動
docker-compose up -d
導入registry數據庫

配置好了mysql以后,還需要往mysql數據庫中導入harbor registry庫。在《企業級安裝與配置Harbor鏡像管理系統》中,我們安裝了一個單機版harbor,啟動了一個mysql,里面有一個registry數據庫,直接導出來,然后再導入到新數據庫中:

# 導出數據庫:

docker exec -it harbor_db /bin/bash
mysqldump -uroot -p --databases registry > registry.dump

# 在宿主機上將registry.dump復制出來

docker cp  harbor_db:/registry.dump ./

# 將宿主機上的registry.dump復制到獨立的mysql容器中

docker cp ./registry.dump:/registry.dump

# 在獨立的mysql容器將將registry數據庫導入

docker exec -it/bin/bash
mysql -uroot -p
mysql> source /registry.dump
配置harbor
掛載nfs目錄

在harbor節點上掛載nfs目錄:

mount -t nfs 192.168.198.136:/data /data
修改harbor.cfg配置

在harbor節點上,下載好harbor的安裝包,生成好自簽名證書,修改prepare文件,可直接參考  《企業級安裝與配置Harbor鏡像管理系統》,不同的是,harbor.cfg文件需要修改數據庫及redis配置如下:

db_host = 192.168.198.136
db_password = 123456
db_port = 3306
db_user = root
redis_url = 192.168.198.136:6379
修改docker-compose.yml配置

與單機版harbor相比,集群配置不再需要啟動mysql和redis,所以docker-compose.yml也需要作相應修改。事實上,在harbor的安裝目錄中,有個ha的目錄,里面已經提供了我們需要的docker-compose.yml文件,只需要復制出來即可。實際上,在這個目錄中,還提供了使用lvs作為負載均衡器時,keepalived的配置。

cp ha/docker-compose.yml
./prepare
./install.sh

在兩個harbor節點上完成安裝以后,我們可以通過綁定hosts到不同的節點來驗證兩個節點的負載均衡效果。

原文來自:  https://www.linuxprobe.com/harbor-high-availability.html

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

礼泉县| 康平县| 邻水| 运城市| 林口县| 新郑市| 美姑县| 河源市| 钟山县| 民县| 清徐县| 延川县| 潞城市| 刚察县| 虞城县| 牡丹江市| 甘孜| 宁国市| 吕梁市| 铁力市| 通化市| 盱眙县| 龙陵县| 武乡县| 嘉黎县| 陵水| 东明县| 郧西县| 扶沟县| 通许县| 长武县| 三明市| 桃源县| 乌什县| 旅游| 柘荣县| 奉化市| 台前县| 康定县| 高淳县| 伊川县|