解密騰訊SNG雲運維平台「織雲」

2021-06-26 00:35:54 字數 3267 閱讀 3195

infoq:織雲定位為內部的自動化運維平台,那麼它具備那些特徵呢?

梁定安:織雲平台定義了sng業務的標準化運營規範,在平台中運維人員抽象出上層的管理節點,減少與統一運維物件,降低海量運維的複雜度,得益於運營環境的標準化建設,有更多通用的自動化工具被設計開發,配合流程引擎的驅動,使我們逐步邁入自動化的運維階段。平台最大的特色是「一鍵上雲」幫助sng自研業務快速實現織雲最初的上雲目標;而「自動排程」則實現標準化服務的容量自動維護;還有我們基於核心inotify的一致性監控,保證了配置資源與現網資源的一致性。此外,織雲的核心模組還有:資源管理,包管理,配置管理,自動流程,中心檔案源,許可權中心,都是自動化運維必不可缺的重要功能模組之一。

infoq:「一鍵上雲」實現沒有那麼容易吧?非標準化業務應該是很難接入,在實現這一目標時,你們又遇到那些難題?

梁定安:困難是必然存在的,我們第乙個遇到的難題是虛擬化選型和適配改造,在xen和lxc之間,我們選擇更輕量成本更低的lxc作為織雲平台的虛擬機器,在運營過程中,由於虛擬機器與實體機管理模式的差異,我們沒少踩坑。如同母機下子機對cpu、網絡卡流量搶占造成相互影響,子機多crontab集中排程,常用系統命令只顯示母機狀態,lxc內網nat管理改變原運維習慣等等問題,都被一一啃下,lxc順利本土化成功。

一鍵上雲的成功,得益於sng自研業務的標準化運維管理的良好基礎,我們所有程式的包管理(pkg包系統)、配置檔案svn管理(cc系統)、目錄管理(中心檔案源)、許可權管理(標準api)、名字服務(l5)的高覆蓋率,都可以經過輕量的改造即可成為織雲平台的功能之一。再輔以流程引擎,將上雲的步驟串成自動化的流程。使用者只需在織雲平台上管理好模組與依賴資源的關係,織雲便可以一鍵式的完成整個遷雲的過程。

infoq:織雲的自動排程是實現業務動態擴縮容?你們又是如何控制「雪崩」的?面對業務的大量突發,是全自動,還是人工干預?

梁定安:是的,我們認為當乙個模組可以靈活的實現擴容自動化時,它便具備了跨idc/城市遷移的排程能力。同理,我們對運維的業務按核心功能的不同分別抽象成不同型別的set/服務檢視(包含多個模組),當整個set的標準化程度且set內的模組都具備自動排程的基礎能力時,我們便可以對整個set進行排程操,目前qzone、說說、廣點通等重點業務的set已經具備快速排程能力。

雪崩的預防是負載均衡管理中必須解決的乙個問題,在sng我們擁有一款十分出色的負載均衡+容錯元件l5,l5利用名字服務將乙個集群標識成乙個l5id,主調方可以通過嵌入l5api並呼叫get_route來獲取被調l5id中的每個ip:port,然後當請求結束後update_route來更新該l5id的每個ip:port的成功與延時資訊,l5元件便可以通過全域性資料的整合,在下個呼叫時間片動態的為l5id下的每個ip分配合適的請求量,利用這個原理,l5根據實際每個被調ip:port的請求量、成功率和延時的波動資料,可以計算出每個ip:port最大可支援的請求量,當遇到業務請求量陡增的場景,l5會啟動過載保護,在保證被調方飽和的請求量前提下,對新到的請求全部拒絕服務,以防止雪崩的發生。這些都是由l5元件全自動實現的。

織雲的自動排程原理是對服務/模組的容量指標(cpu/流量)進行監控,當觸發擴容閥值時,織雲後台便自動觸發部署、測試、灰度、上線這一系列的全自動流程,保證線上服務容量的可用,除非耗盡可用裝置buff,否則織雲的自動排程功能輔以l5的優秀容錯能力,可保持業務容量處於高可用的水平。

infoq:一致性應該是多個方面的,包括上面有提到一致性監控,還有織雲的另一大特色服務一致性管理,這裡的關係與具體包含的內容都有那些?

梁定安:先介紹下一致性本身,這是一套c/s的監控程式,c利用核心inotify訂閱監控的物件,並通過動態上報的架構,在乙個集群內選取乙個leader彙總資料後,傳輸到s進行資料落地,實測效能可達監控1000個檔案秒級感知,是我們實現織雲前台實時監控現網環境的核心手段。

回到一致性管理,視乎場景的不同,具體可以分為兩大類:資源的一致性和服務的一致性。資源的一致性,比較容易理解,織雲自動排程中依賴的資源,包括:包(程序、版本、執行狀態)、配置檔案(md5)、目錄(md5)、許可權、後置指令碼(md5)。通過一致性的管理,使織雲能夠在無人職守的前提下,自動的變更運營環境。 服務的一致性則與sng業務的形態耦合比較重,如qzone的多地容災分布,每地的服務彼此一致,主要也是利用一致性的監控管理,服務一致性管理的會比資源一致性管理緯度要粗,往往只包含多個模組的包、通用目錄、許可權這3類。

infoq:織雲的核心模組有:資源管理,包管理,配置管理,自動流程,一致性監控,中心檔案源。對於開發團隊而言,在織雲做這些操作,和不使用織雲有什麼區別? 大體的操作流程是什麼樣子的?

梁定安:織雲提供給開發和運維團隊的是工作效率的提公升,讓我逐一為大家介紹這些核心模組的功能。

資源管理,我們對現網操作的最小管理物件——模組,部署上線所依賴的所有資源,和操作這些資源的先後次序,都將錄入到織雲的資源配置,並存入模組的cmdb配置管理資料庫,成為該模組必不可少的屬性之一,結合自動流程可實現多種自動化的操作。原則上模組的資源配置只能由少數模組負責人修改,並且當資源發生變更時,織雲提供鎖表的能力,防止交叉篡改。沒有織雲的資源管理,運維/開發只能依賴wiki、文件等古老的方式記錄,並且無法自動化。 包管理,是sng乙個最基礎的系統,運維要求每個上線運營的程式,都必須按照sng包管理規範打包,包管理本身提供了一套完整的框架,包括:程序名字與埠管理,啟停方式統一管理,標準化的目錄結構,完善的程序監控體系,靈活公升級回滾的svn管理等等。包管理是一切標準化的基礎,離開它,運營環境將一片狼藉。

配置管理,指的是配置檔案管理,包括線上編輯、版本迭代、diff、前後置指令碼、批量下發/回滾等等功能,是單檔案管理的利器。沒有它的話,就只能回到指令碼發布時代了。

自動流程,指的是織雲的流程引擎,主要功能是將不同的標準化工具串聯起來,前者的輸出可作為後續工具輸入用途,支援流程分支彙總的能力,可通過串聯不同的工具,拼裝出不同的自動化流程,實現無人職守的各種操作。這就是人肉和自動化的差別。

一致性監控,主要就是秒級感知現網變化的能力。有了它,開發再也不會提讓運維批量查一批ip的配置是否一致的需求了。

中心檔案源,主要是為目錄管理誕生的一套svn管理的系統,可根據策略不同,自動與現網同步或被同步,且支援大批量的分發能力。沒有它,大夥還是只能靠指令碼來進行目錄類的發布管理,效率低下。

infoq:在織雲上的業務部署監控、日誌收集是如何實現的?而運維「織雲」這個平台運維工程師又是如何保證平台的穩定性?

梁定安:託管於織雲上的業務使用的是sng內部統一的上報通道,將監控資料和日誌上報到監控平台的storm集群中,監控資料處理集群利用mongodb、rabbitmq和infobright對大量的流資料進行處理,最終產生監控告警或報表。織雲負責提公升運維效率,統一監控平台則負責提供監控告警管理。

織雲平台本身的可用性,也是嚴格按照sng可運營規範要求設計的。值得一提的是,織雲為了保證具備自動排程能力的模組在關鍵時刻的可用性,我們特別設計了演習功能,每天都隨機抽取演習,隨時檢驗平台核心能力的可靠。

梁定安 解密騰訊SNG雲運維平台「織雲」

為什麼會有織雲?織雲重點解決什麼樣的問題?面對錯綜複雜的業務,織雲又是如何自尋突變的呢?梁定安會全面介紹這個平台的特性 底層技術組成 以及給sng所帶來的價值。infoq 梁定安你好,織雲是什麼時候開始做的?梁定安 2012年底cto tony將雲化戰略推廣到公司內部各個bg,織雲正是在公司雲戰略的...

騰訊雲日常運維常用功能梳理

根據申請使用者登入 登入系統後找到 雲監控 產品元件,參考當前告警資訊情況。xx萬元 70 80 續費管理 中應特別注意 15天 30天內到期的資產續費情況。資產續費建議採用一月一續的方式,退還資產時可保整資金最大化利用。續費操作演示 略 重新重新整理頁面後,資產日期已經延續完畢。費用中心 收支明細...

騰訊雲學習筆記 Linux系統運維基礎命令

訪問命令 history 調取使用者在系統中使用過的命令。數字 對應的命令。ctrl r 歷史命令搜尋 cd 上一級目錄 cd 當前目錄 相對路徑 cd etc 絕對路徑 ls 檢視檔案 ls a 檢視隱藏檔案和目錄 ls l 檢視更詳細的檔案 ls lrt t是顯示修改的時間先後順序 touch ...