自動化運(yùn)維架構(gòu)設(shè)計_第1頁
自動化運(yùn)維架構(gòu)設(shè)計_第2頁
自動化運(yùn)維架構(gòu)設(shè)計_第3頁
自動化運(yùn)維架構(gòu)設(shè)計_第4頁
自動化運(yùn)維架構(gòu)設(shè)計_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 自動化運(yùn)維架構(gòu)設(shè)計前言運(yùn)維自動化是我們所渴望獲得的,但是我們在一味強(qiáng)調(diào)自動化能力時,卻忽略了影響自動化落地的一個關(guān)鍵因素。那便是跟運(yùn)維朝夕相處,讓人又愛又恨的業(yè)務(wù)架構(gòu)。因?yàn)闃I(yè)務(wù)架構(gòu)是決定運(yùn)維效率和質(zhì)量的關(guān)鍵因素之一,所以我想跟大家一起聊一下怎么樣的架構(gòu)設(shè)計是對運(yùn)維友好的。結(jié)合這些年在騰訊遇到的業(yè)務(wù)架構(gòu)和做運(yùn)維規(guī)劃時對業(yè)務(wù)非功能規(guī)范的思考,我們可以把面向運(yùn)維的架構(gòu)設(shè)計分成六大設(shè)計要點(diǎn)。要點(diǎn)一:架構(gòu)獨(dú)立任何架構(gòu)的產(chǎn)生都是為了滿足特定的業(yè)務(wù)訴求,如果我們在滿足業(yè)務(wù)要求的同時,能夠兼顧運(yùn)維對架構(gòu)管理的非功能性要求。那么我們有理由認(rèn)為這樣的架構(gòu)是對運(yùn)維友好的。站在運(yùn)維的角度,所訴求的架構(gòu)獨(dú)立包含四個方

2、面:獨(dú)立部署,獨(dú)立測試,組件化和技術(shù)解耦。 獨(dú)立部署指的是一份源代碼,可以按照便于運(yùn)維的管理要求去部署、升級、伸縮等,可通過配置來區(qū)分地域分布。服務(wù)間相互調(diào)用通過接口請求實(shí)現(xiàn),部署獨(dú)立性也是運(yùn)維獨(dú)立性的前提。 獨(dú)立測試運(yùn)維能夠通過一些便捷的測試用例或者工具,驗(yàn)證該業(yè)務(wù)架構(gòu)或服務(wù)的可用性。具備該能力的業(yè)務(wù)架構(gòu)或服務(wù)讓運(yùn)維具備了獨(dú)立上線的能力,而不需要每次發(fā)布或變更都需要開發(fā)或測試人員的參與。 組件規(guī)范指的是在同一個公司內(nèi)對相關(guān)的技術(shù)能有很好的框架支持,從而避免不同的開發(fā)團(tuán)隊(duì)使用不同的技術(shù)?;蛘呓M件,造成公司內(nèi)部的技術(shù)架構(gòu)失控。這種做法能夠限制運(yùn)維對象的無序增加,讓運(yùn)維對生產(chǎn)環(huán)境始終保持著掌控。同

3、時也能夠讓運(yùn)維保持更多的精力投入,來圍繞著標(biāo)準(zhǔn)組件做更多的效率與質(zhì)量的建設(shè)工作。 技術(shù)解耦指的是降低服務(wù)和服務(wù)之間相互依賴的關(guān)系,也包含了降低代碼對配置文件的依賴。這也是實(shí)現(xiàn)微服務(wù)的基礎(chǔ),實(shí)現(xiàn)獨(dú)立部署、獨(dú)立測試、組件化的基礎(chǔ)。要點(diǎn)二:部署友好DevOps 中有大量的篇幅講述持續(xù)交付的技術(shù)實(shí)踐,希望從端到端打通開發(fā)、測試、運(yùn)維的所有技術(shù)環(huán)節(jié),以實(shí)現(xiàn)快速部署和交付價值的目標(biāo)??梢?,部署是運(yùn)維日常工作很重要的組成部分,是屬于計劃內(nèi)的工作,重復(fù)度高,必須提升效率。實(shí)現(xiàn)高效可靠的部署能力,要做好全局規(guī)劃,以保證部署以及運(yùn)營階段的全方位運(yùn)維掌控。有五個緯度的內(nèi)容是與部署友好相關(guān)的: CMDB配置在每次部署

4、操作前,運(yùn)維需要清晰的掌握該應(yīng)用與架構(gòu)、與業(yè)務(wù)的關(guān)系,為了更好的全局理解和評估工作量和潛在風(fēng)險。在織云自動化運(yùn)維平臺中,我們習(xí)慣于將業(yè)務(wù)關(guān)系、集群管理、運(yùn)營狀態(tài)、重要級別、架構(gòu)層等配置信息作為運(yùn)維的管理對象納管于CMDB配置管理數(shù)據(jù)庫中。這種管理辦法的好處很明顯,集中存儲運(yùn)維對象的配置信息,對日后涉及的運(yùn)維操作、監(jiān)控和告警等自動化能力建設(shè),將提供大量的配置數(shù)據(jù)支撐和決策輔助的功效。 環(huán)境配置在運(yùn)維標(biāo)準(zhǔn)化程度不高的企業(yè)中,阻礙部署交付效率的原罪之一便是環(huán)境配置,這也是容器化技術(shù)主要希望解決的運(yùn)維痛點(diǎn)之一。騰訊的運(yùn)維實(shí)踐中,對開發(fā)、測試、生產(chǎn)三大主要環(huán)境的標(biāo)準(zhǔn)化管理,通過枚舉納管與環(huán)境相關(guān)的資源集

5、合與運(yùn)維操作,結(jié)合自動初始化工具以實(shí)現(xiàn)標(biāo)準(zhǔn)環(huán)境管理的落地。 依賴管理解決應(yīng)用軟件對庫、運(yùn)營環(huán)境等依賴關(guān)系的管理。在織云實(shí)踐經(jīng)驗(yàn)中,我們利用包管理,將依賴的庫文件或環(huán)境的配置,通過整體打包和前后置執(zhí)行腳本的方案,解決應(yīng)用軟件在不同環(huán)境部署的難題。業(yè)界還有更輕量的容器化交付方法,也是不錯的選擇。 部署方式持續(xù)交付原則提到要打造可靠可重復(fù)的交付流水線,對應(yīng)用軟件的部署操作,我們也強(qiáng)烈按此目標(biāo)來規(guī)劃。業(yè)界有很多案例可以參考,如Docker的Build、Ship、Run,如織云的通過配置描述、標(biāo)準(zhǔn)化流程的一鍵部署等等。 發(fā)布自測發(fā)布自測包含兩部分:應(yīng)用的輕量級測試;發(fā)布/變更內(nèi)容的校對。建設(shè)這兩種能力以

6、應(yīng)對不同的運(yùn)維場景需求,如在增量發(fā)布時,使用發(fā)布內(nèi)容的校對能力,運(yùn)維人員可快速的獲取變更文件md5,或?qū)ο嚓P(guān)的進(jìn)程和端口的配置信息進(jìn)行檢查比對,確保每次發(fā)布變更的可靠。同理,輕量級測試則是滿足發(fā)布時對服務(wù)可用性檢測的需求,此步驟可以檢測服務(wù)的連通性,也可以跑些主干的測試用例。 灰度上線在日常運(yùn)維三十六計中有這么一句話:對不可逆的刪除或修改操作,盡量延遲或慢速執(zhí)行。這便是灰度的思想,無論是從用戶、時間、服務(wù)器等緯度的灰度上線,都是希望盡量降低上線操作的風(fēng)險,業(yè)務(wù)架構(gòu)支持灰度發(fā)布的能力,讓應(yīng)用部署過程的風(fēng)險降低,對運(yùn)維更友好。要點(diǎn)三:可運(yùn)維性運(yùn)維腦海中最理想的微服務(wù)架構(gòu),首當(dāng)其沖的肯定是可運(yùn)維性強(qiáng)

7、的那類。不具可運(yùn)維性的應(yīng)用或架構(gòu),對運(yùn)維團(tuán)隊(duì)帶來的不僅僅是黑鍋,還有對他們職業(yè)發(fā)展的深深的傷害,因?yàn)榫S護(hù)一個沒有可運(yùn)維性的架構(gòu),簡直就是在浪費(fèi)運(yùn)維人員的生命??蛇\(yùn)維性按操作規(guī)范和管理規(guī)范可以被歸納為以下七點(diǎn): 配置管理在微服務(wù)架構(gòu)管理中,我們提議將應(yīng)用的二進(jìn)制文件與配置分離管理,以便于實(shí)現(xiàn)獨(dú)立部署的目的。被分離出來的應(yīng)用配置,有三種管理辦法:文件模式;配置項(xiàng)模式;分布式配置中心模式。限于篇幅不就以上三種方式的優(yōu)劣展開討論。不同的企業(yè)可選用最適用的配置管理辦法,關(guān)鍵是要求各業(yè)務(wù)使用一致的方案,運(yùn)維便可以有針對性的建設(shè)工具和系統(tǒng)來做好配置管理。 版本管理DevOps持續(xù)交付八大原則之一“把所有的東

8、西都納入版本控制”。就運(yùn)維對象而言,想要管理好它,就必須能夠清晰的描述它。和源代碼管理的要求類似,運(yùn)維也需要對日常操作的對象,如包、配置、腳本等都進(jìn)行腳本化管理,以備在運(yùn)維系統(tǒng)在完成自動化操作時,能夠準(zhǔn)確無誤的選定被操作的對象和版本。 標(biāo)準(zhǔn)操作運(yùn)維日常有大量重復(fù)度高的工作需要被執(zhí)行,從精益思想的視角看,這里存在極大的浪費(fèi):學(xué)習(xí)成本、無價值操作、重復(fù)建設(shè)的腳本/工具、人肉執(zhí)行的風(fēng)險等等。倘若能在企業(yè)內(nèi)形成統(tǒng)一的運(yùn)維操作規(guī)范,如文件傳輸、遠(yuǎn)程執(zhí)行、應(yīng)用啟動停止等等操作都被規(guī)范化、集中化、一鍵化的操作,運(yùn)維的效率和質(zhì)量將得以極大的提升。 進(jìn)程管理包括應(yīng)用安裝路徑、目錄結(jié)構(gòu)、規(guī)范進(jìn)程名、規(guī)范端口號、啟

9、停方式、監(jiān)控方案等等,被收納在進(jìn)程管理的范疇。做好進(jìn)程管理的全局規(guī)劃,能夠極大的提升自動化運(yùn)維程度,減少計劃外任務(wù)的發(fā)生。 空間管理做好磁盤空間使用的管理,是為了保證業(yè)務(wù)數(shù)據(jù)的有序存放,也是降低計劃外任務(wù)發(fā)生的有效手段。要求提前做好的規(guī)劃:備份策略、存儲方案、容量預(yù)警、清理策略等,輔以行之有效的工具,讓這些任務(wù)不再困擾運(yùn)維。 日志管理日志規(guī)范的推行和貫徹需要研發(fā)密切配合,在實(shí)踐中得出的經(jīng)驗(yàn),運(yùn)維理想中的日志規(guī)范要包含這些要求:業(yè)務(wù)數(shù)據(jù)與日志分離日志與業(yè)務(wù)邏輯解耦日志格式統(tǒng)一返回碼及注釋清晰可獲取業(yè)務(wù)指標(biāo)(請求量/成功率/延時)定義關(guān)鍵事件輸出級別管理方案(存放時長、壓縮備份等)當(dāng)具體上述條件的

10、日志規(guī)范得以落地,開發(fā)、運(yùn)維和業(yè)務(wù)都能相應(yīng)的獲得較好的監(jiān)控分析能力。 集中管控運(yùn)維的工作先天就容易被切割成不同的部分,發(fā)布變更、監(jiān)控分析、故障處理、項(xiàng)目支持、多云管理等等,我們訴求一站式的運(yùn)維管理平臺,使得所有的工作信息能夠銜接起來和傳承經(jīng)驗(yàn),杜絕因?yàn)樾畔⒐聧u或人工傳遞信息而造成的運(yùn)營風(fēng)險,提升整體運(yùn)維管控的效率和質(zhì)量。要點(diǎn)四:容錯容災(zāi)在騰訊技術(shù)運(yùn)營(運(yùn)維)的四大職責(zé):質(zhì)量、效率、成本、安全。質(zhì)量是首要保障的陣地,轉(zhuǎn)換成架構(gòu)的視角,運(yùn)維眼中理想的高可用架構(gòu)架構(gòu)設(shè)計應(yīng)該包含以下幾點(diǎn): 負(fù)載均衡無論是軟件或硬件的負(fù)責(zé)均衡的方案,從運(yùn)維的角度出發(fā),我們總希望業(yè)務(wù)架構(gòu)是無狀態(tài)的,路由尋址是智能化的,集

11、群容錯是自動實(shí)現(xiàn)的。在騰訊多年的路由軟件實(shí)踐中,軟件的負(fù)載均衡方案被廣泛應(yīng)用,為業(yè)務(wù)架構(gòu)實(shí)現(xiàn)高可用立下汗馬功勞。 可調(diào)度性在移動互聯(lián)網(wǎng)盛行的年代,可調(diào)度性是容災(zāi)容錯的一項(xiàng)極其重要的運(yùn)維手段。在業(yè)務(wù)遭遇無法立刻解決的故障時,將用戶或服務(wù)調(diào)離異常區(qū)域,是海量運(yùn)營實(shí)踐中屢試不爽的技巧,也是騰訊QQ和微信保障平臺業(yè)務(wù)質(zhì)量的核心運(yùn)維能力之一。結(jié)合域名、VIP、接入網(wǎng)關(guān)等技術(shù),讓架構(gòu)支持調(diào)度的能力,豐富運(yùn)維管理手段,有能力更從容的應(yīng)對各種故障場景。 異地多活異地多活是數(shù)據(jù)高可用的訴求,是可調(diào)度性的前提。針對不同的業(yè)務(wù)場景,技術(shù)實(shí)現(xiàn)的手段不限。騰訊社交的實(shí)踐可以參考周小軍老師的文章“ HYPERLINK /

12、s?_biz=MzA4Nzg5Nzc5OA=&mid=2651667013&idx=1&sn=a546a21e89ae824b964cbefb72e2c2bf&chksm=8bcbf9ecbcbc70fac3608ef77dffb513c3842cc0d2281f09ec551c82f7cbd4f8f1cac02305d7&mpshare=1&scene=21&srcid=0627YpyMXLHV3aFETpETuDj2 l wechat_redirect 2億QQ用戶大調(diào)度背后的架構(gòu)設(shè)計和高效運(yùn)營”。 主從切換在數(shù)據(jù)庫的高可用方案中,主從切換是最常見的容災(zāi)容錯方案。通過在業(yè)務(wù)邏輯中實(shí)現(xiàn)讀寫分

13、離,再結(jié)合智能路由選擇實(shí)現(xiàn)無人職守的主從切換自動化,無疑是架構(gòu)設(shè)計對DBA最好的饋贈。 柔性可用“先扛住再優(yōu)化”是騰訊海量運(yùn)營思想之一,也為我們在做業(yè)務(wù)架構(gòu)的高可用設(shè)計點(diǎn)明了方向。如何在業(yè)務(wù)量突增的情況下,最大程度的保障業(yè)務(wù)可用?是做架構(gòu)規(guī)劃和設(shè)計時不可回避的問題。巧妙的設(shè)置柔性開關(guān),或者在架構(gòu)中內(nèi)置自動拒絕超額請求的邏輯,能夠在關(guān)鍵時刻保證后端服務(wù)不雪崩,確保業(yè)務(wù)架構(gòu)的高可用。要點(diǎn)五:質(zhì)量監(jiān)控保障和提高業(yè)務(wù)質(zhì)量是運(yùn)維努力追逐的目標(biāo),而監(jiān)控能力是我們實(shí)現(xiàn)目標(biāo)的重要技術(shù)手段。運(yùn)維希望架構(gòu)為質(zhì)量監(jiān)控提供便利和數(shù)據(jù)支持,要求實(shí)現(xiàn)以下幾點(diǎn): 指標(biāo)度量每個架構(gòu)都必須能被指標(biāo)度量,同時,我們希望的是最好只

14、有唯一的指標(biāo)度量。對于業(yè)務(wù)日趨完善的立體化監(jiān)控,監(jiān)控指標(biāo)的數(shù)量隨之會成倍增長。因此,架構(gòu)的指標(biāo)度量,我們希望的是最好只有唯一的指標(biāo)度量。 基礎(chǔ)監(jiān)控指的是網(wǎng)絡(luò)、專線、主機(jī)、系統(tǒng)等低層次的指標(biāo)能力,這類監(jiān)控點(diǎn)大多屬于非侵入式,很容易實(shí)現(xiàn)數(shù)據(jù)的采集。在自動化運(yùn)維能力健全的企業(yè),基礎(chǔ)監(jiān)控產(chǎn)生的告警數(shù)據(jù)絕大部分會被收斂掉。同時,這部分監(jiān)控數(shù)據(jù)將為高層次的業(yè)務(wù)監(jiān)控提供數(shù)據(jù)支撐和決策依據(jù),或者被包裝成更貼近上層應(yīng)用場景的業(yè)務(wù)監(jiān)控數(shù)據(jù)使用,如容量、多維指標(biāo)等。 組件監(jiān)控騰訊習(xí)慣把開發(fā)框架、路由服務(wù)、中間件等都統(tǒng)稱為組件,這類監(jiān)控介于基礎(chǔ)監(jiān)控和業(yè)務(wù)監(jiān)控之間,運(yùn)維常寄希望于在組件中內(nèi)嵌監(jiān)控邏輯,通過組件的推廣,讓

15、組件監(jiān)控的覆蓋度提高,獲取數(shù)據(jù)的成本屬中等。如利用路由組件的監(jiān)控,運(yùn)維可以獲得每個路由服務(wù)的請求量、延時等狀態(tài)和質(zhì)量指標(biāo)。 業(yè)務(wù)監(jiān)控業(yè)務(wù)監(jiān)控的實(shí)現(xiàn)方法分主動和被動的監(jiān)控,即可侵入式實(shí)現(xiàn),又能以旁路的方式達(dá)到目的。這類監(jiān)控方案要求開發(fā)的配合,與編碼和架構(gòu)相關(guān)。通常業(yè)務(wù)監(jiān)控的指標(biāo)都能歸納為請求量、成功率、延時3種指標(biāo)。實(shí)現(xiàn)手段很多,有日志監(jiān)控、流數(shù)據(jù)監(jiān)控、波測等等,業(yè)務(wù)監(jiān)控屬于高層次的監(jiān)控,往往能直接反饋業(yè)務(wù)問題,但倘若要深入分析出問題的根源,就必須結(jié)合必要的運(yùn)維監(jiān)控管理規(guī)范,如返回碼定義、日志協(xié)議等。需要業(yè)務(wù)架構(gòu)在設(shè)計時,前置考慮運(yùn)維監(jiān)控管理的訴求,全局規(guī)劃好的范疇。 全鏈路監(jiān)控基礎(chǔ)、組件、業(yè)務(wù)

16、的監(jiān)控手段更多的是聚焦于點(diǎn)的監(jiān)控,在分布式架構(gòu)的業(yè)務(wù)場景中,要做好監(jiān)控,我們必須要考慮到服務(wù)請求鏈路的監(jiān)控。基于唯一的交易ID或RPC的調(diào)用關(guān)系,通過技術(shù)手段還原調(diào)用關(guān)系鏈,再通過模型或事件觸發(fā)監(jiān)控告警,來反饋服務(wù)鏈路的狀態(tài)和質(zhì)量。該監(jiān)控手段屬于監(jiān)控的高階應(yīng)用,同樣需要業(yè)務(wù)架構(gòu)規(guī)劃時做好前置規(guī)劃和代碼埋點(diǎn)。 質(zhì)量考核任何監(jiān)控能力的推進(jìn),質(zhì)量的優(yōu)化,都需要有管理的閉環(huán),考核是一個不錯的手段,從監(jiān)控覆蓋率、指標(biāo)全面性、事件管理機(jī)制到報表考核打分,運(yùn)維和開發(fā)可以攜手打造一個持續(xù)反饋的質(zhì)量管理閉環(huán),讓業(yè)務(wù)架構(gòu)能夠不斷進(jìn)化提升。要點(diǎn)六:性能成本在騰訊,所有的技術(shù)運(yùn)營人員都肩負(fù)著一個重要的職能,就是要確保

17、業(yè)務(wù)運(yùn)營成本的合理。為此,我們必須對應(yīng)用吞吐性能、業(yè)務(wù)容量規(guī)劃和運(yùn)營成本都要有相應(yīng)的管理辦法。 吞吐性能DevOps持續(xù)交付方法論中,在測試階段進(jìn)行的非功能需求測試,其中很重要一點(diǎn)便是對架構(gòu)吞吐性能的壓測,并以此確保應(yīng)用上線后業(yè)務(wù)容量的健康。在騰訊的實(shí)踐中,不僅限于測試階段會做性能壓測,我們會結(jié)合路由組件的功能,對業(yè)務(wù)模塊、業(yè)務(wù)SET進(jìn)行真實(shí)請求的壓測,以此建立業(yè)務(wù)容量模型的基準(zhǔn)。也從側(cè)面提供數(shù)據(jù)論證該業(yè)務(wù)架構(gòu)的吞吐性能是否達(dá)到成本考核的要求,利用不同業(yè)務(wù)間性能數(shù)據(jù)的對比,來推動架構(gòu)性能的不斷提高。 容量規(guī)劃英文capacity一詞可以翻譯成:應(yīng)用性能、服務(wù)容量、業(yè)務(wù)總請求量,運(yùn)維的容量規(guī)劃是

18、指在應(yīng)用性能達(dá)標(biāo)的前提下,基于業(yè)務(wù)總請求量的合理的服務(wù)容量規(guī)劃。對容量規(guī)劃與優(yōu)化的手段,可參考“ HYPERLINK /s?_biz=MzA4Nzg5Nzc5OA=&mid=2651661758&idx=1&sn=5e2baca05d3d23dc18ebd244a695927e&scene=21 l wechat_redirect t _blank 運(yùn)維如何為公司節(jié)省一個億?”。 運(yùn)營成本減少運(yùn)營成本,是為公司減少現(xiàn)金流的投入,對企業(yè)的價值絲毫不弱于質(zhì)量與效率的提升。騰訊以社交、UGC、云計算、游戲、視頻等富媒體業(yè)務(wù)為主,每年消耗在帶寬、設(shè)備等運(yùn)營成本的金額十分巨大。運(yùn)維想要優(yōu)化運(yùn)營成本,常常會涉及到產(chǎn)品功能和業(yè)務(wù)架構(gòu)的優(yōu)化。因此,運(yùn)維理想的業(yè)務(wù)架構(gòu)設(shè)計需要有足夠的成本意識,騰訊的成本優(yōu)化措施,可參考“ HYPERLINK /s?_biz=MzA4Nzg5Nzc5OA=&mid=2651663046&idx=1&sn=cd3e0dd23742194236dbc9b

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論