如何解決云中容器數(shù)據(jù)存儲的移動性挑戰(zhàn)?
如今,在云計算領域,越來越多的IT組織正在構建混合云和多云環(huán)境以支撐其業(yè)務運行。從容器的角度來看,我們知道,容器應用程序從一開始就內(nèi)置了非??捎^的可移動性、靈活性和效率。但是對于容器數(shù)據(jù)來說,它的移動性又如何?如何構建一個數(shù)據(jù)框架來優(yōu)化公有云,并為容器應用程序及其數(shù)據(jù)提供真正的移動性?
容器和塊存儲
容器流行的原因很大一部分來自于Docker公司,該公司向我們介紹了容器運行時、應用程序庫和多節(jié)點(服務器)配置的框架。很快,Docker就被Kubernetes——谷歌的開源容器平臺所納入。
這兩個平臺都使用基于塊的存儲來為容器數(shù)據(jù)提供持久性。最初,假定容器是無狀態(tài)的,就需要使用應用程序復制和冗余來維護對持久數(shù)據(jù)的訪問。但這被證明是不切實際的,而且大家都認為我們需要某種形式的持久性存儲,即使是對于短期存在的容器也是如此。
塊存儲速度快,為應用程序提供低延遲。在容器部署中,塊存儲設備使用本地文件系統(tǒng)進行格式化并映射到容器中。根據(jù)使用要求,塊存儲設備可以在容器的生命周期內(nèi)繼續(xù)使用,或者僅在容器運行時使用。
如果容器中的應用程序任務是可重新啟動的,那么塊存儲只需為容器數(shù)據(jù)提供可伸縮的快速存儲。通過可重新啟動,意味著應用程序組件可以用新格式化的空塊設備進行實例化。
然而,當我們走出這些簡單的界限時,存儲必須提供更多能力。例如,如果一個容器由于硬件或軟件故障而需要重新啟動,那么在現(xiàn)有塊存儲設備上重用數(shù)據(jù)可能是可行的,而不是從另一個源重新創(chuàng)建數(shù)據(jù)。如果應用程序的一部分必須移動到另一個物理位置,那么容器數(shù)據(jù)可能也必須移動。
構建一個數(shù)據(jù)平面框架
為了實現(xiàn)數(shù)據(jù)和應用程序遷移,我們需要為數(shù)據(jù)平面構建一個框架?;诖?,數(shù)據(jù)將比任何單獨的容器壽命更長,并且需要跨多個數(shù)據(jù)中心和位置移動,這意味著可能還需要在公有云和本地位置之間移動。一個很好的例子是,需要將數(shù)據(jù)復制到公有云中,從而為測試/開發(fā)環(huán)境提供原料。
對象存儲是構建數(shù)據(jù)框架的多種方法之一。它本質(zhì)上是可移動的,可以通過使用http(s)協(xié)議的廣域網(wǎng)進行訪問。對象存儲提供了跨距離復制的能力,并且可以輕松地跨平臺工作。對象存儲的主要挑戰(zhàn)是如何實現(xiàn)良好的安全性,并將數(shù)據(jù)映射到應用程序層次結構,例如,使用bucket和文件夾映射到應用程序名稱。
將塊和文件存儲添加到容器框架更加復雜。與文件存儲相比,塊存儲具有更低的延遲和更大的吞吐量,但現(xiàn)在情況已經(jīng)不同了。使用諸如NVMe這樣的新型媒介,初創(chuàng)公司正在構建高性能、可伸縮的文件系統(tǒng),這些系統(tǒng)既可以在場所中工作,也可以在公有云中工作。
本地塊存儲(如AWS的彈性計算云)的另一個挑戰(zhàn)是,這些設備只能連接到本地容器或虛擬實例。沒有直接的方法將公有云中的塊存儲復制到不同的提供商或本地位置中。
數(shù)據(jù)抽象
如果數(shù)據(jù)可移植性是必要的,那么比較好的選擇是構建一個獨立的數(shù)據(jù)平面,它不依賴于公有云提供商的本地存儲。目前也存在提供擴展塊和文件存儲的產(chǎn)品,這些產(chǎn)品可以跨越單個或多個地理位置。這包括合并公有云和私有云。
一些擴展產(chǎn)品可以在多個位置上顯示單個數(shù)據(jù)視圖,而其他產(chǎn)品使用快照來復制數(shù)據(jù)。這意味著需要復制數(shù)據(jù)并設置相應的進程,以確??梢愿櫤凸芾磔^新的副本。當使數(shù)據(jù)在大范圍內(nèi)可用時,將會有延遲問題。
API扮演的角色,以及更多的挑戰(zhàn)
生態(tài)系統(tǒng)開發(fā)人員已經(jīng)開始添加用于存儲的API。Kubernetes有容器存儲接口(CSI),它公開了一組用于創(chuàng)建和將卷附加到容器的功能。CSI確保存儲被成功映射到可以跨多個物理服務器部署的Pod中的容器。
Docker使用卷插件來實現(xiàn)與CSI相同的功能。然后,用戶可以從存儲硬件和軟件部署卷驅動程序,以確保將數(shù)據(jù)正確地從存儲映射到容器。
另外,涉及到與容器數(shù)據(jù)相關的存儲、多個容器部署以及平臺間無縫數(shù)據(jù)遷移時,我們?nèi)匀幻媾R這許多挑戰(zhàn)。例如,AWS Fargate只支持彈性云計算中的外部卷。