各位小伙伴,近期技術(shù)文感覺發(fā)的有點(diǎn)多,不知是否給大家在工作中解決實(shí)際問(wèn)題帶來(lái)了一些靈感。為什么這么說(shuō)呢?因?yàn)檎俏恼轮猩婕暗募?xì)小知識(shí)點(diǎn)積少成多,讓我從零碎繁忙的運(yùn)維工作中得到了一定程度的解放。相信認(rèn)真讀過(guò)的小伙伴,一定會(huì)覺得工作中并非只有什么高大上的技術(shù)才能解決痛點(diǎn),恰恰相反,正是那些我們平時(shí)忽視的細(xì)節(jié)才是問(wèn)題的要害。那么只有切中要害,我們才能對(duì)癥下藥。
因此接下來(lái)一段時(shí)間,我可能會(huì)陸續(xù)分享運(yùn)維過(guò)程中對(duì)一些問(wèn)題的思考,希望給大家?guī)?lái)一定的啟發(fā)。
本次分享的是運(yùn)維管理與運(yùn)維自動(dòng)化的思考。
一、運(yùn)維的工作有哪些?
1.基礎(chǔ)設(shè)施,包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)等工作;
2.環(huán)境管理,包括開發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境等;
3.部署,將應(yīng)用或系統(tǒng)部署至不同環(huán)境;
4.監(jiān)控,對(duì)基礎(chǔ)設(shè)施、應(yīng)用或系統(tǒng)進(jìn)行監(jiān)控;
5.告警響應(yīng),對(duì)告警通知的響應(yīng)及處理;
6.性能優(yōu)化,對(duì)系統(tǒng)及相關(guān)組件性能進(jìn)行優(yōu)化;
7.系統(tǒng)高可用,對(duì)應(yīng)用系統(tǒng)中的單點(diǎn)進(jìn)行高可用升級(jí);
8.SLA保障,保證業(yè)務(wù)系統(tǒng)的可用性,可根據(jù)SLA實(shí)現(xiàn)自動(dòng)擴(kuò)縮容;
以上工作是根據(jù)運(yùn)維管理框架進(jìn)行提取,包含但并不限于以上幾方面。
二、運(yùn)維現(xiàn)狀
從“二八定律”來(lái)看,以上運(yùn)維工作有80%可以通過(guò)繁瑣的手動(dòng)處理進(jìn)行處理,有20%需要根據(jù)不同因素來(lái)進(jìn)行特定處理。
而80%的工作我們可以借助自動(dòng)化進(jìn)行處理,而剩下的20%可以借助監(jiān)控的多維監(jiān)控,對(duì)問(wèn)題進(jìn)行收集、分析進(jìn)一步判斷處理。
三、運(yùn)維管理
從運(yùn)維現(xiàn)狀來(lái)看,我們優(yōu)先需要解決的是自動(dòng)化的問(wèn)題,而自動(dòng)化的前提是標(biāo)準(zhǔn)化/規(guī)范化,而好的自動(dòng)化需要配合可視化或web化,可以將我們80%或更多的工作進(jìn)行優(yōu)化。
因此目前我們總結(jié)的運(yùn)維管理主要目標(biāo)是標(biāo)準(zhǔn)化/規(guī)范化,自動(dòng)化,可視化/web化。
其中標(biāo)準(zhǔn)化可根據(jù)運(yùn)維實(shí)際情況進(jìn)行制定;而可視化/web化,可以通過(guò)開源工具或web開發(fā)實(shí)現(xiàn)。
四、運(yùn)維自動(dòng)化
運(yùn)維自動(dòng)化可以實(shí)現(xiàn)的幾個(gè)主要方面:
1.服務(wù)器上架自動(dòng)化
新服務(wù)器或虛擬機(jī)從創(chuàng)建到交付到不同環(huán)境,需要進(jìn)行一系列的定制,如cpu、內(nèi)存、磁盤、ip地址、內(nèi)核參數(shù)優(yōu)化、時(shí)間同步、ssh加固、防火墻、各種客戶端安裝;當(dāng)然這還不夠,若運(yùn)維平臺(tái)集成了cmdb、跳板機(jī)、zabbix等,服務(wù)器上架還需要注冊(cè)到cmdb及跳板機(jī)、zabbix等管理工具;如還有其他工具也需要進(jìn)行集成。
總之,服務(wù)器上架自動(dòng)化的最終目標(biāo)是環(huán)境優(yōu)化、安全可用、注冊(cè)到一切管理工具。
2.環(huán)境定義自動(dòng)化
環(huán)境自定義分兩種情況:
(1)中小公司,測(cè)試環(huán)境包含所有的系統(tǒng),即系統(tǒng)間是不隔離的,數(shù)據(jù)庫(kù)中包含各種系統(tǒng)對(duì)應(yīng)的庫(kù);
(2)大公司,每套系統(tǒng)需要單獨(dú)一套隔離的測(cè)試環(huán)境,各系統(tǒng)間不能互相訪問(wèn);
對(duì)于環(huán)境定義的自動(dòng)化比較適用于第二種情況,需要對(duì)需求部門快速創(chuàng)建資源。
總之環(huán)境定義自動(dòng)化的主要原則無(wú)論是哪種情況,都要進(jìn)行不同程度的隔離,減少環(huán)境連錯(cuò)導(dǎo)致的問(wèn)題。排查環(huán)境問(wèn)題是運(yùn)維比較惡心的一個(gè)問(wèn)題。
3.部署自動(dòng)化
部署自動(dòng)化的過(guò)程是不斷進(jìn)化的,大體分為:腳本>批量ssh>自動(dòng)化工具>容器,從每個(gè)過(guò)程來(lái)看部署自動(dòng)化已經(jīng)有批量操作>可用性>易用性>效率不斷轉(zhuǎn)變。部署自動(dòng)化現(xiàn)在解決的不僅僅是部署本身了,還包括怎么才能更快,更容易屏蔽底層的不同。
注意:此處聯(lián)想到《DevOps》思維導(dǎo)圖中關(guān)于自動(dòng)化中的提高速度,即自動(dòng)化初步完成,還需要進(jìn)行速度方面的優(yōu)化。
另部署自動(dòng)化完成后,需要和監(jiān)控進(jìn)行聯(lián)動(dòng),即系統(tǒng)的可用性監(jiān)控、性能監(jiān)控等需要自動(dòng)添加到監(jiān)控系統(tǒng)。
4.監(jiān)控自動(dòng)化
從《系統(tǒng)監(jiān)控體系》中我們知道監(jiān)控對(duì)象分為從多個(gè)維度,每個(gè)維度可能用到的工具不一樣,即監(jiān)控自動(dòng)化可能需要對(duì)接不同的工具。如:
(1)自動(dòng)添加可用性監(jiān)控,如端口、url監(jiān)控等
(2)自動(dòng)添加日志狀態(tài)監(jiān)控,如status、error等
當(dāng)然監(jiān)控自動(dòng)化不僅僅只針對(duì)監(jiān)控,還要兼顧到故障恢復(fù)的自動(dòng)化,即故障自愈。
5.版本發(fā)布自動(dòng)化
在服務(wù)器規(guī)模不大的情況下,版本發(fā)布要考慮摘節(jié)點(diǎn)、屏蔽告警等,需要和nginx、監(jiān)控進(jìn)行聯(lián)動(dòng)。如:
(1)nginx實(shí)現(xiàn)平滑摘節(jié)點(diǎn)
(2)調(diào)用api實(shí)現(xiàn)監(jiān)控項(xiàng)的禁用及啟動(dòng)
五、運(yùn)維自動(dòng)化的幾個(gè)階段
站得高,看得遠(yuǎn)。無(wú)論我們正在做哪個(gè)方面的自動(dòng)化,從更高的層次了解運(yùn)維自動(dòng)化的各個(gè)階段,對(duì)我們更有益處:
1.操作自動(dòng)化
這個(gè)層次的特征是把一系列的手工執(zhí)行的操作,用腳本或工具串聯(lián),在一定程度上解決了運(yùn)維手動(dòng)執(zhí)行的問(wèn)題。但是不同的場(chǎng)景需要不斷調(diào)整腳本或工具,反而增大了出錯(cuò)概率。
2.場(chǎng)景自動(dòng)化
這個(gè)層次的特征是工具會(huì)根據(jù)外部環(huán)境判斷如何運(yùn)行,而這些判斷條件是運(yùn)維事先定義好的。此層次的運(yùn)維系統(tǒng)需要各類環(huán)境數(shù)據(jù)來(lái)作為判斷條件,同時(shí)還要能夠變化操作行為。
另,此層次的運(yùn)維系統(tǒng)需要跟很多第三方系統(tǒng)對(duì)接(cmdb、網(wǎng)管系統(tǒng))。
3.智能化
此層次的運(yùn)維系統(tǒng)具備數(shù)據(jù)核心(大數(shù)據(jù)存儲(chǔ),所有運(yùn)營(yíng)中的數(shù)據(jù)都會(huì)按關(guān)聯(lián)關(guān)系集中存儲(chǔ)),具備根據(jù)數(shù)據(jù)自己分析和判斷、并自我決策和執(zhí)行的能力。
在此層次,運(yùn)維的主要工作是為系統(tǒng)增添分析策略、運(yùn)營(yíng)和維護(hù)此智能運(yùn)維系統(tǒng),以及在系統(tǒng)執(zhí)行的關(guān)鍵節(jié)點(diǎn)上介入做人工判斷。
六、怎樣做運(yùn)維自動(dòng)化
在我們思考怎么做運(yùn)維自動(dòng)化之前,我們需要意識(shí)到“企業(yè)的架構(gòu)不是設(shè)計(jì)出來(lái)的,是演變而來(lái)的”。因此我們可以借助這個(gè)作為指導(dǎo)思想。
1.先解決痛點(diǎn)
日常工作中,對(duì)常見問(wèn)題進(jìn)行分類和梳理,能做成工具的就工具化,能程序化操作的,就避免人為干預(yù)。
至于是否基于cmdb,反而不太重要,特別是如果業(yè)務(wù)系統(tǒng)并沒有那么大,服務(wù)器的變動(dòng)也沒那么頻繁的話。
2.選擇正確的階段
運(yùn)維自動(dòng)化一般沿襲這樣的階段:手動(dòng)支撐 => 線上標(biāo)準(zhǔn)規(guī)范化 => 運(yùn)維工具化 => 平臺(tái)自助化/自動(dòng)化。選擇適合自己當(dāng)前業(yè)務(wù)發(fā)展階段的運(yùn)維自動(dòng)化方式,不要一口吃成胖子。
另外,對(duì)于大中型運(yùn)維自動(dòng)化平臺(tái)而言, CMDB和配置系統(tǒng)依然不可或缺。
CMDB即配置管理數(shù)據(jù)庫(kù),一般用于統(tǒng)一管理IT數(shù)據(jù)、服務(wù)器數(shù)據(jù)資產(chǎn)等。CMDB數(shù)據(jù)的準(zhǔn)確性和權(quán)威性,關(guān)系到運(yùn)維自動(dòng)化是否走在正確的路上。
七、總結(jié)
1.運(yùn)維自動(dòng)化
在以上自動(dòng)化過(guò)程中,在不同的自動(dòng)化階段需要對(duì)接不同的第三方系統(tǒng),因此可以看出一條統(tǒng)一的ESB(企業(yè)系統(tǒng)總線)來(lái)實(shí)現(xiàn)對(duì)系統(tǒng)的接口對(duì)接是多么重要。但是也并不是沒有ESB就不好,不同階段解決的痛點(diǎn)不一樣,只有適合業(yè)務(wù)發(fā)展的階段的運(yùn)維自動(dòng)化才是最好的。
2.運(yùn)維管理
文章開頭說(shuō)運(yùn)維管理主要目標(biāo)是標(biāo)準(zhǔn)化/規(guī)范化,自動(dòng)化,可視化/web化,從切身體驗(yàn)來(lái)看運(yùn)維管理的目標(biāo)也是隨著運(yùn)維自動(dòng)化階段的不同而變化的。
例如現(xiàn)在公司已經(jīng)初步做到場(chǎng)景自動(dòng)化及智能化,雖然還不深入,在一定程度上我的運(yùn)維工作也已經(jīng)解放了80%左右,已經(jīng)給我釋放了大部分時(shí)間,我也在想運(yùn)維管理是否應(yīng)該步入下一個(gè)階段:運(yùn)維服務(wù)化?
理由:
(1)運(yùn)維自動(dòng)化的價(jià)值在于,將運(yùn)維從繁瑣的、例行、容易發(fā)生人為事故的工作中脫離出來(lái),做更有價(jià)值的業(yè)務(wù)運(yùn)維和服務(wù)運(yùn)維。
所以,從這個(gè)角度來(lái)看,運(yùn)維自動(dòng)化既不是起點(diǎn),也不是終點(diǎn)。運(yùn)維自動(dòng)化不是萬(wàn)能的,我們需要看清楚它的位置。
(2)運(yùn)維的本質(zhì)到底是服務(wù),是服務(wù)于業(yè)務(wù),因?yàn)檫\(yùn)維是用技術(shù)解決業(yè)務(wù)問(wèn)題,運(yùn)維的價(jià)值要依托于業(yè)務(wù)才能體現(xiàn)。運(yùn)維不是因?yàn)榧夹g(shù)高深,或者管理了幾萬(wàn)臺(tái)服務(wù)器而很牛逼,也不是能玩轉(zhuǎn)很多開源工具而很牛逼,這都不是運(yùn)維的關(guān)鍵。對(duì)于運(yùn)維來(lái)說(shuō),服務(wù)第一,技術(shù)第二。運(yùn)維技術(shù)再牛,如果不能服務(wù)于業(yè)務(wù),幫助業(yè)務(wù)取得成功,那價(jià)值也是有限的。
參考:
1.高效運(yùn)維:運(yùn)維自動(dòng)化之殤
https://yq.aliyun.com/articles/54429
2.騰訊最賺錢的部門是怎么做運(yùn)維的?
https://www.cnblogs.com/peter316/p/6287264.html