業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

一、問題與挑戰(zhàn)

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

自2017年起,vivo的機器規(guī)模和服務數(shù)量都有顯著增長,這可以從圖表中看出。機器規(guī)模大約增長了五倍左右,服務數(shù)量也基本上增長了十幾倍,其時間跨度為從2017年至2022年。

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

在規(guī)模增長的情況下,挑戰(zhàn)和復雜度肯定隨之上升,在vivo比較典型的挑戰(zhàn)主要分為變更挑戰(zhàn)和故障挑戰(zhàn)。

1、變更挑戰(zhàn)

變更中還是存在著或多或少的手工變更場景;

我們的單次的發(fā)布時間是比較長的;

存在很多的業(yè)務大量遷移的場景;

谷歌SRE有這樣一個概念:70%的故障是由變更引起的。在vivo也存在這種情況,變更對線上穩(wěn)定性會有很大的影響。

2、故障挑戰(zhàn)

  • 機房級故障風險(大小公司都會遇到,光纖挖斷或機房內(nèi)部故障等);
  • 業(yè)務快速增長對容量需求大幅增加。

在此挑戰(zhàn)下,我們分為了可用性能力和可用性階段兩個維度去建設,以此保障業(yè)務的穩(wěn)定性。

二、可用性能力建設

1、基于故障的全生命周期開展

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

我們的可用性能力建設是基于全周期故障管理開展的,涵蓋故障發(fā)生、發(fā)現(xiàn)、響應、恢復、復盤及預防措施。從故障發(fā)生到恢復的時間,稱為MTTR;從故障的恢復到發(fā)生,從穩(wěn)定到不穩(wěn)定,稱為MTTF;故障發(fā)生的間隔時間,稱為MTBF,總計3個指標。

故障管理無非就是這4點:

  • 如何預防故障的發(fā)生?
  • 如何盡快發(fā)現(xiàn)故障?
  • 如何快速進行故障治愈?
  • 故障恢復后,如何復盤跟進?

主要從業(yè)務可用性方面考慮,需要關注故障的發(fā)生頻率以及對業(yè)務的影響時間。所以,減少故障發(fā)生頻次、快速定位故障發(fā)生、縮短故障持續(xù)時間、實現(xiàn)故障快速治愈,就是我們整個高可用能力建設的大體思路。下面從我們已落地的措施跟大家介紹:

2、故障發(fā)生分析

首先,要實現(xiàn)故障預防,首先要了解故障為什么發(fā)生,可以從服務視角和全鏈路視角來看。

1)服務視角

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

一個服務,無非就是有請求的輸入,正常來說有相應的輸出就可以。在實際情況下,有很多方面會影響服務的正確響應。在一些經(jīng)典場景中,已經(jīng)總結(jié)出了影響因素

  • 容量方面:業(yè)務請求倍數(shù)級增長,會導致單個服務的輸出異常;
  • 服務方面:軟件本身有bug在運行,結(jié)果服務運行crush了;
  • 硬件方面:主機硬件、機房、網(wǎng)絡導致的異常。

2)全鏈路視角

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

  • 容量層:請求突增,全鏈路的容量不足,導致服務出現(xiàn)異常;
  • 服務層:服務和服務之間需要協(xié)同配置,配置設置不對也會導致全鏈路異常;
  • 上下游依賴:一些關鍵服務的異常,會導致整個鏈路的異常。

從全鏈路的穩(wěn)定性來看:上下游的依賴、容量不足和服務配置異常等,都是影響穩(wěn)定性的重要因素。

3、故障預防建設

從服務和全鏈路兩個角度分析故障因素之后,故障預防建設就有了相應的思路:

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

  • 全鏈路異常:要做好上下游強弱依賴分析,并對關鍵的服務器做專項保障,以此保障全鏈路的穩(wěn)定性;
  • 變更異常:建立變更流程規(guī)范、變更管理平臺;
  • 基礎設施異常:依賴高可用架構(gòu),去除單點風險,做好冗余容災。

4、故障預防

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

前面講了整體的分析和建設思路,實際上vivo是怎么做的呢?

我們基于全鏈路做了建設保障,整個鏈路從接入層、業(yè)務邏輯層、中間件層、存儲層、基礎設施層進行了建設:

1)單元化:減少跨機房之間的服務調(diào)用,避免單機房的故障影響到所有機房服務;

2)多入口:之前很多業(yè)務只有單個接入層入口,建設IDC和公有云的多入口能力之后,單個入口異常對服務整體接入的影響就會變小;

3)過載保護:當業(yè)務突增容量的時候,接入層服務根據(jù)設置能夠主動拒絕部分突發(fā)請求,防止過高的請求流量把后面的服務打垮;

4)熔斷降級:對依賴服務做好壟斷降級,可以屏蔽異常服務帶來的影響,避免雪崩效應。

5、故障發(fā)現(xiàn)

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

我們建設了基于全鏈路的故障發(fā)現(xiàn)能力,目到故障主動發(fā)現(xiàn)率能達到90%,這當中包括客戶端監(jiān)控、服務端監(jiān)控和基礎監(jiān)控:

1)客戶端監(jiān)控:自建撥測系統(tǒng),通過旁路的模擬用戶訪問方式,監(jiān)控各服務的可用性情況;

2)服務端監(jiān)控:包括域名監(jiān)控、日志監(jiān)控和服務之間的調(diào)用監(jiān)控,按照監(jiān)控的實現(xiàn)方式主要是metrics/logs/trace;

3)基礎監(jiān)控:監(jiān)控主機的硬件資源使用情況,主要是metrics方式。

6、故障處理

主要包括故障分析和故障處理。

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

  • 故障分析:和監(jiān)控系統(tǒng)聯(lián)動,支持基礎服務故障分析、域名可用性分析等;
  • 故障處理:故障預案建設,包括預案的制定、演練等。

7、故障復盤

故障復盤在整個高可用建設周期里面是非常重要的一環(huán)。

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

我們通過基于業(yè)務的SLA分級,有的放矢地去保證業(yè)務的穩(wěn)定性,并做好業(yè)務的每一個故障記錄,改進和驗證能力建設:

1)業(yè)務分級:運維資源非常有限,保證保障所有業(yè)務有相同的SLA,因此分級保障是非常有必要的,我們基于業(yè)務的口碑、營收,分為核心、重要、一般、其它四個業(yè)務級別,以此指導投入到各業(yè)務的運維人力和保障力度;

2)故障記錄:提高復盤效率,同時跟蹤線上業(yè)務故障做后續(xù)分析,以此指導業(yè)務進行優(yōu)化;

3)故障改進:基于混沌工程做后向驗證,判斷改進措施是否有落地生效。

這是我們在故障復盤上的實踐,我們也將這些能力和實踐落地到了平臺,通過平臺去管理故障復盤工作。

8、容量管理

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

線上故障很多都是容量問題導致的,容量資源到位后,可用性也能得到一定的保障,在這方面,我們主要提升了兩方面的能力:資源彈性伸縮能力、資源交付運營管理能力。

  • 資源彈性伸縮能力:建設基于混合云的資源保障能力,極大提升資源彈性能力;
  • 資源交付運營管理能力:建設資源的全生命周期的管理機制,保證資源的供應跟使用效率最大化,實現(xiàn)了包括預算管理、需求管理、采購管理、存量運營管理。

三、可用性階段建設

在可用性能力建設之后,我們分成三個階段去建設可用性:標準性階段、流程性階段、平臺化階段。

1、標準化階段

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

為什么要建設標準化?

標準化能夠極大地減輕業(yè)務的運維復雜度,從而降低運維成本。我們在硬件和軟件層面,都做了很多標準化工作。

  • 硬件層面:機房標準化、網(wǎng)絡標準化(公網(wǎng)、主動上網(wǎng)、內(nèi)網(wǎng)專線);
  • 軟件層面:OS標準化、主機環(huán)境標準化、服務目錄標準化、Agent標準化、接入nginx集群標準化、服務能力標準化(中間件服務)。

2、流程化與規(guī)范化建設

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

首先,我們會將運維過程中做得比較好的實踐和方法沉淀成流程機制和規(guī)范,讓業(yè)務穩(wěn)定性保障有序可控,包括運維軍規(guī)、故障響應機制、公共事項規(guī)范、大型活動保障規(guī)范等。

例如大型活動的保障規(guī)范,在規(guī)范沒有建立起來之間,如有大型運營活動或春節(jié)紅包派送活動的時候,線上很容易出故障,自從2018年把大型活動保障規(guī)范建立起來之后,春節(jié)等重保都能保障平穩(wěn)運行。

3、平臺與系統(tǒng)建設

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

在平臺與系統(tǒng)建設上,以CMDB為底座,把往常較好的流程機制更進一步做成平臺,如變更平臺、監(jiān)控平臺、服務工具平臺等,以此支撐業(yè)務穩(wěn)定性。

四、可用性結(jié)果與展望

到2022年,整體業(yè)務穩(wěn)定性運維實現(xiàn)有序高效,業(yè)務可用性從之前的3個9提升到現(xiàn)在4個9,達標的業(yè)務個數(shù)也從之前的8個到現(xiàn)在的24個。

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

達到這個可用性結(jié)果,主要就是通過可用性能力建設和可用性階段建設:

  • 可用性能力建設:故障預防、故障發(fā)現(xiàn)、故障治愈、故障復盤
  • 可用性階段建設:標準化、流程/規(guī)范化、平臺/自動化

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

未來,我們會重點關注異地多活、容器/云原生的可用性保障。

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

以容器、云原生方面的可用性保障為例,我們之前更多的是純物理機,后面增加了虛擬機,再到后來補充了公有云,進一步降低了對底層基礎設施的直接依賴,同時我們也在做容器、云原生,將資源單元化、靈活調(diào)度,降低對物理硬件資源的直接依賴,因此我們要構(gòu)建不同基礎架構(gòu)的高可用能力。

可用性建設還能做些什么?

業(yè)務指數(shù)級增長,可用性建設也可以如此穩(wěn)當?

我個人認為,我們不單單只是考慮可用性,業(yè)務的質(zhì)量和運營成本都是需要我們考慮的,業(yè)務的運維保障后續(xù)要進入到精細化運營保障階段。

Q&A

Q1:在可用性建設落地的過程中,遇到的最大難點是什么?

A1:第一點是底層技術(shù)能力的建設規(guī)范,這些規(guī)范如果不準守會導致業(yè)務可用性結(jié)果存在很大的不確定性,所以要對團隊制定一定的規(guī)范,同時也要有一定的守底機制;

第二點是上層認可,每個業(yè)務在不同的階段訴求是不一樣的,穩(wěn)定性做得不好,會影響業(yè)務、口碑和營收,獲得上層的認可后,可用性建設也更容易推動。

Q2:請問貴司在CMDB落地過程中,除了關聯(lián)開發(fā)負責人、主機等信息,在實際過程中還關聯(lián)過哪些信息?比如是否關聯(lián)中間件的信息?

A2:我們很多系統(tǒng)當前都是以CMDB為底座的,不僅僅是運維系統(tǒng),很多系統(tǒng)都是基于CMDB去搭建的,中間件服務也會和CMDB做關聯(lián)建設,比如微服務里面的dubbo,也是基于CMDB去做服務發(fā)現(xiàn)和治理。

講師介紹

周甲黎現(xiàn)在是vivo的運維總監(jiān),負責vivo互聯(lián)網(wǎng)業(yè)務的運營和維護工作。這位曾經(jīng)在百度和騰訊工作過的人,擁有客戶端、國際化和大數(shù)據(jù)算法等離線業(yè)務運維方面的經(jīng)驗。加入vivo后,我主導了業(yè)務高可用性的建設,將業(yè)務的可用性提升至99.99%的水平。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊12 分享