容器云平臺(tái)運(yùn)維架構(gòu)如何設(shè)計(jì)?

容器云平臺(tái)有其獨(dú)特的特點(diǎn),不同于傳統(tǒng)系統(tǒng)的運(yùn)維。本文分享了作者對(duì)容器云平臺(tái)運(yùn)維范圍和運(yùn)維架構(gòu)設(shè)計(jì)的思考與實(shí)踐。

一、容器云平臺(tái)運(yùn)維范圍

不同的公司容器云平臺(tái)的建設(shè)思路和方法可能是不同的,會(huì)有差別,但對(duì)運(yùn)維人員來說,首先要明白運(yùn)維的范圍和內(nèi)容。

(一)梳理要運(yùn)維哪些內(nèi)容

作為運(yùn)維人員最重要的職責(zé)是采用一切合適的方法保障系統(tǒng)的正常運(yùn)行,從而保障業(yè)務(wù)的正常運(yùn)營。一旦系統(tǒng)出現(xiàn)問題了,就會(huì)影響到業(yè)務(wù),可能影響到客戶,可能會(huì)帶來損失,因此運(yùn)維人員要對(duì)自己的運(yùn)維內(nèi)容有清晰的認(rèn)識(shí)。才能定義設(shè)計(jì)合適的部署架構(gòu),運(yùn)維架構(gòu)。

容器云平臺(tái)運(yùn)維可能包括基礎(chǔ)設(shè)施資源運(yùn)維,比如服務(wù)器、存儲(chǔ)、網(wǎng)絡(luò)層、操作系統(tǒng)等,也包括容器云平臺(tái)自身的運(yùn)維,Docker,kubernetes,鏡像倉庫,Portal、數(shù)據(jù)庫、ETCD、ingress等,還會(huì)涉及日志、監(jiān)控、告警、認(rèn)證權(quán)限、配置等,更重要的是支撐應(yīng)用的運(yùn)維,應(yīng)用的部署、遷移、運(yùn)行狀況查看、監(jiān)控、告警提醒、擴(kuò)容、彈性伸縮、配置更新、流量分發(fā)管控、負(fù)載均衡、訪問控制等等都是容器云平臺(tái)制成應(yīng)用運(yùn)維的能力。

(二)明確運(yùn)維的工具和手段

軟件運(yùn)維不是靠赤手空拳,從效率方面講借助于工具的運(yùn)維效率是成級(jí)數(shù)倍的。因此需要熟練掌握和使用運(yùn)維工具,運(yùn)維方法。

Google SRE其實(shí)就是一個(gè)專職做運(yùn)維工具的團(tuán)隊(duì),借助于工具化不但提高運(yùn)維效率,也提高了系統(tǒng)的穩(wěn)定性和可靠性。自動(dòng)化運(yùn)維工具、監(jiān)控工具、配置管理工具等等都是在日常運(yùn)維過程中不可少的。

(三)選擇運(yùn)維架構(gòu)

不同的系統(tǒng)運(yùn)維方法和運(yùn)維架構(gòu)也是不一樣。容器云平臺(tái)有其獨(dú)特的特點(diǎn),不同于傳統(tǒng)系統(tǒng)的運(yùn)維。對(duì)運(yùn)維人員來說,最大的要求就是確定性。容器的彈性、自恢復(fù)、自動(dòng)遷移等特性在帶來便利的同時(shí)也帶來了不確定性。特別是在龐大的云計(jì)算環(huán)境。不確定性會(huì)對(duì)運(yùn)維人員來說面臨著巨大的壓力。因此作為運(yùn)維人員就需要選擇合適的架構(gòu)來規(guī)避不確定性和不穩(wěn)定性。結(jié)合容器云平臺(tái)的特性和API網(wǎng)關(guān)組成兩層服務(wù)治理體系,在提高安全性和可靠性的同時(shí)也充分利用了容器的輕量彈性特點(diǎn)。

(四)開發(fā)測(cè)試和運(yùn)維工作的差別在哪

我們都知道做運(yùn)維和開發(fā)測(cè)試工作是不一樣的。開發(fā)追求敏捷、快速,所以這些年DevOps大行其道。但運(yùn)維可能就是另外一個(gè)方向了。運(yùn)維追求的是穩(wěn)定與可靠性,每次變動(dòng)都會(huì)存儲(chǔ)風(fēng)險(xiǎn),所以盡可能穩(wěn)定。但完全穩(wěn)定是不可能的,運(yùn)維就需要實(shí)現(xiàn)一種動(dòng)態(tài)的穩(wěn)定,這和容器的彈性和可遷移性非常匹配。

(五)DevOps和SRE的精髓在哪里

DevOps追求開發(fā)運(yùn)維一體化,但在國內(nèi)并沒有多少人真正思考DevOps該如何落地。Google SRE我覺得是一種非常好的實(shí)踐,他并沒有要求開發(fā)人員去做運(yùn)維,而是很多運(yùn)維人員去做開發(fā),而開發(fā)的主要是運(yùn)維工具。所以我們看到國內(nèi)很多DevOps的宣傳其實(shí)都是很片面的,并不是基于實(shí)踐的總結(jié),而是概念的炒作。當(dāng)前云計(jì)算環(huán)境下的運(yùn)維已經(jīng)不同于傳統(tǒng)的應(yīng)用系統(tǒng)運(yùn)維。當(dāng)前應(yīng)用系統(tǒng)逐步的融合、微服務(wù)化,以云計(jì)算為底座,云就像一個(gè)大的容器,docker是這個(gè)大的容器中的小容器,承載微服務(wù)應(yīng)用的敏捷部署和彈性伸縮等能力。

所以運(yùn)維重點(diǎn)還是要保障系統(tǒng)的穩(wěn)定性,但側(cè)重在采用或自主開發(fā)眾多的、適合自己的運(yùn)維工具來協(xié)助提升運(yùn)維效率和系統(tǒng)穩(wěn)定性。

其實(shí),認(rèn)真想一下,誰開發(fā)誰運(yùn)維,一個(gè)開發(fā)人員能開發(fā)幾個(gè)服務(wù)幾個(gè)應(yīng)用?開發(fā)和運(yùn)維的工作量基本上是2:8,所以一個(gè)開發(fā)人員如果同時(shí)也做運(yùn)維的話,就會(huì)陷入運(yùn)維之中,也無法體現(xiàn)效率。

二、運(yùn)維架構(gòu)設(shè)計(jì)

基于上面的思考,那么對(duì)于容器云平臺(tái)來說,該如何設(shè)計(jì)其運(yùn)維架構(gòu)?首先鏡像倉庫是一個(gè)神一般的存在,用好鏡像倉庫將非常省力。

(一)鏡像倉庫的作用

一個(gè)鏡像倉庫可以同時(shí)配置給不同的集群,甚至不同的容器云平臺(tái)。這些集群和平臺(tái)是可以共用同一個(gè)鏡像倉庫的。基于這些考慮,我們就把鏡像倉庫作為容器云平臺(tái)不同環(huán)境之間的媒介。測(cè)試鏡像庫隔離開發(fā)和測(cè)試,生產(chǎn)鏡像庫隔離測(cè)試和生產(chǎn),鏡像倉庫之間可以實(shí)現(xiàn)鏡像的同步,或者下載上傳操作。

鏡像保證了在不同環(huán)境中部署的環(huán)境一致性。實(shí)現(xiàn)了應(yīng)用分發(fā)的標(biāo)準(zhǔn)化。而存儲(chǔ)鏡像的鏡像倉庫就很好的充當(dāng)起應(yīng)用標(biāo)準(zhǔn)化接收和分發(fā)的能力。鏡像倉庫就可以作為一個(gè)中轉(zhuǎn)連接站,將開發(fā)、測(cè)試、生產(chǎn)隔離,在提高安全性的同時(shí)也提高了穩(wěn)定性。

(二)實(shí)踐SRE

SRE非常注重運(yùn)維人員的開發(fā)能力,而不是開發(fā)人員的運(yùn)維能力。所以SRE其實(shí)是全能人才。在國內(nèi)很多人對(duì)運(yùn)維有誤解,覺得不懂開發(fā)的人才去做運(yùn)維。如何提升運(yùn)維的效率是運(yùn)維人員需要關(guān)注的問題。而采用工具,自動(dòng)化是必要的運(yùn)維手段。為了更好的使專業(yè)的人員去做專業(yè)的工作,將資源運(yùn)維與應(yīng)用運(yùn)維分離。

(三)運(yùn)維分層

從運(yùn)維的內(nèi)容我們知道,運(yùn)維從基礎(chǔ)設(shè)施資源、到平臺(tái)、到應(yīng)用的維護(hù)都是運(yùn)維人員的工作內(nèi)容。所以作為運(yùn)維人員要維護(hù)這么多內(nèi)容,往往是比較困難的,所以一個(gè)比較好的方法是把運(yùn)維內(nèi)容劃分為不同的層次,基礎(chǔ)設(shè)施資源、平臺(tái)、應(yīng)用。這樣運(yùn)維人員可以更專注自己的工作,更好的提供服務(wù)。

(四)接口標(biāo)準(zhǔn)化

要高效協(xié)同,定義標(biāo)準(zhǔn)化接口是必須的。就像基礎(chǔ)設(shè)施資源團(tuán)隊(duì)提供基礎(chǔ)設(shè)施資源服務(wù),需要標(biāo)準(zhǔn)化的虛擬機(jī)接口服務(wù)(云管平臺(tái)來實(shí)現(xiàn)),這樣才能做到敏捷擴(kuò)展,或者動(dòng)態(tài)擴(kuò)容。

(五)流程自動(dòng)化

運(yùn)維架構(gòu)中要想提高運(yùn)維效率,就需要考慮運(yùn)維流程的自動(dòng)化,減少人為的介入和干預(yù)。比如虛擬機(jī)申請(qǐng),盡量不要眾多的審批節(jié)點(diǎn)。完全自動(dòng)化。像ip地址網(wǎng)段、虛擬機(jī)配置、操作系統(tǒng)參數(shù)調(diào)整等都可以在擴(kuò)容虛擬機(jī)之前定義好,根據(jù)不同的需求自動(dòng)來創(chuàng)建分配(按規(guī)則定義自動(dòng)化創(chuàng)建)。

(六)將資源運(yùn)維與應(yīng)用運(yùn)維分離

資源運(yùn)維相對(duì)比較簡單,就是運(yùn)維我們常用的服務(wù)器、網(wǎng)絡(luò)、存儲(chǔ)、虛擬化、超融合等基礎(chǔ)設(shè)施資源。這些工作大部分是相對(duì)標(biāo)準(zhǔn)化的,通常可以采用自動(dòng)化方式來實(shí)現(xiàn)。也沒有太多的開發(fā)工作量,基本上有一套監(jiān)控管理系統(tǒng)就可以了。不過隨著多云資源管理需求的普及,多云資源管理可能會(huì)有一些復(fù)雜度。

資源運(yùn)維同樣需要不同專業(yè)的人員,比如網(wǎng)絡(luò)、存儲(chǔ)、虛擬化等。這些人員專注于基礎(chǔ)設(shè)施資源的維護(hù),為容器云平臺(tái)或容器化PaaS平臺(tái)提供資源服務(wù)。

(七)應(yīng)用運(yùn)維是核心

我們一直覺得應(yīng)用運(yùn)維才是容器云平臺(tái)的核心。因?yàn)樽罱K是為業(yè)務(wù)應(yīng)用來服務(wù)的。應(yīng)用運(yùn)維通常是在平臺(tái)提供的應(yīng)用管理的能力下,由業(yè)務(wù)應(yīng)用使用團(tuán)隊(duì)來負(fù)責(zé)應(yīng)用的運(yùn)維,研發(fā)團(tuán)隊(duì)給予支持。容器云平臺(tái)的能力就成為了關(guān)鍵。如果容器云平臺(tái)能提供完善的部署、監(jiān)控、彈性擴(kuò)容、灰度、負(fù)載策略、訪問控制、統(tǒng)計(jì)查詢等等能力,對(duì)應(yīng)用運(yùn)維人員則使運(yùn)維工作非常簡單。

(八)平臺(tái)和組件支撐應(yīng)用運(yùn)維

容器云平臺(tái)的能力在于平臺(tái)和平臺(tái)周邊組件所實(shí)現(xiàn)的能力。平臺(tái)和組件需要持續(xù)的完善和優(yōu)化,才能更好的支撐應(yīng)用運(yùn)維的需要。我們覺得這是容器云平臺(tái)運(yùn)維的重點(diǎn)。需要容器云平臺(tái)運(yùn)維團(tuán)隊(duì)來持續(xù)的開發(fā)和建設(shè)運(yùn)維工具、流程、方法來優(yōu)化容器云平臺(tái)運(yùn)維。

(九)微服務(wù)架構(gòu)微服務(wù)治理是難點(diǎn)

應(yīng)用運(yùn)維中,微服務(wù)架構(gòu)下,服務(wù)治理可能是個(gè)難點(diǎn)。微服務(wù)架構(gòu)帶來了服務(wù)運(yùn)維的復(fù)雜度,服務(wù)的部署、遷移、彈性伸縮、流量分發(fā)、內(nèi)外部負(fù)載均衡、高可用、穩(wěn)定性等需求對(duì)容器云平臺(tái)支撐的應(yīng)用運(yùn)維能力要求很高。選擇了什么樣的微服務(wù)架構(gòu),如何更好的管理治理好微服務(wù),是容器云平臺(tái)不得不考慮的一個(gè)重要問題。比如微服務(wù)中實(shí)現(xiàn)了注冊(cè)發(fā)現(xiàn),比如用springcloud的開發(fā)框架,已經(jīng)有了一套自己的服務(wù)治理方法,如何跟容器云平臺(tái)更好的融合?開發(fā)的微服務(wù)是否需要自己去實(shí)現(xiàn)注冊(cè)發(fā)現(xiàn),流量控制,熔斷降級(jí)等機(jī)制,或是簡單可以在容器云平臺(tái)來實(shí)現(xiàn)?

我們有個(gè)需求是根據(jù)響應(yīng)時(shí)間來彈性擴(kuò)容。我們沒有采用cpu內(nèi)存作為彈性伸縮的指標(biāo),因?yàn)閏pu內(nèi)存是不準(zhǔn)確的。Java內(nèi)存機(jī)制不適合采用內(nèi)存方式,而cpu變化又太快,如果拉長時(shí)間則可能導(dǎo)致延誤,出現(xiàn)大量超時(shí)。所以根據(jù)響應(yīng)時(shí)間作為擴(kuò)容指標(biāo)則相對(duì)更優(yōu)。那么這就需要在服務(wù)網(wǎng)關(guān)或容器云平臺(tái)或者api網(wǎng)關(guān)來實(shí)現(xiàn)了。服務(wù)網(wǎng)關(guān)的話需要開發(fā)人員自己實(shí)現(xiàn),每個(gè)團(tuán)隊(duì)都需要部署個(gè)這么的網(wǎng)關(guān),明顯不合適。在容器云平臺(tái)如果實(shí)現(xiàn)這樣的能力,則每個(gè)服務(wù)都可以直接使用。形成了標(biāo)準(zhǔn)化。

因此,在容器云平臺(tái)可以把服務(wù)治理能力固化,既可以減少開發(fā)工作量,也提高了運(yùn)維的效率,降低了運(yùn)維的難度。

(十)兩層治理體系

把服務(wù)治理劃分為容器云平臺(tái)層和API網(wǎng)關(guān)層則可以更好的利用容器的特點(diǎn),同時(shí)又保留了虛擬化部署、物理服務(wù)器部署的應(yīng)用服務(wù)治理的需求。

2345截圖20220818151609.png

在傳統(tǒng)企業(yè)向云遷移的過程中,還有眾多的系統(tǒng)可能不適合容器化,或者目前階段不能完全容器化(穩(wěn)定壓倒一切),因此目前可以考慮利用API網(wǎng)關(guān)來實(shí)現(xiàn)兩層的微服務(wù)治理體系,更好的管理和維護(hù)微服務(wù)應(yīng)用。

總的來說,我們定義了容器云平臺(tái)的“鏡像倉庫為媒介,將開發(fā)測(cè)試運(yùn)維分離,應(yīng)用管理為核心,將資源運(yùn)維、平臺(tái)運(yùn)維和應(yīng)用運(yùn)維分析,實(shí)現(xiàn)容器云/API網(wǎng)關(guān)兩次服務(wù)治理體系,既利用容器的優(yōu)點(diǎn),也盡可能規(guī)避其弱點(diǎn)”。

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無評(píng)論