注:今天給大家分享的主題是“去哪兒網應用運維自動化演進之路”。自動化構建過程中所遇到的障礙以及我們是怎么樣跨越這些障礙,我們遇到了哪些坑,以及怎么填平這些坑的過程。
我 2013 年加入去哪兒網,一直在從事運維開發工作。去哪兒網運維開發有一個特點,所有開發既當 PM,又當 QA,也沒有區分前端工作還是后端工作,用現在比較流行的話說,我們都是全棧工程師。
加入去哪兒這幾年,我做的工作也是比較零碎的,哪里有需求就去哪里。
概括起來主要涉及主機管理、應用管理、監控、報警平臺等設計,開發和運維這幾方面的工作。
下面簡單介紹一下我們的運維團隊:
我們的運維團隊負責公司所有的服務器、網絡等硬件平臺的運維工作。
部分人員從事日常運維,包括 QVS 的部署,Nginx 的配置,應用上線的支持,存儲的部署等,還包括報警的告知、故障的通報和跟蹤。
2013 年左右,我們開始研發自己的運維平臺。
負責公司內網的應用,這些內網包括 OA 系統、HR 系統,還有 IT 資產管理平臺等等。
——————————
去哪兒網應用運維平臺介紹
——————————
首先簡單介紹一下去哪兒網應用運維平臺。
我們知道一個應用從開發到線上運行,它的生命周期主要涉及到四個部分:
應用的資源管理,這些資源包括應用部署需要的主機、應用的圖片、文件,對象存儲所需要的存儲資源,應用通信和其他的網絡帶寬,還有應用所需要的計算資源等等。
為了提高應用開發的效率,并且保證應用開發的規范,我們公司會提供公共的中間件,這些中間件包括日志收集、應用配置注冊、監控報警指標的收集,還有應用調用路徑。
為了將我們的應用發布到線上,我們需要對應用進行代碼管理和構建測試到發布到線上,這需要 CI/CD 持續發布和持續集成。
當一個應用發布到線上之后,我們需要對這個應用的性能指標和業務指標進行監控、報警和分析,這樣就需要應用相關的監控、報警和日志分析平臺。
去哪兒網的業務也是一步步發展起來的,機器從幾十臺到上萬臺,在發展的過程中我們遇到了很多問題,在不同的階段我們也提出了不同的解決方案。
去哪兒網經歷的階段分為四個部分:
1、運維機器數量比較少,大部分的工作都是應急運維。比如我們發現一個應用有問題了,我們登錄到這個應用的相關機器上,手動執行 Linux 命令,去查看這個機器的資源使用情況。
比如 CPU 是不是太高了,是不是磁盤占滿了,這個階段也沒有用到太復雜的腳本,基本上都是手動操作,幾十臺左右。
2、隨著規模擴大,手動寫了很多腳本,有了這些腳本之后我們就可以批量去執行任務,可以在多臺機器上批量部署應用和監控。
這個階段,我們稱為腳本運維的階段,即利用腳本并且結合開源的系統,完成對數百臺機器的運維。
3、隨著規模越來越大,腳本運維不夠用了,遠遠不能滿足需求。腳本可能都是分類的腳本,并沒有經過合理的編排,這樣腳本的執行順序就比較重要,沒有合理編排可能會導致一些問題。
我們開發一些相關的系統,用系統把相關的腳本串聯起來,編排好組成一個一個分離的操作。比如說一臺機器的新建和刪除就是單獨的操作,把這些做成系統,運維人員可以在界面上操作。
這個階段,我們稱之為分立系統,數據基本上在各個系統之間沒有實現一個比較好的共享。這個階段能運維的主機數量也比較有限,數千臺的主機是比較好的。
4、緊接著去哪兒網的機器規模突破了萬臺以上,這時候我們考慮能不能從一個比較高的角度去合理設計一下運維平臺。
為我們的運維工作提供一站式的服務,在一站式服務的基礎上我們實現數據互通,這樣就可以交互起來,做一些自動化的工作。這個時期也是今天我們主要要講的內容,即運維平臺的建設。