了解最新公司動態及行業資訊
京東云作為京東集團對外輸出能力的窗口,實現京東能力+云平臺賦能客戶。其產品涵蓋IaaS層、PaaS層以及以此為基礎的電子商務、物流、金融、保險等領域的服務和解決方案。本文主要從保障這些服務的穩定性和效率的角度來講解京東云自動化運維系統的構建和實現。
2017年12月1日至2日,由51CTO主辦的WOTD全球軟件開發技術峰會在深圳中州萬豪酒店舉行。
京東云高級架構師在主會場與來賓分享了《京東云自動化運維系統建設》的主題演講。以下是演講稿。
說到京東云,我們最看重運維,需要一個自動化的運維平臺。這方面有幾個關鍵問題,主要圍繞安全、部署變更、網絡管理、監控管理……使用自動化運維來提高平臺架構的穩定性和人員的開發效率。
在京東云的整體環境中,除了我們的技術團隊管理和維護的云應用外,還啟用和提供了各種SaaS服務。
如何在云端維護客戶業務的穩定性?我們對此進行了深入的研究和探索,我們將分四個部分進行說明:
京東云自動化運維基礎組件
針對以上問題,我們從四個方面入手:
如上圖所示,京東云運維平臺的大致建設路線圖是:基礎組件→客戶端系統→部署系統(包括:各種發布系統、任務調度系統、監控系統),最后完善運營和維護平臺。,以便更好地服務于我們的客戶。
服務和資源管理
首先我們來看第一個基礎組件:服務組織資源的管理it運維,也就是利用CMDB來實現所謂的配置管理。
通過CMDB的“服務樹”概念,我們可以把握以下三個方面:
因此,“服務樹”主要涉及到系統中服務的實時信息,包括:哪個服務在哪臺機器上,哪些實例,屬于哪個App,內部有哪些邏輯進程,以及如何申請所需的外部權限,以及我們如何對其進行監控等。這些都需要從服務器獲得。
其次,可以解決服務之間的解耦關系,即服務與實例的關系,以及服務對外提供的窗口。
上圖右側為“服務樹”與名稱服務的示意圖。底部顯示了從應用程序到實例的解耦關系,頂部是客戶端的退避()。
任務調度管理
第二個基本組成部分是任務調度管理。在實際場景中,無論我們是想協同操作、在線發布,還是部署和分發文件。
這些都需要系統調度目標機器完成相應的任務,也就是我們必須要求指定的機器能夠按照指定的策略執行指定的命令。由于該過程的實時性、批處理性和共生性,支持該系統極具挑戰性。
同時,我們需要通過策略來定義不同類型的并發。比如我們要發布一百臺機器,那么我們不會同時部署,而是批量并發。
因此,我們需要指定每個并發的具體任務,判斷成功與否的邏輯關系,檢查具體的完成程度,還要找出那些超時的狀態。由于這些是通過底層架構構建的各種服務,它們的調度邏輯其實是一樣的。
此外,所有執行操作都需要可追溯,包括能夠知道誰、何時以及執行了哪些操作。可見的安全性和標準化非常重要。
而如果出現故障,我們需要及時截取輸出來定位問題。這些是任務調度系統基于服務樹求和需要實現的基本邏輯。
監控平臺
第三個基本組成部分是監控平臺。監控無非是一個從數據采集、到數據聚合、再到存儲和處理的過程。
與通常的數據監控不同,我們構建了一個時間序列數據存儲(TSDB)。由于要查詢的數據點比較多,所以我們將每個查詢和收集到的監控點信息按順序存儲。
另外,我們的系統具有“少讀多寫”的特點,即“寫”(寫數據)比較均衡;而“讀取”(讀取數據)是突發的。
例如,檢查一個監控的狀態是一個隨時都要做的操作。一般這樣的寫操作需要1秒、10秒或1分鐘作為獲取間隔,這是一個比較頻繁的過程。讀操作是突然發生的,所以我們需要分離讀寫。
因此,我們基于 ES() 實現 TSPD,其中涉及到兩個封裝:
監控數據的另一個特點是自動采樣。有時,一些頻繁的查詢涉及很大的時間跨度。
例如:一個月甚至一年。由于我們的數據采集間隔是1秒、10秒或者1分鐘,如果直接查詢所有的數據點,需要產生海量的數據,這當然是很難實現的。
因此,我們自動對寫操作進行采樣。當查詢超過15天的數據時,我們會按分鐘或每小時匯總數據,放入數據庫,然后查詢一個月的數據。
通過自適應路由,我們可以找到有限的一小時數據,同時我們的數據庫和業務系統速度也可以有更快的水平。
另外,對于那些實時數據處理,我們主要采用基于JNS的多地點部署和多調度流程,從而實現多維實時計算。
客戶
第四個基本組件是客戶端。由于所有業務都需要客戶端,對于京東這樣大的公司,會細分為部署類(如JNS)、監控類、初始化等客戶端類型。
想象一下,如果我們需要加載、部署或升級 100,000 臺機器,工作量是可想而知的。
即使我們只維護一個幾十萬臺機器的Agent,由于環境復雜,多個IP的存在,根據一個“何時何地出問題”來處理會很費時費力。單一維度。
所以這里我們介紹一下Agent資源溢出的重要概念。比如對Agent的監控,由于占用了一些計算資源,當前的服務可能會被關閉,所以這種服務外的監控會影響服務本身的穩定性。
可以看出,Agent客戶端需要做以下事情:
在具體實現中,我們使用 ifrit 進行控制。也就是當一臺機器在引入服務時,負責管理的agent會在我們的ifrit服務器上注冊,告知它當前的分機房和使用的agent的版本。
然后其對應的客戶端就可以相應的下載這些信息包,從而掌握最新版本的Agent等信息。這導致了一個簡單的客戶端架構。
京東云自動化運維部署介紹
有了上述客戶端和組件系統的構建基礎,我們進一步構建部署和發布任務就相對容易了。
我們先來看看應用的部署系統。除了實現應用部署外,它還管理各種服務的維護和資源,以及訪問的過程。
如上圖所示: 除了編譯構建“”之外,我們還實現了流量訪問“”。
如上圖所示,這里的Agent有一個核心需求:實現跨平臺。由于京東整體平臺環境復雜,我們有不同的虛擬機、物理機,需要整合上面提到的各種操作。
因此,我們需要實現以下容錯功能:
對于上述功能的實現,我們將部署分為兩種:
大體流程是:編譯構建自己的產品庫(包括代碼包和代碼項)→通過部署服務和上述調度系統的部署服務發布(物理機和容器都可以實現)→部署完成并開始運行→對運維(尤其是鏡像日志的收集)→通過日志服務進一步分析。
同時我們在前端做好了流量接入,中間還提供了一個LB(負載均衡)網絡。通過以上兩種部署方式,我們可以根據服務的實際需求進行按需升級。
此外,我們這里使用的是基于 NS 的服務自動化和資源管理。它不需要關心當前服務的具體流程是如何實現的,只關注:當前的容量,需要什么資源,可以獲得的資源。
京東云自動化運維監控系統
除了上面提到的部署,我們還非常重視監控系統。監控最重要的作用是能夠在出現問題時及時恢復。
為此,必須完成以下工作:
因此,面對虛擬機和復雜環境,為了保證服務器不停止運行,我們在上線過程中采用了-分層發布。
它可以監控一個服務是否在機器層、服務層、外部流量訪問層,甚至網絡層。這些都是監控需要解決的問題。
上圖是監控的整體架構,展示了從底層數據抽象,到數據采集,再到數據處理和離線處理的全流程。
數據采集??方式包括:采集代理、外部檢測和API推送。
同時,處理邏輯包括:如何判斷異常類型,對異常做出何種告警,運維溝通或研發溝通的方式。這些步驟都是提前計劃好的。
當然,這些失敗本身就是事件類型。因此,我們需要考慮如何存儲事件以方便查詢和進一步決策。
由于之前的事件可能會影響到后續的事件,如果你有一個好的事件庫,那么你可以讓系統下游知道上游發生故障的時間和地點,這對于下游故障排除非常有用。都非常有幫助。
同時,我們也會對監測到的數據進行一些離線處理,通過各種高效算法反饋給相應的告警計算。最終以趨勢圖或各種事件、報警的形式顯示各種數據。
在之前的基礎上it運維,我們構建的京東云監控系統由以下四種監控類型組成:
其實這個問題對于京東來說會很嚴重,因為它會直接影響到用戶流量甚至用戶訂單的流失,所以我們需要從用戶層面做黑盒檢測。
基本監控
具體而言,對于機器監控,我們將機器連接的整個過程自動化,從采集到計算,再到報警,從而避免人工干預。
同時,我們為各種報警指標設置了默認值。例如,通過發現某臺機器的cpu.idle小于10%,我們可以從服務名知道它所屬的服務,以及誰是維護者,然后向它的維護者發送告警信息,并通過報警信息,可以大致了解相關數據,從而實現后臺聯動。
生存監測
對于生存監控,主要檢查進程和端口是否存活。為了實現部署聯動,我們指定進程和端口的部署路徑。
通過進程的路徑,我們可以知道進程的類型和對外開放的端口,從而實現自然監控。
性能監控
再來看看性能監控,主要關注服務的外部指標,一般來自日志。
為了統一,我們規定、規范、約定了一種日志格式,從多個維度讀取日志信息中不同的標簽(tag)值。
比如,從宏觀層面來看,京東整體流量是穩定的,但通過多維度聚合可以發現,某省機房流量存在細微的底層波動。
當然,除了主動從日志中抓取,我們還可以從程序和用戶的告警中學習。
業務監控
業務監控就是從用戶那里檢查服務是否正常。比如電商中常用的就是通過模擬全國用戶訪問,找出分省、分運營商或分機房的訪問情況。
這是使用外部網絡或自定義方法來測試業務。此外,我們還將使用模擬云操作的方法來監控云服務。
例如:模擬用戶登錄云網站→購買主機→部署鏡像→發布。
讓我們判斷一切是否正常。通過這種方式,我們能夠在用戶之前從用戶的角度識別、處理和解決問題。
總結與展望
如上圖所示,我們最終在上一個的基礎上搭建了京東云自動化運維平臺方舟。
在界面上,它可以提供:
綜上所述,我們的監控自動化平臺通過各種技術的應用,基本實現了服務化,實現了全生命周期。
面對大量的 SaaS 客戶,我們的解決方案為他們提供有保障的交付效率、成本節約以及對各種可能出現的問題的準備。
組織/夏立成 上海藍夢創始人兼CEO,湖北IT公司副總裁,致力于為企業客戶提供IT外包網絡維護服務,幫助他們創新、迭代和進化。
藍盟1999年成立于上海,致力于為企業客戶提供IT外包、弱電工程(網絡布線、機房建設、門禁考勤、視頻監控、電話交換機、多媒體會議室)、系統集成(網絡搭建、網絡改造)、WIFI覆蓋、數據備份、病毒防護、文件權限、虛擬化等)、云服務(微軟云、阿里云、企業郵箱等)“一站式”IT外包解決方案。, 咨詢。