Nurse:LinkedIn的運維自動化修復系統

npde 9年前發布 | 11K 次閱讀 Nurse

 

目前,LinkedIn已經成為全球最大的職業社交網站,其會員人數超過3.6億。隨著網站的迅速發展,其維護成本也不斷增加,公司員工從幾百人增加到數千人。為了維護網站能夠正常運轉和發展,LinkedIn設置了一個專門的運維工程師團隊,來充分了解網站的每個組件,并確保能夠迅速解決網站的問題。然而,近些年網站遇到問題的數量增加了十幾倍,使得人工解決問題越來越難。于是,LinkedIn近期開發了自動修復系統—— Nurse

接下來,本文就LinkedIn的自動修復系統進行介紹。

LinkedIn的網站可靠性工程師 Brian Cory Sherwin表示 ,LinkedIn之前都是采用人工手段來探測和解決網站運行中出現的問題。站點的穩定全都依靠工程師的雙眼進行發現,然后利用雙手進行手動。然而,從 2010年到2015年,網站遇到問題的數量增加了18倍,而工程師數量卻只增加了個位數。為了網站的穩定發展,LinkedIn高層面臨了一個重要選擇 ——是相應的增加工程師數量還是設計一個自動的系統來完成大部分工作。當然,根據諸多網站發展的經驗,LinkedIn選擇了后者。

作為開發自動修復系統的第一步,開發工程師們需要確定如何利用計算機算法來發現并解決問題。之前,LinkedIn已經建立一個單獨的監控系統。該系統包括了幾十萬個傳感器,能夠迅速發現網站異常,并向工程師們發出警告。然而,對于一個自動修復系統,只是發現問題肯定是遠遠不夠的。該系統需要能夠自行解決一些比較簡單和常見的問題。只有對于無法自動解決的復雜問題,系統進行分類和簡單分析后,將其提交給工程師解決。

那么,在發現一個問題之后,系統如何進行分析和解決呢?例如,對于一個具體的問題,基于現象的警告只能說明表相——服務器無法登陸或者應用掉線等。然而,其背后的原因可能多種多樣,包括進程失效、服務器崩潰等等。在人工處理情況下,運維工程師會進一步詳細分析這些現象,發掘出具體的原因,并相應的執行不同的修復步驟。自動修復系統采用了類似的處理方法。LinkedIn團隊把監控系統所發現的問題送到具體的請求工作流中。這些工作流再根據工程師之前內置的算法和動作來修復網站。以應用程序掉線為例,監控系統發現一臺機器處于異常狀態,無法服務數據流。之后,數據流會收集事件發生的原因、根據內置算法重啟相關進程并把整個數據流的結果放置到卡片中。通過這些自動化的流程,工程師就可以避免把大量精力用在簡單問題的處理上,從而把更多精力放置到復雜、深入問題方面的分析和研究中,保證網站長期健康發展。

此外,LinkedIn已經把Nurse與其他系統進行了完美集成。在多個系統中間,Nurse扮演著中間人的角色。監控系統會把修復工作流的請求發送到該Nurse,進行問題修復。目前,LinkedIn已經把代碼部署系統、售票系統、遠程執行系統等與Nurse集成在一起。而且,公司允許站點運維工程師和運維工程師把解決常見問題的方法放置到系統中,供系統自動學習。

在實際測試中,LinkedIn已經證實了Nurse系統的用途。 Sherwin表示 ,針對突然斷電導致的大量服務器掉線的情況,Nurse在數分鐘即完成了服務器狀態的恢復,執行速度大大優于人工解決的情況。而且,Nurse目前每周會執行150個小時的修復工作流,大大節約了工程師的時間和精力。

未來,LinkedIn會繼續對Nurse進行改進。其考慮增加和完善的功能包括減少監控系統的資源消耗、減少從異常狀態恢復的時間以及允許運維工程師更多的關注基于現象的警告等。而且,該系統為同類型公司和其他網站提供了一定的借鑒。相信未來會有更多的公司推出自動修復系統。

 本文由用戶 npde 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!