這篇文章給大家介紹用分布式存儲VSAN實現(xiàn)Harbor Registry的高可用方案是怎樣的,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
蓬溪網(wǎng)站建設公司成都創(chuàng)新互聯(lián)公司,蓬溪網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為蓬溪成百上千提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的蓬溪做網(wǎng)站的公司定做!
不久前,VMware發(fā)布了Docker容器數(shù)據(jù)卷的驅動(Docker Volume Driver for vSphere)1.0 beta版本,使得Docker宿主機能夠直接在vSphere的數(shù)據(jù)存儲(VSAN,VMFS,NFS等)中創(chuàng)建卷,并直接掛載到Docker容器中,可以解決Docker容器的數(shù)據(jù)持久化存儲的問題。不僅可以提供存儲,這些卷還能利用vSphere的“基于存儲策略的管理(SPBM, Storage Policy Based Management)”, 按需設置更高的“可容忍主機故障數(shù)(FTT)”、設置更大的“條帶數(shù)(SW)”等,以獲得更高級別的數(shù)據(jù)保護和更好的性能。
原理詳解
本文所描述的架構如下圖,包含3個ESXi節(jié)點組成的VSAN分布式存儲集群,以及Harbor Registry運行的一臺虛擬機。另外,在Virtual SAN中創(chuàng)建了三個Docker外部卷,用于Harbor中數(shù)據(jù)的持久化存儲。該集群由各節(jié)點的本地磁盤提供池化存儲,可以承受一個節(jié)點失效而不影響可用性。詳細配置步驟如下:
1.先搭建了一個包含3個主機的Virtual SAN集群,在其中一臺主機上安裝一個Photon OS虛擬機,作為運行Docker的宿主機。當然,讀者也可以不用Photon OS,自行安裝Ubuntu等其他Linux版本的虛擬機,只要其能正常運行Docker Engine和Docker-Compose等服務即可。
2.在“Docker Volume Driver for vSphere”項目的release頁面(https://github.com/vmware/docker-volume-vsphere/releases),分別下載安裝于ESXi主機和虛擬機上的插件,例如,對于1.0Beta版本,文件名分別為:
vmware-esx-vmdkops-1.0.beta.zip
docker-volume-vsphere-1.0.beta-1.x86_64.rpm
3.在ESXi主機上,用以下命令安裝插件,安裝完成后,不需要重新啟動。
# esxcli software vib install -d "/vmware-esx-vmdkops-1.0.beta.zip">
4.在Photon OS虛擬機上,安裝RPM包。對于基于Debian的系統(tǒng),請安裝對應的deb包。
# rpm -ivh docker-volume-vsphere-1.0.beta-1.x86_64.rpm
5.ESXi主機上插件安裝完成后,在主機上會安裝一個管理腳本,位于/usr/lib/vmware/vmdkops/bin/vmdkops_admin.py,這個腳本可以幫助vSphere管理員對創(chuàng)建的Docker外部卷進行管理。例如,可以創(chuàng)建不同的存儲策略。在Virtual SAN中,默認的存儲策略條帶數(shù)為1(即SW=1),作為示例,我們創(chuàng)建一個條帶數(shù)為2的策略。SSH 到集群中任意一個ESXi主機,運行以下命令:
# /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py policy create --name SW=2 --content '(("stripeWidth" i2))'
其中FTT=0是這個策略的名字,其中的關鍵點在于設置策略的內(nèi)容,在這里是'(("stripeWidth" i2))'。其它可設置的參數(shù)與Virtual SAN的標準參數(shù)相同,它們的參數(shù)名和說明如下:
6.此時,便可以在Photon虛擬機上,通過命令創(chuàng)建Docker卷。我們首先創(chuàng)建兩個使用默認存儲策略的卷,再創(chuàng)建一個使用SW=2的卷,以作示例。
# docker volume create --driver=vmdk --name=vsanvol1 -o size=50gb
vsanvol1
# docker volume create --driver=vmdk --name=vsanvol2 -o size=20gb
vsanvol2
# docker volume create --driver=vmdk --name=vsanvol3 -o size=20gb -o vsan-policy-name=SW=2
vsanvol3
通過指定--driver=vmdk參數(shù),即可在vSphere數(shù)據(jù)存儲中創(chuàng)建一個卷。創(chuàng)建出的卷存儲位置與Photon虛擬機的位置相同。因為Photon OS虛擬機放置在Virtual SAN存儲上,所以創(chuàng)建出的卷也放置在Virtual SAN存儲上。此卷以VMDK的形式存在,值得注意的是,因為此VMDK此時沒有掛載到任何虛擬機上,所以在瀏覽vSphere客戶端時,通過虛擬機頁面找不到關于此卷的信息。
但是,這些VMDK在vsanDatastore的dockvols目錄下面可以看見:
在下文中,我們可以看到,當此卷掛載到某個運行的容器時,在vSphere客戶端中就能通過關聯(lián)的VM找到相應的VMDK。
7.下載Harbor源代碼,在安裝之前,為了使用我們新創(chuàng)建的卷,需要修改Harbor配置中的harbor/Deploy/docker-compose.yml文件。在這之后,再參考Harbor安裝文檔進行安裝。
打開docker-compose.yml文件,找到‘registry’部分,將以下配置:
volumes:
- /data/registry:/storage
- ./config/registry/:/etc/registry/
修改為:
volumes:
- vsanvol1:/storage
- ./config/registry/:/etc/registry/
其中,‘vsanvol1’就是我們剛剛創(chuàng)建的外部卷。
另外,找到‘MySQL’部分,類似地,將以下配置:
volumes:
- /data/database:/var/lib/mysql
修改為:
volumes:
- vsanvol2:/var/lib/mysql
同樣,‘vsanvol2’是我們剛剛創(chuàng)建 的另一個外部卷。
另外,找到‘jobservice’部分,類似地,將以下配置:
volumes:
- /data/job_logs:/var/log/jobs
- ./config/jobservice/app.conf:/etc/jobservice/app.conf
修改為:
volumes:
- vsanvol3:/var/log/jobs
- ./config/jobservice/app.conf:/etc/jobservice/app.conf
同樣,‘vsanvol3’是我們剛剛創(chuàng)建 的另一個外部卷。
在文件的最后,加上以下配置:
volumes:
vsanvol1:
external: true
vsanvol2:
external: true
vsanvol3:
external: true
以指示這三個卷已經(jīng)在外部(external)創(chuàng)建成功,不需要另行創(chuàng)建。其它配置不變。然后,按照Harbor的安裝教程進行安裝。
8.Harbor啟動后,查看vSphere客戶端,發(fā)現(xiàn)這三個外部卷都已經(jīng)掛載到Photon虛擬機上了,作為‘Hard Disk 2’,‘Hard Disk 3’和‘Hard Disk 4’。在此版本中,似乎還有一些bug,例如這三個VMDK的存儲策略顯示為‘None’,但是可看出Hard Disk3的組件在Virtual SAN中是以SW=2的形式被創(chuàng)建的,另外兩個卷在創(chuàng)建的時候是使用了默認的存儲策略,例如Hard Disk 4:
這應該是Virtual SAN在識別” Docker Volume Driver for vSphere”創(chuàng)建的策略時仍有一些問題,希望后續(xù)的版本可以解決。
9.上傳兩個測試image,以測試數(shù)據(jù)是否會丟失。
10.測試HA:首先,在集群上將vSphere HA啟用,所有配置選擇默認配置即可。然后確認Photon虛擬機目前在10.162.102.130這一主機上。
11.關閉這臺主機的電源,等待一段時間等HA重啟虛擬機以后,查看Photon虛擬機的狀態(tài)。
可以看出,它已經(jīng)在另外一臺健康主機上被重啟了。
原來的三個外部卷也已經(jīng)被掛載到了重啟后的虛擬機上。因為我們關閉了一臺主機的電源,所以對于每一個VMDK,都顯示有一個丟失的組件(Absent Component),但是VSAN的默認存儲策略能夠容忍一個主機的故障,所以數(shù)據(jù)還是能正常訪問。
12.虛擬機重啟后,查看Harbor的狀態(tài),顯示所有的容器都已經(jīng)自動正常運行。
查看Harbor管理界面,兩個測試Image均正常,說明沒有數(shù)據(jù)丟失的情況發(fā)生。
當vSphere HA在其它主機上重啟Harbor虛擬機以后,Harbor中的所有容器重新啟動,但是所連接的外部卷不變,如圖所示:
關于用分布式存儲VSAN實現(xiàn)Harbor Registry的高可用方案是怎樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
標題名稱:用分布式存儲VSAN實現(xiàn)HarborRegistry的高可用方案是怎樣的
網(wǎng)站網(wǎng)址:http://aaarwkj.com/article36/gpicsg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站導航、網(wǎng)站設計公司、外貿(mào)建站、響應式網(wǎng)站、虛擬主機
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)