經(jīng)過多年公有云和私有云之爭(zhēng),企業(yè)用戶的實(shí)際業(yè)務(wù)需求和ROI終于戰(zhàn)勝了云廠商的情感,混合云大行其道,得到了充分的開發(fā)和利用。人們逐漸開始尋求最佳策略和最優(yōu)方法以更好地管理、提升混合云性能。軟件業(yè)已不再輕率地對(duì)待云端的各種應(yīng)用,而是正在為云運(yùn)維一體化(CloudOps)尋找最優(yōu)方法。
為了更好的傳遞本文宗旨,我們將混合云分解成幾個(gè)組成部分,并針對(duì)如何最優(yōu)地管理混合云性能進(jìn)行探討。這樣做的好處是,我們能將這幾個(gè)組成部分融合為一個(gè)完整的混合云架構(gòu),并能對(duì)整體性能管理特征進(jìn)行分析,然后再把這一切融入云運(yùn)維一體化,這一點(diǎn)還是比較有戰(zhàn)略性的。
分配能力是關(guān)鍵
今天的混合云已不再是幾年前我們所說的混合云。以前,工作負(fù)載是靜態(tài)地綁定到私有云或者公有云上。而現(xiàn)在,工作負(fù)載可以自由隨意地在私有云和公有云間遷移,我們可以動(dòng)態(tài)的、近乎實(shí)時(shí)的完成這一過程,也可以人工完成,如移動(dòng)原始代碼、原始數(shù)據(jù)等。
可使工作負(fù)載在私有云和公有云之間平滑遷移是混合云的一大關(guān)鍵特征,而所謂性能就是尋找方法使應(yīng)用架構(gòu)中的組件得到最優(yōu)化地運(yùn)行。如果將這些組件(如數(shù)據(jù)庫(kù)、應(yīng)用、用戶界面)整合到工作負(fù)載中,就可以更容易地對(duì)應(yīng)用程序進(jìn)行優(yōu)化,因?yàn)檫@些組合起來的應(yīng)用組件使他們更容易被管理和優(yōu)化。
創(chuàng)建工作負(fù)載的方法有很多,包括虛擬機(jī)、容器或者綁定在一起的應(yīng)用程序等。對(duì)于如何遷移這幾種工作負(fù)載進(jìn)行詳細(xì)探討不屬于本文的范疇,但是卻對(duì)粗略完成容器移動(dòng)非常有幫助。
容器是一種獨(dú)立式的組件集,可包含應(yīng)用代碼、數(shù)據(jù)庫(kù)、中間件、安全服務(wù)或者上述全部。單個(gè)應(yīng)用程序可由多個(gè)容器構(gòu)成,或者單個(gè)容器可包含整個(gè)系統(tǒng)。無論哪種方式,容器均可以在公有云和私有云中運(yùn)行。
我們竭力傳達(dá)的想法是有多種選擇可使工作負(fù)載在公有云和私有云之間達(dá)到互通。在公有云和私有云之間分配工作負(fù)載的方法基本上是無限的。在管理性能時(shí),你擁有利于自己的分配權(quán)。所以務(wù)必好好利用這一點(diǎn)。
服務(wù)監(jiān)控組件
考慮到應(yīng)用程序的模塊、服務(wù)可在私有云和公有云中自由運(yùn)行,通過各種服務(wù)(或者微服務(wù))對(duì)性能進(jìn)行管理將會(huì)很有幫助,這些服務(wù)通過應(yīng)用程序或者云平臺(tái)自身得到了具體化。你可以考慮使用下列邏輯組件或者技術(shù)將混合云性能作為服務(wù)組合進(jìn)行管理。
1.服務(wù)探針
2.服務(wù)庫(kù)
3.通信管理器
4.性能分析引擎
5.時(shí)序數(shù)據(jù)庫(kù)
6.告警管理(見圖1)
我將逐一探究上述內(nèi)容。請(qǐng)記住上述均為邏輯性概念,我們還未將這些概念映射到相關(guān)技術(shù)中。
圖1:混合云服務(wù)性能監(jiān)控系統(tǒng)概念視圖/邏輯視圖。構(gòu)建此圖的目的是將其作為依據(jù)以選擇符合您需求的合適的技術(shù)或者技術(shù)組合。
Public Cloud:公有云;Private Cloud:私有云;Services A:服務(wù)A;Services B:服務(wù)B;Services C:服務(wù)C;Services D:服務(wù)D;Service Agents:服務(wù)探針;Performance Analytics Engine:性能分析引擎;Communications Manager:通信管理器;Service Repository:服務(wù)庫(kù);Time Series Database:時(shí)序數(shù)據(jù)庫(kù);Alert Management:告警管理;Console: 控制臺(tái)
在了解相關(guān)組件和技術(shù)之前,先來了解以下幾點(diǎn)內(nèi)容,它們?cè)趫?zhí)行服務(wù)性能和監(jiān)控混合云時(shí)會(huì)用得到。
對(duì)所有相關(guān)服務(wù)的性能指標(biāo)進(jìn)行監(jiān)控,這些指標(biāo)包括如運(yùn)行時(shí)間、性能、關(guān)聯(lián)狀態(tài)及趨勢(shì)等。
對(duì)趨勢(shì)數(shù)據(jù)進(jìn)行前瞻性分析以確定當(dāng)前問題或者未來問題發(fā)生的可能性,并在問題發(fā)生前對(duì)其進(jìn)行處理。
對(duì)業(yè)務(wù)流的整體性能進(jìn)行監(jiān)控,例如將所有業(yè)務(wù)相關(guān)組件的性能進(jìn)行關(guān)聯(lián)分析。
健全的服務(wù)管理計(jì)劃中的性能指標(biāo)和性能監(jiān)控。
“自修復(fù)”能力,利用具有更正能力的監(jiān)控系統(tǒng)對(duì)性能問題進(jìn)行自動(dòng)修復(fù)。
當(dāng)應(yīng)用程序處于高負(fù)荷時(shí),需要?jiǎng)討B(tài)調(diào)整監(jiān)控頻率,以免不能及時(shí)發(fā)現(xiàn)性能問題。
提供數(shù)據(jù)大屏,進(jìn)行分析、可視化監(jiān)控及報(bào)警處理。
從性能指標(biāo)和監(jiān)控系統(tǒng)中直接追蹤性能對(duì)業(yè)務(wù)的影響。
通過對(duì)歷史性能數(shù)據(jù)進(jìn)行組織、分析、可視化及存儲(chǔ),可追蹤性能問題和問題解決辦法,從而前瞻性地避免故障的再次發(fā)生。
服務(wù)探針
服務(wù)探針是在公有云或者私有云(見圖1)中,與現(xiàn)有服務(wù)并行或者在現(xiàn)有服務(wù)內(nèi)部運(yùn)行的應(yīng)用組件。既可以是多項(xiàng)服務(wù)綁定到一個(gè)單獨(dú)的探針程序中,也可以是單獨(dú)一項(xiàng)服務(wù)綁定到一個(gè)單獨(dú)的探針中。服務(wù)探針的職責(zé)為:
在生產(chǎn)/運(yùn)營(yíng)環(huán)境中,對(duì)處于服務(wù)狀態(tài)的應(yīng)用監(jiān)控點(diǎn)進(jìn)行性能數(shù)據(jù)抓取。
與服務(wù)庫(kù)進(jìn)行通訊,以確定服務(wù)身份和當(dāng)前功能組件的性能閾值,并根據(jù)閾值進(jìn)行相應(yīng)操作。
按照服務(wù)庫(kù)的定義,以預(yù)定的動(dòng)態(tài)頻率對(duì)時(shí)序數(shù)據(jù)庫(kù)進(jìn)行更新。
利用其他組件來進(jìn)行通信和告警。
利用身份管理系統(tǒng)或者其他安全子系統(tǒng)來管理驗(yàn)證服務(wù)。
利用服務(wù)管理系統(tǒng)對(duì)策略進(jìn)行有效利用。
也可以這樣理解,服務(wù)探針與服務(wù)進(jìn)行交互,以確定運(yùn)行中的性能。當(dāng)然,探針有時(shí)也會(huì)引發(fā)性能問題,因此也需要有節(jié)制地使用服務(wù)探針,而且只有是服務(wù)關(guān)鍵性能組件才可使用服務(wù)探針。
服務(wù)庫(kù)
服務(wù)庫(kù)包括所有的服務(wù)屬性、服務(wù)策略及服務(wù)身份,以及在公有云或私有云中提供的單點(diǎn)服務(wù)。一般而言,服務(wù)庫(kù)是服務(wù)管理系統(tǒng)中的一個(gè)組成部分,它可以專為性能監(jiān)控而設(shè)定,也可以直接從服務(wù)管理庫(kù)中復(fù)制出來。服務(wù)庫(kù)的職責(zé)包括:
提供一個(gè)用來確定當(dāng)前及過去服務(wù)性能閾值的場(chǎng)所,這些閾值可被解讀并可被探針程序所執(zhí)行;跨越私有云和公有云,通過API可對(duì)其進(jìn)行動(dòng)態(tài)地更改。
提供最新的服務(wù)身份,包括與其他服務(wù)或者系統(tǒng)的關(guān)聯(lián)性。這樣可以對(duì)不同的服務(wù)組合進(jìn)行定義,這些服務(wù)組合可共同作用完成一項(xiàng)功能。這些服務(wù)可單獨(dú)進(jìn)行監(jiān)控,也可以作為整體進(jìn)行監(jiān)控。
為代表每項(xiàng)服務(wù)的探針程序分別確定位置和確定綁定信息。
存儲(chǔ)其他和服務(wù)性能管理相關(guān)的信息。
現(xiàn)在,服務(wù)庫(kù)已不再需要單獨(dú)構(gòu)建,有很多現(xiàn)成的開源解決方案和專門的商用解決方案。在某些情況下,人們不得不適應(yīng)現(xiàn)有的服務(wù)庫(kù)。
通信管理器
通信管理器處理探針程序、服務(wù)、服務(wù)庫(kù)、數(shù)據(jù)庫(kù)、分析法及其他承擔(dān)服務(wù)性能監(jiān)控和管理職能的組件間的通信。一般會(huì)有一個(gè)隊(duì)列(或者其他一些高速中間件層),可使信息在各個(gè)系統(tǒng)組件中生產(chǎn)和傳遞。通信管理器的職責(zé)包括:
與服務(wù)性能管理系統(tǒng)中的每個(gè)組件相連接,包括提供驗(yàn)證和確認(rèn)服務(wù)。
從每個(gè)組件中獲取信息,將信息傳遞到正確的目標(biāo),并為目標(biāo)制造信息。
維持高性能數(shù)據(jù)傳輸速度,即時(shí)應(yīng)對(duì)服務(wù)性能告警和反應(yīng)。
記錄當(dāng)前及未來性能預(yù)警分析的所用信息。
快速?gòu)耐ㄐ殴收现谢謴?fù)(如回滾操作)。
性能分析引擎
性能分析引擎是可插入的軟件組件,提供內(nèi)置性能分析服務(wù)。在工作過程中,人們可以利用這些分析服務(wù)去動(dòng)態(tài)管理服務(wù)性能。性能分析引擎的職責(zé)包括:
針對(duì)所有連接服務(wù)的性能提供實(shí)時(shí)分析服務(wù),并對(duì)閾值、能力或者行為方面的變化給出建議。(例如:當(dāng)一項(xiàng)服務(wù)運(yùn)行狀態(tài)處于閾值之下,探針會(huì)發(fā)出報(bào)警。然后分析引擎可根據(jù)時(shí)間序列數(shù)據(jù)庫(kù)中該項(xiàng)服務(wù)的當(dāng)前性能數(shù)據(jù),或者服務(wù)中的配置文件,自動(dòng)化調(diào)節(jié)。有可能是動(dòng)態(tài)增加數(shù)據(jù)庫(kù)的緩存大小,重新鏈接其它服務(wù)器或者向運(yùn)維人員發(fā)出報(bào)警。)
提供專門的服務(wù)性能報(bào)告以及趨勢(shì)報(bào)告。
動(dòng)態(tài)獲悉所收集的信息并在性能問題被識(shí)別和解決時(shí)對(duì)因果關(guān)系進(jìn)行解讀。
為與其他系統(tǒng)管理控制臺(tái)集成提供管理控制臺(tái)和API。
時(shí)序數(shù)據(jù)庫(kù)
時(shí)序數(shù)據(jù)庫(kù)既能處理結(jié)構(gòu)性復(fù)雜數(shù)據(jù)又能處理非結(jié)構(gòu)性復(fù)雜數(shù)據(jù),該數(shù)據(jù)庫(kù)存儲(chǔ)的都是圍繞服務(wù)性能(如時(shí)間、服務(wù)響應(yīng)、數(shù)據(jù)庫(kù)響應(yīng)、網(wǎng)絡(luò)延遲及其他用于服務(wù)性能概況中的信息等)記錄的原始數(shù)據(jù)。時(shí)序數(shù)據(jù)庫(kù)有兩大關(guān)鍵作用,包括:
存儲(chǔ)海量時(shí)間序列數(shù)據(jù)以對(duì)性能進(jìn)行有效監(jiān)控和分析。
對(duì)所有性能問題和解決方案進(jìn)行記錄,并在下次發(fā)生同樣問題時(shí),及時(shí)反饋。
告警管理
告警管理系統(tǒng)是一個(gè)軟件,根據(jù)預(yù)先設(shè)定的告警策略,當(dāng)服務(wù)運(yùn)行狀態(tài)達(dá)到告警狀態(tài)時(shí)及時(shí)發(fā)出告警。告警管理系統(tǒng)的職責(zé)包括:
捕捉從探針程序發(fā)出經(jīng)由通信管理器傳輸?shù)母婢?一般而言,這些告警是由超過閾值或者未達(dá)到閾值的服務(wù)而產(chǎn)生的。
評(píng)估每個(gè)告警的嚴(yán)重性并連接性能分析引擎,對(duì)問題進(jìn)行分析以及采取自動(dòng)糾錯(cuò)。如果分析引擎發(fā)出指令,告警管理系統(tǒng)則生成糾正措施。告警管理系統(tǒng)還可對(duì)運(yùn)維人員發(fā)出告警。
在時(shí)間序列數(shù)據(jù)庫(kù)中記錄每一個(gè)告警,包括告警原因和解決方案,以對(duì)將來分析提供幫助并確定解決性能問題的正確路徑。
路徑追蹤,更好地確定告警源頭以及確定在問題解決過程中應(yīng)被解決的其他服務(wù)。
工具列表
要記住我們?cè)诒疚闹兴f明的內(nèi)容在本質(zhì)上僅屬于概念性范疇。但是從概念性需求出發(fā),得出實(shí)際的性能管理方案,這種想法很好。在這一概念過程中,選擇相應(yīng)的技術(shù)是最后一步。您有很多開源、專有系統(tǒng)可選,包括但不限于以下系統(tǒng):
? Sensu
? Graphite-tattle
? Cepmon
? Logstash
? Librato
? PagerDuty
? Umpire alerting-controller
? Graphite
? Statsd
? Logster
? Incinga
? ZeroMQ
? Chef
? Puppet
? Zookeeper
? Riemann
? OpenTSDB
? Ganglia
? TempoDB
? CollectD
? Datadog
? Folsom
? JMXTrans
? Pencil
? Rocksteady
? Boundary
? Circonus
? Gdash
? 監(jiān)控寶
? 透視寶
? 壓測(cè)寶
這些工具沒有通用模式,都是為性能管理的某些特定方面而專門打造的,您要從中選取幾種來完成最終的解決方案。從這一堆產(chǎn)品中挑選適合自己業(yè)務(wù)的并不簡(jiǎn)單。我們從事云計(jì)算已有一段時(shí)間,性能多少是一種事后才考慮的想法。即便如此,當(dāng)我們把注意力更多地集中在CloudOps和存在于混合云中的業(yè)務(wù)質(zhì)量系統(tǒng)上時(shí),我們依然需要把性能管理作為CloudOps配置策略的核心組成部分?,F(xiàn)在就解決這一問題,否則將來它將演變成大問題。云智慧編譯
原文作者:David Linthicum