細(xì)說自動化運(yùn)維的前世今生
發(fā)布時(shí)間:2018-02-12 瀏覽:477打印字號:大中小
單塊架構(gòu)
應(yīng)用軟件發(fā)展早期,系統(tǒng)規(guī)模一般很小,特點(diǎn)是應(yīng)用功能集中、代碼和數(shù)據(jù)中心化,表現(xiàn)為一個(gè)軟件發(fā)布包,集中部署,各模塊運(yùn)行在同一個(gè)進(jìn)程的應(yīng)用程序。此時(shí)一般幾臺機(jī)器就可以完成全部應(yīng)用軟件功能。
以Web應(yīng)用程序?yàn)槔赪eb應(yīng)用程序開發(fā)的早期,由于受到面向過程的思維及設(shè)計(jì)方式的影響,所有的邏輯代碼并沒有明顯的區(qū)分,因此代碼之間的調(diào)用相互交錯,錯綜復(fù)雜。譬如,我們早期使用的ASP、JSP以及PHP,都是將所有的頁面邏輯、業(yè)務(wù)邏輯以及數(shù)據(jù)庫訪問邏輯放在一起,這是我們通常提到的單塊架構(gòu)。
在這種架構(gòu)下,所需的機(jī)器數(shù)量很小,完全的scale-up模式,據(jù)說IBM公司在上世紀(jì)50年代曾經(jīng)宣稱, 全世界只需要5臺計(jì)算機(jī)就夠了!
多層架構(gòu)
為了解決單塊架構(gòu)擴(kuò)展性差的問題,同時(shí)解決代碼集中帶來的并行開發(fā)測試?yán)щy等問題,逐步出現(xiàn)了多層架構(gòu),把表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層適當(dāng)分離,分別打包部署。如通過實(shí)現(xiàn)Model-View-Controller的模式將數(shù)據(jù)、業(yè)務(wù)、展現(xiàn)進(jìn)行分離。還有一種RPC架構(gòu),通過遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)應(yīng)用架構(gòu)分離。
此時(shí)每層都獨(dú)立打包,獨(dú)立部署于容器和單獨(dú)的服務(wù)器中,應(yīng)用結(jié)構(gòu)更加復(fù)雜但也更加清晰,當(dāng)然所需的服務(wù)器數(shù)量就進(jìn)一步增加了。
服務(wù)化架構(gòu)
多層架構(gòu)盡管大幅提升了應(yīng)用的擴(kuò)展性,但是隨著軟件和系統(tǒng)規(guī)模的不斷擴(kuò)大,垂直應(yīng)用越來越多,應(yīng)用之間交互不可避免,此時(shí)層間應(yīng)用接口變得越來越龐大,最終會變得難以管理。通過將核心業(yè)務(wù)抽取出來,作為獨(dú)立的服務(wù),逐漸形成穩(wěn)定的服務(wù)中心,使前端應(yīng)用能更快速地相應(yīng)多變的市場需求,也使不同服務(wù)的獨(dú)立擴(kuò)展成為可能。
在這種模式下,可以按服務(wù)進(jìn)一步拆分部署,應(yīng)用可以擴(kuò)展到更多的機(jī)器和容器上。
分布式云化架構(gòu)
隨著業(yè)務(wù)不斷發(fā)展,硬件成本的下降,基于X86架構(gòu)的廉價(jià)硬件+分布式軟件的模式日趨成熟,得到了大規(guī)模應(yīng)用,分布式服務(wù)框架逐漸替代傳統(tǒng)的服務(wù)化架構(gòu),解決了傳統(tǒng)服務(wù)化的弊端,例如企業(yè)集成總線ESB是實(shí)體總線,性能線性擴(kuò)展能力有限,硬件負(fù)載均衡器的壓力越來越大,不斷擴(kuò)容導(dǎo)致硬件成本增加,隨著業(yè)務(wù)規(guī)模的不斷增長,傳統(tǒng)的數(shù)據(jù)庫、配置中心等逐漸成為單點(diǎn)瓶頸。當(dāng)然應(yīng)用也徹底變?yōu)榱藄cale-out架構(gòu),導(dǎo)致機(jī)器和容器數(shù)量大幅上升。
微服務(wù)架構(gòu)
微服務(wù)架構(gòu)是對上面分布式云化架構(gòu)的拓展、服務(wù)化的進(jìn)一步延伸,通過對服務(wù)進(jìn)一步細(xì)化,形成微服務(wù),運(yùn)行于單獨(dú)的容器平臺,可實(shí)現(xiàn)云的彈性和敏捷,如彈性伸縮、線上線下一致的環(huán)境、提升自動化運(yùn)維能力等。
別著急,下面再允許我介紹下自動化運(yùn)維的內(nèi)容,究竟包含哪些內(nèi)容?
1、硬件和網(wǎng)絡(luò)的自動管理
2、云化、虛擬機(jī)的自動管理3、操作系統(tǒng)和軟件的自動化安裝、配置
4、常規(guī)任務(wù)(健康檢查、安全加固和檢查、備份、清理、數(shù)據(jù)管理、彈性伸縮等)
5、手工任務(wù)(容災(zāi)切換、應(yīng)急操作、應(yīng)用部署和起停……)
6、監(jiān)控
7、問題診斷
8、可視化
其中1、2、3主要是傳統(tǒng)IaaS層關(guān)注的工作內(nèi)容,重點(diǎn)是計(jì)算、存儲、網(wǎng)絡(luò)的自動化管理,4到8主要是PaaS層關(guān)注的工作內(nèi)容,IaaS層和PaaS層相互結(jié)合,共同完成自動化運(yùn)維。
好了,終于到正題了,自動化運(yùn)維前世今生來了…..
1、史前時(shí)代:此時(shí)系統(tǒng)規(guī)模很小,一般幾臺,不超過幾十臺,此時(shí)一般通過手工單臺登錄即可滿足運(yùn)維要求。2、中世紀(jì)時(shí)代(集中管理階段):系統(tǒng)規(guī)模有了較大擴(kuò)展,從幾十臺到上百臺,此時(shí)再通過手工方式已經(jīng)無法進(jìn)行,于是出現(xiàn)了各種Shell腳本,通過腳本實(shí)現(xiàn)相關(guān)的運(yùn)維,腳本僅僅是針對特定的場景,難以實(shí)現(xiàn)全流程的自動化。
3、中世紀(jì)拓展(集中管理的進(jìn)階):為了方便管理以及可視化,出現(xiàn)了各類商用或開源工具軟件實(shí)現(xiàn)自動化運(yùn)維,如HP Openview、puppet、SaltStack、Chef等等,做為腳本方式的提升。
4、新時(shí)代:系統(tǒng)規(guī)模進(jìn)一步擴(kuò)大,從上百臺演進(jìn)到上千上萬臺,以前的方式由于存在弊端,如缺乏統(tǒng)一的CMDB或太簡單、不支持復(fù)雜環(huán)境、缺乏友好的可視化界面等,難以滿足要求,此時(shí)又出現(xiàn)了幾個(gè)分枝:
分枝一:從底向上的云平臺方案:通過云管理平臺實(shí)現(xiàn)計(jì)算、網(wǎng)絡(luò)、存儲的IaaS層自動化管理,同步建立軟件PaaS層自動管理,最終實(shí)現(xiàn)融合。
分枝二:從上向下的云平臺方案:通過上層PaaS層自動化管理,逐步向下探索,如容器等。
新生代自動化運(yùn)維初探
下面重點(diǎn)介紹幾個(gè)自動化運(yùn)維工具或平臺:
Openstack
Openstack是IaaS層目前最活躍的一個(gè)開源的云計(jì)算 IaaS 平臺,即云操作系統(tǒng),類似于AWS(亞馬遜的云服務(wù)),通過各種開源組件實(shí)現(xiàn)了不同功能,目前大部分云管理平臺均基于Openstack實(shí)現(xiàn)計(jì)算、網(wǎng)絡(luò)、存儲的統(tǒng)一管理,Openstack支持如下功能組件:
計(jì)算服務(wù)(Nova):按需提供計(jì)算資源,創(chuàng)建和管理批量虛擬機(jī) ,動態(tài)虛擬機(jī)管理:創(chuàng)建、重啟、調(diào)整大小、遷移等。
對象存儲服務(wù)(Swift):基于普通硬件的大規(guī)模存儲,無中心節(jié)點(diǎn),分布式存儲、水平擴(kuò)展,同時(shí)多數(shù)據(jù)備份,保證安全,通過API接口對外訪問。
塊存儲服務(wù)(Cinder):為虛擬機(jī)提供云硬盤。
網(wǎng)絡(luò)服務(wù)(Neutron):為虛擬機(jī)提供網(wǎng)絡(luò)訪問能力。
編排服務(wù)(Heat):提供自動化部署及管理服務(wù)。
數(shù)據(jù)庫服務(wù)(Trove):提供數(shù)據(jù)庫管理服務(wù)。
認(rèn)證服務(wù)(Keystone):提供身份認(rèn)證機(jī)制服務(wù)。
鏡像服務(wù)(Glance):提供虛擬機(jī)鏡像存儲服務(wù)。
監(jiān)控服務(wù)(Ceilometer):提供計(jì)量與監(jiān)控服務(wù)。
Dashboard(Horizon):自服務(wù)、權(quán)限、圖形化界面。
Openstack盡管對IaaS層的自動化管理比較強(qiáng)大,但仍然需要注意如下幾點(diǎn):
1、Openstack版本眾多,如何選擇是一個(gè)難題。
例如存在社區(qū)版、發(fā)行版、商業(yè)公司定制版本等,如何選擇是一個(gè)難題,而且Openstack每半年一個(gè)穩(wěn)定版本,演進(jìn)很快。一般認(rèn)為對Openstack項(xiàng)目中的開源代碼進(jìn)行修改定制是個(gè)不錯的主意,但這從長期角度來看不一定優(yōu)質(zhì)。“定制云”很可能需要付出高昂的代價(jià),不僅投資巨大、成本高昂,企業(yè)用戶還將被迫面對一大堆后續(xù)的管理及維護(hù)開銷,并被綁定在單一供應(yīng)商或版本身上。
建議企業(yè)如果有很強(qiáng)的技術(shù)能力的話,可以根據(jù)自己的需求做定制,但需要把握好和社區(qū)發(fā)展的關(guān)系。 一般來說,需要根據(jù)自己的需求,選擇合適的版本,盡量不改變社區(qū)版本,定制化需求盡量在外圍進(jìn)行改動。如果采用了廠商的版本,實(shí)際上也是某種綁定,可能離社區(qū)越來越遠(yuǎn)。
2、需要慎重選擇相關(guān)組件合功能
由于Openstack理念是分布式、最終一致性,因此所有的原始功能組件都是基于這一設(shè)計(jì),企業(yè)用戶考慮采納Openstack之前,必須對企業(yè)業(yè)務(wù)應(yīng)用進(jìn)行分析:應(yīng)用程序是否有可擴(kuò)展性和彈性伸縮的要求? 應(yīng)用程序是否可以接受最終一致性? 應(yīng)用程序是否無狀態(tài)化? 應(yīng)用程序的性能要求?應(yīng)用程序的可靠性要求? 應(yīng)用程序的安全要求? 應(yīng)用程序的容災(zāi)備份需求? 不同的要求決定了Openstack不同的計(jì)算、存儲、網(wǎng)絡(luò)等模塊設(shè)計(jì)。
3、Openstack對PaaS層和物理機(jī)管理較弱,需借助其他工具實(shí)現(xiàn)
Openstack已經(jīng)能夠支持很多的IaaS自動化運(yùn)維和部分PaaS自動化運(yùn)維任務(wù),但不能滿足全部,如批量運(yùn)維、深入監(jiān)控、軟件管理等功能缺少,特別是對物理機(jī)運(yùn)維較弱,一般需要結(jié)合其他PaaS層管理進(jìn)一步完善自動化運(yùn)維體系。
SaltStack+定制
PaaS層自動化運(yùn)維工具就太多了,例如監(jiān)控就有Nagios、Ganglia、Zabbix等,運(yùn)維工具則有Puppet、Chef、SaltStack、Ansible等,不同企業(yè)根據(jù)企業(yè)自身開發(fā)實(shí)力、結(jié)合配置管理工具的資源豐富程度、依賴復(fù)雜程度考慮,會有不同的選擇。通過對運(yùn)維工具本身的研究,結(jié)合運(yùn)維人員的運(yùn)維經(jīng)驗(yàn)和評估企業(yè)未來的規(guī)模,下面以開源SaltStack+定制實(shí)現(xiàn)的方案進(jìn)行介紹。
SaltStack是繼 Puppet、Chef 之后新出現(xiàn)的S配置管理及遠(yuǎn)程執(zhí)行工具,與 Puppet 相比,SaltStack較為輕量;不像 Puppet有一套自己的 DSL 用來寫配置,SaltStack 使用 YAML 作為配置文件格式,相對簡單,同時(shí)也便于動態(tài)生成;此外,SaltStack 在遠(yuǎn)程執(zhí)行命令時(shí)的速度快,由于使用了ZeroMQ,這個(gè)下發(fā)過程可以并行執(zhí)行,速度比Ansible的無agent ssh通信快得多,是一個(gè)分布式遠(yuǎn)程執(zhí)行系統(tǒng),用來在遠(yuǎn)程節(jié)點(diǎn)(可以是單個(gè)節(jié)點(diǎn),也可以是任意規(guī)則挑選出來的節(jié)點(diǎn))上執(zhí)行命令和查詢數(shù)據(jù)。
從部署結(jié)構(gòu)上看,SaltStack的在部署上可以分為master和minion兩個(gè)部分,其中master相當(dāng)于統(tǒng)領(lǐng)所有機(jī)器的總管,而minion則是部署在被管理機(jī)器上面的agent進(jìn)程,master通過網(wǎng)絡(luò)將配置管理相關(guān)的操作下發(fā)到minion,由minion在對應(yīng)機(jī)器的本地執(zhí)行。典型的部署例子如下圖所示:
在現(xiàn)實(shí)生產(chǎn)環(huán)境中,大批量的用戶創(chuàng)建需求,文件上傳需求、配置變更需求、軟件升級需求占用了維護(hù)人員大量的時(shí)間,引入SaltStack后,該工具的遠(yuǎn)程執(zhí)行和配置管理可以解決該問題,真正實(shí)現(xiàn)批量化和自動化,滿足海量運(yùn)維的需求。
容器
有了Openstack和SaltStack為代表的的PaaS層自動化工具還不夠,針對應(yīng)用自動化運(yùn)維場景,如彈性伸縮、DevOps(開發(fā)運(yùn)維一體化、開發(fā)測試一致的環(huán)境、自動資源調(diào)度、應(yīng)用日志統(tǒng)一管控、應(yīng)用服務(wù)的編排、微服務(wù)管理等),此時(shí)出現(xiàn)了容器技術(shù),容器技術(shù)實(shí)現(xiàn)有很多種,但最流行的是Docker。
傳統(tǒng)容器技術(shù)相較虛擬機(jī)優(yōu)勢不是特別大。Docker能夠流行一大重要因此就是它的創(chuàng)新–Docker鏡像。Docker構(gòu)建了一整套構(gòu)建、發(fā)布、運(yùn)行體系:容器(Container)、倉庫(Repository)、鏡像(Images)。傳統(tǒng)容器只解決了容器運(yùn)行(run)的問題。而Docker定義了一套容器構(gòu)建(build)分發(fā)(ship)的標(biāo)準(zhǔn),使應(yīng)用管理非常便捷,尤其適合微服務(wù)管理。
注意容器對應(yīng)用有特定的要求,并不是所有應(yīng)用都適合,例如需要無狀態(tài)化、鏡像文件不能太大等。
自動化運(yùn)維需要注意的幾點(diǎn):
一般的自動化運(yùn)維工具均缺乏良好的可視化界面,需要進(jìn)行結(jié)合定制開發(fā)。良好的界面可以更易于在企業(yè)內(nèi)部推廣自動化運(yùn)維。
自動化運(yùn)維工具眾多,各有所長,應(yīng)結(jié)合熟悉程度、技術(shù)特點(diǎn)進(jìn)行針對性選擇。
多層的自動化管理工具,多頭的配置管理是個(gè)難題,建議考慮定制化,設(shè)計(jì)統(tǒng)一的CMDB,做到一點(diǎn)配置,多點(diǎn)更新。
(原文來自運(yùn)維派)
- 1簡約至美!新鴻儒傾力打造《銳馳官網(wǎng)》??榮獲2018IAI設(shè)計(jì)優(yōu)勝獎
- 2中紀(jì)委監(jiān)察部官網(wǎng)2018新版上線??新鴻儒設(shè)計(jì)增色彩
- 3新鴻儒?新春大拜年
- 4關(guān)于新麒麟抄襲新鴻儒官網(wǎng)的聲明
- 5不忘初心,感恩前行?新鴻儒新年遷新居
- 6華星鋼構(gòu)攜手新鴻儒??高端網(wǎng)站隆重亮相
- 7中儲糧簽約新鴻儒?糧食巨頭擁抱互聯(lián)網(wǎng)
- 8新鴻儒簽約方正??塑造集團(tuán)互聯(lián)網(wǎng)品牌形象
- 9國美再次攜手新鴻儒?創(chuàng)新升級品牌官網(wǎng)
- 10新鴻儒協(xié)辦第二屆互聯(lián)網(wǎng)大會??助力工程建設(shè)行業(yè)互聯(lián)網(wǎng)+
- 1新鴻儒攜手飛鶴乳業(yè)?打造千萬中國媽媽的育兒私享平臺
- 2猴子請來的救兵——新鴻儒
- 3中紀(jì)委監(jiān)察部官網(wǎng)2018新版上線??新鴻儒設(shè)計(jì)增色彩
- 4新鴻儒助力SOHO3Q項(xiàng)目成功上線
- 5新鴻儒助力中科曙光,共繪科技新篇章
- 6新鴻儒二度攜手瀘州老窖,打造品牌宣傳互聯(lián)網(wǎng)建設(shè)閉環(huán)!
- 7新鴻儒誠賀復(fù)星集團(tuán)全新官網(wǎng)正式上線運(yùn)營
- 8新鴻儒簽約香馳控股,構(gòu)建全新品牌新體驗(yàn)
- 9中糧再度攜手新鴻儒??集團(tuán)內(nèi)網(wǎng)注入新活力
- 10政府創(chuàng)新看國家級新區(qū)橫琴