概述
- 什麼是SRE
SRE(Site Reliability Engineering)翻譯成中文就是網站穩定性工程師,專門負載網站的穩定運行。說到這個職責可能很多人會聯想到運維工程師,兩者確實有相似之處,但是也不盡然。SRE本質上還是軟件工程師,招聘時按照軟件開發工程師的要求來招聘,通過軟件工程理論來管理工程,力圖重新定義運維,推進業務進化。
SRE的概念最早由谷歌提出,其他互聯網公司爭相跟進,目前實踐的比較好的是谷歌和奈飛(neflix)。奈非的核心SRE據說只有個位數,他們運營着全球190國家的上億用戶,用實踐證明了SRE理論的正確性。
- SRE和DevOps有什麼區別?
DevOps和SRE首先兩者不衝突,Devpos是一種在不斷演進的概念,主要是強調運維操作應該系統化和自動化,產品的設計研發運維工程應該統籌考慮,有機結合,利用軟件工程的理論來進行運維工作。SRE是DevOps思想的一個成功實踐,用程序設計來類比的話,DevOps可以看做一接口,而SRE則是在這個接口上的一個實現。
職責
SRE是做什麼的?SRE的工作內容主要包括以下內容
- 容量規劃
- 生產系統監控報警
- 部署,發佈變更
- 值班
具體實踐
- 硬件
以集羣爲單位進行管理,使用一個叫做borg的集羣控制系統
10臺服務器=1個機櫃
多個機櫃=1機櫃排
多個機櫃排=1個集羣
多個集羣=1個數據中心
多個相鄰數據中心=1個園區
- 網絡
使用基於SDN技術的中心化網絡路由方案,而不是使用分佈式的路由方案。這個的好處就是高效,將最佳路徑的計算從各個交換設備上轉移到中心化控制器上去,使得路由的控制更加快速和有效,並且可以使用廉價的交換設備,降低總體的成本。
在網絡帶寬的分配上,谷歌使用一套叫做BwE的帶寬控制器,集中化的控制可以更高效的分配帶寬,當發生網絡擁堵的時候,可以迅速的將流量調度到空閒的設備上去,提高網絡帶寬的使用效率以及服務質量。
- 負載均衡
1.根據地域,將域名解析到就近的服務器地址
2.基於用戶ip的就近服務器地址下發
3.服務器間的rpc負載均衡
谷歌的GSLB可以通過計算qps和剩餘容量來自動調度用戶的請求
- 服務質量
1.SLI(服務質量指標)
服務質量的量化指標,例如100分是最好的服務質量,80分良好,60分及格
2.SLO(服務質量目標)
SLI的目標值,例如我們規定SLI需要達到80分,則SLO是80
3.SLA(服務質量協議)
服務商與用戶間的協議,達到或者沒達到SLO的話,怎麼處理
SLO應該被作爲SRE觀測的重點指標,它代表了當前對用戶的服務質量,當SLO不達標時,SRE應該採取行動制定相應的計劃去提高SLI
- 減少瑣事
瑣事,瑣事就是搬磚,簡單,重複,可自動化的手工工作,並且沒有長期價值。這種工作應該被自動化替代,例如幫同事上傳文件到某機器上,幫同事重啓一下某個服務等瑣碎工作。
- 監控報警
1.監控
a.黑盒監控
從客戶端的角度出發,監控服務的被調失敗率,被調耗時等
b.白盒監控
從服務器的角度出發,監控服務的重要函數調用和接口的失敗率,耗時等
2.報警
報警分爲3級:緊急報警,工單,日誌。
緊急報警出現時,需要立即採取措施,否則將會有故障發生。緊急且重要
工單:不需要立即行動,重要不緊急
日誌:有問題時進行分析使用
- 值班與故障響應
1.建立故障處理流程,並持續優化它
2.建立和維護一套完備的故障演習流程
3.事後總結,避免重蹈覆轍