日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
部署harbor高可用集群

Harbor是VMware公司開源的企業(yè)級DockerRegistry項目,其目標是幫助用戶迅速搭建一個企業(yè)級的Dockerregistry服務(wù)。 它以Docker公司開源的registry為基礎(chǔ),提供了管理UI,基于角色的訪問控制(Role Based Access Control),AD/LDAP集成、以及審計日志(Auditlogging) 等企業(yè)用戶需求的功能,同時還原生支持中文。

成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、烏魯木齊網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為烏魯木齊等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

說明

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

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

雙主復(fù)制

多harbor實例共享后端存儲

雙主復(fù)制

主從同步

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

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

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

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

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

雙主復(fù)制說明

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

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

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

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

多harbor實例共享后端存儲

方案說明

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

這個方案在實際生產(chǎn)環(huán)境中部署需要考慮三個問題:

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

Session在不同的實例上共享,這個現(xiàn)在其實已經(jīng)不是問題了,在最新的harbor中,默認session會存放在redis中,我們只需要將redis獨立出來即可??梢酝ㄟ^redis sentinel或者redis cluster等方式來保證redis的可用性。在我們的實驗環(huán)境里,仍然使用單臺redis。

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

環(huán)境說明

實驗環(huán)境

ip role
192.168.198.133 harbor
192.168.198.135 harbor
192.168.198.136 redis、mysql、nfs

需要強調(diào)的是,我們的環(huán)境中,不包括負載均衡器的配置,請自行查閱負載均衡配置相關(guān)文檔

配置說明

安裝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文件內(nèi)容如下:

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

導(dǎo)入registry數(shù)據(jù)庫

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

# 導(dǎo)出數(shù)據(jù)庫:

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

# 在宿主機上將registry.dump復(fù)制出來

docker cp  harbor_db:/registry.dump ./

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

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

# 在獨立的mysql容器將將registry數(shù)據(jù)庫導(dǎo)入

docker exec -it  /bin/bash

mysql -uroot -p

mysql> source /registry.dump

配置harbor

掛載nfs目錄

在harbor節(jié)點上掛載nfs目錄:

mount -t nfs 192.168.198.136:/data /data

修改harbor.cfg配置

在harbor節(jié)點上,下載好harbor的安裝包,生成好自簽名證書,修改prepare文件,可直接參考《企業(yè)級安裝與配置Harbor鏡像管理系統(tǒng)》,不同的是,harbor.cfg文件需要修改數(shù)據(jù)庫及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也需要作相應(yīng)修改。事實上,在harbor的安裝目錄中,有個ha的目錄,里面已經(jīng)提供了我們需要的docker-compose.yml文件,只需要復(fù)制出來即可。實際上,在這個目錄中,還提供了使用lvs作為負載均衡器時,keepalived的配置。

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

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


分享標題:部署harbor高可用集群
文章URL:http://www.dlmjj.cn/article/dheojeh.html