一、 自動化理念
做好自動化運維在我看來是有兩個重要抓手:流程和工具,做好這兩點基本就可以將自動化運維順暢跑起來??偨Y起來是:流程梳理好,工具是手段。
我們都知道羅馬不是一天建成的,所以我們在建設運維自動化平臺時也要遵循循序漸進的原則,但大方向要清楚,互聯網講究敏捷開發,好產品是不斷迭代出來的。
放一張藍圖,朝著目標前進!
圖 1 運維自動化概貌
二、 自動化實踐
我挑選了幾個典型產品給大家做分享。
1. CMDB
1.1 CMDB的意義——降低運維管理成本
現在很多公司互聯網公司不惜投入重金建設自己的CMDB,那為什么要這樣做呢?早期的各個團隊維護自己的數據已經很穩定而且比較靈活,引入CMDB及ITIL的概念,不但會打破原有的操作習慣,而且在系統建設初期會有大量的數據導入和使用習慣切換成本。我覺得這其實是權衡現金系統理念的成本和收益問題。公司早期的各個團隊維護自己數據,可以較好的滿足業務需求,但當數據量越來越大,業務越來越復雜,數據管理成本是急速上升的。這時候在使用傳統的運維數據管理方式,恐怕很難支持業務發展。
圖 2 數據管理成本
1.2 CMDB定位
國美云對CMDB的定位是數據中心運維數據庫。運維公共配置信息存放在CMDB,其他子系統維護特定業務數據,但與CMDB信息有強關聯。
CMDB數據來源主要分兩種,人工錄入和自動發現。
圖 4 CMDB數據來源
從存儲數據來看,包括以下方面:
圖 5 CMDB存儲數據
主機數據建設
主機管理模塊,用戶可以通過綜合搜索功能快速快速查詢相關信息,具備服務器、網絡設備錄入和自動發現功能。
應用數據建設
建立服務樹,確立人——應用——機器的關系,將人和項目進行關聯,項目與資源關聯。
資源數據建設
包括網段管理、機房管理、應用管理、機型管理,從IDC、機柜到服務器、網絡設備等硬件信息再到網段、IP、操作系統等軟件層次都納入cmdb統一管理,以此作為云平臺的數據中心,做到數據一致性,并對外提供數據服務 。
IDC 機柜視圖:
圖 6 機柜視圖
1.4 數據消費
數據消費是CMDB最大的價值所在,CMDB的目的不是為了建立大而統一的數據倉庫,而是如何將收集來的數據進行消費,并在消費的過程中逐步完善數據。以下是一些實踐應用:
1.與堡壘機聯動,應用增加機器時自動對負責人授權
2.與負載均衡系統聯動,實現灰度發布
3.與監控系統聯動,通過修改機器狀態打開、關閉報警,方便維護或做變更,并通過匯聚監控數據對應用集群的資源利用率產生報表
1.5 問題與挑戰
1.5.1 數據準確性維護,數據的非正常變更 相信人or相信程序?
可以說數據準確性是CMDB的最大難題,如何提高數據的準確性呢?有效的方法就是通過自動檢測和人工審核,另外還需要建立一些標準,比如運維標準來禁止非標操作。
對于很容易判斷對錯的數據來說,檢測腳本可以自動訂正數據,比如宿主機上資源剩余量。有些則需要人工確認后才可以更改的,比如IP的探測,有些IP被不守規矩的人配置了但沒在CMDB標志,探測到IP通后需要人工介入才知道具體是哪個應用使用。
1.5.2 性能挑戰
作為一個數據中心,應對各種各樣數據請求是基本功,有些請求比較簡單,有些查詢要求比較高,比如監控系統,當CMDB中的應用和機器變化都要及時推送給監控系統,還有一些經常查詢的數據,可以放到Redis中以減輕CMDB的壓力。
CMDB作為數據中心,除了提供查詢數據還有分配數據的能力,比如IP地址的分配,這時要充分考慮高并發的情況。對此我們采用了樂觀鎖的方式解決這個問題,防止IP地址被重復分配。
1.5.3 其他數據處理方式