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