摘要:警告因?yàn)槭堑囊粋€(gè)較新的服務(wù),它只能在有限的幾個(gè)位置上使用。現(xiàn)在你可以開(kāi)始從視圖中手動(dòng)創(chuàng)建一個(gè)卷,或干脆創(chuàng)建一個(gè)使用和卷名的服務(wù)。我非常期待看到和中的共享卷會(huì)有什么下一步的發(fā)展。
如果你用過(guò)Docker你就會(huì)知道,共享卷和跨主機(jī)的數(shù)據(jù)訪問(wèn)是個(gè)非常棘手的問(wèn)題。雖然Docker的生態(tài)系統(tǒng)在逐漸走向成熟,但對(duì)大多數(shù)人來(lái)說(shuō),在不同環(huán)境中實(shí)現(xiàn)持久化存儲(chǔ)還是很麻煩的。幸運(yùn)的是,Rancher一直在研究這件事,并且想出了一個(gè)能獨(dú)特的、能解決大部分這個(gè)問(wèn)題的方案。用共享存儲(chǔ)運(yùn)行數(shù)據(jù)庫(kù)的方法仍沒(méi)有被廣泛推薦,但對(duì)于許多其他的情況,跨主機(jī)共享卷倒是一個(gè)很好的做法。
這個(gè)指南中的大部分內(nèi)容是受Rancher的一個(gè)線上Meetup的啟發(fā)。另外,如果你想自己從頭開(kāi)始搭建Convoy-NFS,這個(gè)網(wǎng)頁(yè)上有一些有關(guān)NFS配置的信息,你也許能作為參考:https://github.com/rancher/ra...。
Rancher Convoy如果你以前沒(méi)有聽(tīng)說(shuō)過(guò)Rancher的Convoy項(xiàng)目,我現(xiàn)在可以先簡(jiǎn)單介紹一下。Rancher希望可以通過(guò)Convoy項(xiàng)目讓持久化容量存儲(chǔ)變得簡(jiǎn)單方便。Convoy是一個(gè)非常棒的磁盤插件,因?yàn)樗鼮橛脩籼峁┝硕喾N不同的選擇。例如EBS卷和S3的支持,與VFS/NFS一起,為用戶提供了一些用于配置共享存儲(chǔ)的厲害并且靈活的選擇。
Dockerized-NFS這里有一個(gè)小秘訣,教你怎樣啟動(dòng)一個(gè)能和Convoy-NFS服務(wù)連接起來(lái)的Docker化的NFS服務(wù)器。Docker-NFS基本上是一個(gè)窮人的EFS。如果你想運(yùn)行它,你必須有足夠的信心,相信服務(wù)器不會(huì)被毀,或相信你的數(shù)據(jù)無(wú)足輕重,即使丟失了也無(wú)所謂。你可以在這里找到更多我過(guò)去使用的Docker NFS服務(wù)器的信息。
給點(diǎn)進(jìn)階些的提議,我會(huì)建議你看看這個(gè)叫做彈性文件存儲(chǔ)或簡(jiǎn)稱EFS的東西,它是 NFS的AWS實(shí)現(xiàn)。這個(gè)解決方案更簡(jiǎn)單粗暴,它是一個(gè)隨時(shí)可用于生產(chǎn)的NFS服務(wù)器,你可以把它視為Convoy-NFS的后端。構(gòu)建EFS是很簡(jiǎn)單的,不過(guò)它超出了這篇文章的討論范圍。你可以在這個(gè)鏈接中看看如何構(gòu)建和配置EFS。
警告:因?yàn)镋FS是AWS的一個(gè)較新的服務(wù),它只能在有限的幾個(gè)位置上使用。(不過(guò)更多的可使用位置也很快會(huì)出現(xiàn))。
下面就是對(duì)于Docker-NFS服務(wù)器來(lái)說(shuō),你的docker-compose.yml 可能的樣子:
docker-nfs: image: cpuguy83/nfs-server privileged: true volumes: - /exports command: - /exports
在采用這個(gè)容器化的NFS服務(wù)器的方法時(shí)你可能會(huì)碰到的一個(gè)疑難雜癥是,你的主機(jī)要么沒(méi)有安裝NFS內(nèi)核模塊,要么沒(méi)有打開(kāi)伴隨的服務(wù)。
在Ubuntu上很容易安裝內(nèi)核模塊,SSH到主機(jī)上, 運(yùn)行NFS Server容器以及以下命令:
sudo apt-get install nfs-kernel-server
在CoreOS上,模塊是安裝了的,只是沒(méi)有打開(kāi)。要啟用NFS,你需要SSH到對(duì)應(yīng)主機(jī)上,運(yùn)行NFS Server容器,并運(yùn)行下面的命令:
sudo systemctl start rpc-mountd配置EFS
配置EFS是很容易的。用上面提到過(guò)的鏈接,你可以了解到創(chuàng)建一個(gè)能與Convoy連接的EFS卷的全部步驟。EFS共享卷既可以簡(jiǎn)單配置成IP訪問(wèn),也可以深入地配置成通過(guò)DNS域名訪問(wèn)。
在Rancher的社區(qū)應(yīng)用服務(wù)目錄里有一個(gè)新的目錄入口,有了它,你可以直接通過(guò)Convoy使用EFS卷,這能簡(jiǎn)化某些配置。使用應(yīng)用服務(wù)目錄入口仍需要你先創(chuàng)建EFS share,但配置Convoy來(lái)與其連接的過(guò)程會(huì)簡(jiǎn)單很多。只需要從AWS里復(fù)制出EFS ID,選擇其中你已創(chuàng)建共享的區(qū)域,然后指定要將EFS share安裝到本地的位置。“/efs”就是一個(gè)很好的在最開(kāi)始測(cè)試東西的例子:
Convoy-NFS目前,Rancher還提供另外一種名叫“Convoy-NFS”的應(yīng)用服務(wù)目錄項(xiàng),來(lái)將容器連接到NFS Server上:
安裝程序是非常簡(jiǎn)單的,但也有幾件事情要注意。首先,堆棧必須命名為“Convoy-NFS”,這是插件的名稱。其次,NFS Server應(yīng)該和在其上設(shè)置NFS Server的主機(jī)名相匹配。如果你創(chuàng)建的是Docker-NFS容器,記得使用容器的IP(為了寫這篇文章,我用了一個(gè)測(cè)試環(huán)境,因而只用了Rancher容器內(nèi)部IP來(lái)部署NFS Server)。當(dāng)你用EFS創(chuàng)建你的NFS share時(shí),使用已配置的DNS的名稱。
最后一點(diǎn)要注意的是安裝選項(xiàng)和安裝點(diǎn)。這里的端口需要與將NFS Server 和(2049 for docker-nfs)配置在一起的端口相匹配,并且確保你打開(kāi)了nfsver=4。另外,如果你要使用nfsvers=4選項(xiàng),記得一定為MountDirectory用“/”。不使用nfsvers=4選項(xiàng)的話就用“/exports”。
最終一步的配置和下面看上去差不多:
proto=tcp,port=2049,nfsvers=4
你可以添加其他選項(xiàng)來(lái)調(diào)整共享,但這些都是最低限度的構(gòu)建所必需的組件。
給Rancher幾分鐘時(shí)間提供Convoy-NFS容器。一切完成后你就可以創(chuàng)建和攻擊NFS卷了。最快的檢查是否一切正常的方法,是點(diǎn)擊Infrastructure -> Storage Pools選項(xiàng)。如果你在視圖中看見(jiàn)了主機(jī),那你就可以開(kāi)始準(zhǔn)備創(chuàng)建和分享卷了。
現(xiàn)在你可以開(kāi)始從Storage Pools視圖中手動(dòng)創(chuàng)建一個(gè)卷,或干脆創(chuàng)建一個(gè)使用Convoy-NFS driver和卷名的服務(wù)。
我將創(chuàng)建一個(gè)測(cè)試容器,它可跨越兩個(gè)主機(jī)共享相同的“test_volume”以及數(shù)據(jù),如下圖所示(我在本地使用了rancher-compose來(lái)堆棧,如果你覺(jué)得使用GUI更容易的話敬請(qǐng)使用GUI)。
test: image: ubuntu volume_driver: convoy-nfs tty: true volumes: - test_volume:/data command: - bash
一個(gè)新的卷會(huì)在Storage Pools頁(yè)面上彈出來(lái):
如果你想驗(yàn)證是否一切運(yùn)行正常,你可以將容器的數(shù)量擴(kuò)展到兩個(gè)或更多個(gè)。然后exec到一個(gè)容器中,在其中創(chuàng)建一個(gè)文件,看你能否從另一個(gè)容器中讀取這個(gè)文件,而且最好是在一個(gè)不同的主機(jī)上。如果這些都沒(méi)問(wèn)題,你應(yīng)該已經(jīng)成功了:
在第一個(gè)容器中,我們可以編寫出文件:
在第二個(gè)容器中,我們可以重新讀取它,檢測(cè)一下共享存儲(chǔ)是否運(yùn)行正常:
結(jié)論隨著Convoy不斷的發(fā)展和壯大,我們會(huì)看到更多的部署的選擇。現(xiàn)在,NFS是穩(wěn)定的,能正常工作的。如果你已經(jīng)在使用AWS了,EFS會(huì)讓一切都變得更加容易。我非常期待看到Convoy和Rancher中的共享卷會(huì)有什么下一步的發(fā)展。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/28007.html
摘要:在前一篇文章學(xué)習(xí)與和應(yīng)用一初步認(rèn)識(shí)中,我們初步介紹了解決了什么問(wèn)題,容器化技術(shù)與傳統(tǒng)的虛擬化方式的區(qū)別,以及簡(jiǎn)要介紹了的幾大核心概念鏡像容器和倉(cāng)庫(kù)。針對(duì)上述問(wèn)題,提供了的,通過(guò)使用指令配置的方式來(lái)創(chuàng)建鏡像。 在前一篇文章 Docker學(xué)習(xí)與和應(yīng)用(一)_初步認(rèn)識(shí)中,我們初步介紹了Docker解決了什么問(wèn)題,Docker容器化技術(shù)與傳統(tǒng)的虛擬化方式的區(qū)別,以及簡(jiǎn)要介紹了Docker的幾大...
摘要:而項(xiàng)目代碼會(huì)隨著需求變更而經(jīng)常變化。項(xiàng)目啟動(dòng)后一般會(huì)有兩個(gè)目錄會(huì)寫入文件。 其實(shí)這個(gè)話題很簡(jiǎn)單,不是很想寫這篇文章。不過(guò)的確還是有很多朋友在打包構(gòu)建部署上存在一些問(wèn)題,恰巧最近使用 Docker 部署了幾個(gè) ThinkJS 相關(guān)的項(xiàng)目,所以還是拿出來(lái)說(shuō)說(shuō)吧。需要提前說(shuō)明的是本文并不是 Docker 的基礎(chǔ)教程,默認(rèn)大家都是了解 Docker 的。然后我會(huì)分享一下我覺(jué)得 ThinkJS ...
摘要:模版用戶可以選擇不同的基礎(chǔ)設(shè)施服務(wù)組成模版同時(shí)還是有默認(rèn)的主要模版,用戶可以快速創(chuàng)建用戶也可以把的項(xiàng)目放到模版中,來(lái)管理和部署增強(qiáng)已經(jīng)大大簡(jiǎn)化了管理和配置,在多節(jié)點(diǎn)部署中和已經(jīng)被去掉了。請(qǐng)保持關(guān)注,和一起走上偉岸光明的容器之路 開(kāi)篇第一句,先為Rancher v1.2曾經(jīng)的跳票深深抱歉(鞠躬)。我們補(bǔ)償?shù)姆绞剑褪窃诖巳铡⒋丝蹋眯掳婀δ芟蚰阕C明Rancher v1.2值得你的等待。R...
摘要:前言大型軟件,一般都有自己的構(gòu)建系統(tǒng),也不例外,本文簡(jiǎn)要介紹構(gòu)建系統(tǒng)構(gòu)建流程以為例,在命令行執(zhí)行以下命令在源代碼根目錄文件中定位到目標(biāo),該目標(biāo)的動(dòng)作是執(zhí)行腳本執(zhí)行將構(gòu)建過(guò)程拆分成一個(gè)個(gè)步驟,每個(gè)步驟 前言 大型軟件(linux,android .etc)一般都有自己的構(gòu)建系統(tǒng),k8s 也不例外,本文簡(jiǎn)要介紹 k8s 構(gòu)建系統(tǒng) 構(gòu)建流程 release 以 quick-release 為...
Docker技術(shù)之構(gòu)建鏡像和網(wǎng)絡(luò)模式解析 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...
閱讀 3572·2021-10-11 10:59
閱讀 1591·2021-09-29 09:35
閱讀 2259·2021-09-26 09:46
閱讀 3770·2021-09-10 10:50
閱讀 952·2019-08-29 12:17
閱讀 821·2019-08-26 13:40
閱讀 2433·2019-08-26 11:44
閱讀 2103·2019-08-26 11:22