OpenStack 如何跨版本升级
作者 | 孫琦
來源 |?萬博智云
OpenStack是中國私有云的事實(shí)標(biāo)準(zhǔn)
根據(jù)三方統(tǒng)計(jì)報(bào)告,2020年,中國私有云市場規(guī)模達(dá)到951.8億元,同比增長42.1%,私有云在國內(nèi)IaaS市場占比約45%。私有云提供商有望在云計(jì)算市場持續(xù)高速發(fā)展進(jìn)程中持續(xù)受益。
在中國的私有云企業(yè)排名中,以O(shè)penStack為代表的開源技術(shù)占比70%,依然占據(jù)主流。作為全球部署最廣泛的開源云基礎(chǔ)設(shè)施軟件,OpenStack經(jīng)過10年的發(fā)展,在國內(nèi)已經(jīng)形成了穩(wěn)定的以O(shè)penStack為核心的開源云生態(tài)體系。盡管在近年來受到了容器等技術(shù)的沖擊,但是在中國市場中越來越豐富、越來越成熟的用戶實(shí)踐案例表明,OpenStack開源云技術(shù)依然保持著足夠的活力。然而隨著產(chǎn)品版本迭代升級,各企業(yè)的私有云平臺運(yùn)營維護(hù),升級改造的壓力逐漸增大。
OpenStack為什么升級難?
雖然OpenStack目前已經(jīng)成為大多數(shù)私有云的解決方案,但是做過OpenStack的人都知道,版本升級是OpenStack商業(yè)化應(yīng)用最大的痛。每年兩個(gè)新版本不說,隨著版本升級,老舊的操作系統(tǒng)也不再支持,這樣讓用戶更加不敢輕易的進(jìn)行升級。雖然后續(xù)的OpenStack試圖解決這個(gè)問題,但是在大多數(shù)情況下,商業(yè)版本OpenStack為了穩(wěn)定,往往選擇一個(gè)較為固定的OpenStack版本,持續(xù)進(jìn)行迭代和優(yōu)化,這樣就帶來和社區(qū)版本較大的差異,而無法進(jìn)行升級。
之前看過360公司的一篇《橫跨7個(gè)版本的OpenStack無感知熱升級在360的落地與實(shí)踐》,洋洋灑灑數(shù)千字描述了OpenStack升級的血淚史。對于一家技術(shù)實(shí)力積累雄厚的互聯(lián)網(wǎng)公司尚且花費(fèi)了如此大的代價(jià),對于傳統(tǒng)企業(yè)客戶來說,這幾乎就成為了心中永遠(yuǎn)的痛。在實(shí)際項(xiàng)目中,由于無法實(shí)現(xiàn)平滑升級,我們往往看到很多客戶的環(huán)境部署著多套OpenStack不同版本的環(huán)境,而每一套都需要配備相應(yīng)的運(yùn)維團(tuán)隊(duì),這就造成了客戶和云平臺廠商兩難的尷尬局面。
“不識廬山真面目,只緣身在此山中”,大多數(shù)的解決方案專注于OpenStack本身,而今天這篇文章為大家?guī)硪环N不同視角的解決方案,從根本上解決OpenStack升級問題,無論你跨多少個(gè)版本,都可以完美的解決。
如何破局?
OpenStack升不動(dòng)或者不敢升本質(zhì)是云平臺上有業(yè)務(wù)系統(tǒng)運(yùn)行,所以我們本質(zhì)上要解決在升級過程中,業(yè)務(wù)系統(tǒng)連續(xù)性的問題,那么最簡單的方案就是將業(yè)務(wù)系統(tǒng)平滑的遷移至新的云平臺上,為了防止大家失去耐心讀完整篇文章,我先說解決方案:
業(yè)務(wù)系統(tǒng)遷移過程中不中斷:利用主機(jī)塊級別增量遷移方式(不是OpenStack原生的Live Migration),將主機(jī)從原有云平臺遷移至新的云平臺;
無代理方式:市面上90%以上的遷移方案都是需要在源端安裝代理,那么如果用戶云主機(jī)數(shù)量過多,一臺臺安裝代理的成本也實(shí)在太高了,對于用戶來講需要一種無代理的方式來實(shí)現(xiàn)云平臺之間的平滑遷移;
容災(zāi)漸進(jìn)式遷移:按照最小規(guī)模部署新版本OpenStack,待主機(jī)逐步遷移至新平臺后,將閑置計(jì)算節(jié)點(diǎn)重新加入回新資源池,同時(shí)在正式割接前,業(yè)務(wù)系統(tǒng)可以在新的云平臺上統(tǒng)一演練,確保業(yè)務(wù)可以正常使用,數(shù)據(jù)完整;
重建管理信息:解決了數(shù)據(jù)的問題,云平臺對應(yīng)的租戶、網(wǎng)絡(luò)、安全組等資源可以通過導(dǎo)出導(dǎo)入的方式在新的平臺上重新構(gòu)建即可。
如何解決?
HyperMotion是一款基于云原生的遷移產(chǎn)品,基于塊級別差量復(fù)制實(shí)現(xiàn)業(yè)務(wù)級別熱遷移。在我們最初設(shè)計(jì)產(chǎn)品時(shí),除了注重對云平臺云原生能力的利用,還在產(chǎn)品中加入了“軟件定義存儲控制器”層,這樣讓HyperMotion不僅僅可以使用自身的數(shù)據(jù)流能力,還能夠輕松使用開放的數(shù)據(jù)接口,從而實(shí)現(xiàn)云環(huán)境之間的“數(shù)據(jù)流轉(zhuǎn)”。另外一方面,HyperMotion是從云端反向設(shè)計(jì),不同于傳統(tǒng)的災(zāi)備產(chǎn)品,更符合云平臺管制的需求。
在本場景中,HyperMotion利用OpenStack接口和Ceph RBD接口實(shí)現(xiàn)了云主機(jī)熱遷移問題,從而解決了OpenStack自身版本的困難,基本的原理如下圖所示:
首先在舊版本OpenStack上,我們利用云主機(jī)構(gòu)建一臺源端同步代理節(jié)點(diǎn),該節(jié)點(diǎn)一方面負(fù)責(zé)調(diào)用源端OpenStack API接口,另外一方面負(fù)責(zé)與Ceph RBD進(jìn)行通訊,讀取塊級別差量數(shù)據(jù)。這種方案下,對于源端的網(wǎng)絡(luò)有一定的要求,需要源端同步代理節(jié)點(diǎn)能夠同時(shí)訪問源端同步代理及Ceph存儲網(wǎng)絡(luò)。
每次同步時(shí),為了不破壞OpenStack自有的管理體系,每一次的快照要從OpenStack層面進(jìn)行調(diào)度,之后再去Ceph層讀取數(shù)據(jù),這樣就不會產(chǎn)生垃圾數(shù)據(jù)。待數(shù)據(jù)讀出后,通過加密、壓縮等手段傳輸?shù)侥繕?biāo)平臺。
在目標(biāo)平臺上,我們需要利用云主機(jī)資源再建立一臺同步代理,用于接收數(shù)據(jù)。接收的數(shù)據(jù)并不直接寫入Ceph中,而是利用云主機(jī)直接寫入Cinder的磁盤中,這樣做的目的仍然是符合OpenStack管制的需求。
每次寫入完成后,利用Cinder快照機(jī)制,固化時(shí)間點(diǎn)數(shù)據(jù),這樣我們可以在正式割接前,進(jìn)行反復(fù)的遷移演練,保證業(yè)務(wù)系統(tǒng)割接后能夠正常使用。
最后,在割接窗口期,將最后的增量補(bǔ)全后,利用HyperMotion與OpenStack API的深度對接,按照指定規(guī)格同時(shí)指定IP地址進(jìn)行啟動(dòng),完成割接。
一句話總結(jié)一下,通過無代理,漸進(jìn)式遷移,解決OpenStack版本升級過程中的業(yè)務(wù)連續(xù)性問題,是我們在大量私有云遷移實(shí)踐中總結(jié)的一條行之有效的路徑,給大家分享。
往期推薦
從 40% 跌至 4%,“糊”了的 Firefox 還能重回巔峰嗎?
Gartner 發(fā)布 2022 年汽車行業(yè)五大技術(shù)趨勢
別再用 Redis List 實(shí)現(xiàn)消息隊(duì)列了,Stream 專為隊(duì)列而生
漫畫:什么是“低代碼”開發(fā)平臺?
點(diǎn)分享
點(diǎn)收藏
點(diǎn)點(diǎn)贊
點(diǎn)在看
總結(jié)
以上是生活随笔為你收集整理的OpenStack 如何跨版本升级的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从达标到卓越 —— API 设计之道
- 下一篇: 对象存储,为什么那么火?