汽車之家運維團隊傾力打造的配置管理系統AutoCMS
作者介紹
王顯寶,汽車之家運維團隊成員,主要負責AutoCMS的開發工作和快取平臺的運維工作,擅長python自動化運維,分散式快取和分散式檔案系統應用管理。
汽車之家運維團隊,是汽車之家技術部裡最為核心的團隊,由op和dev共同組成。我們的目標是為汽車之家集團打造一個高效能,高可擴充套件,低成本,並且穩定可靠的網站基礎設施平臺。
團隊技術部落格地址為 http://autohomeops.github.io/
正文
一、前言
AutoCMS 是汽車之家目前正在使用的統一配置管理工具,本文將詳細介紹該系統的使用方法和架構實現。
先來回顧下汽車之家軟體部署和配置檔案管理的經歷的幾個階段:
原始階段(依靠手工部署,wiki制定規範)
軟體包的來源沒有強制規範,帶來了很大的安全隱患。
新業務上線或者業務緊急擴容,運維投入大量人力來完成繁重的體力勞動。
部署目錄標準化依賴wiki規範維護,人力部署的時候經常會出現問題
最初階段軟體部署和配置檔案管理完全依賴人力完成。部署新業務,運維根據研發測試環境的軟體版本,去官網下載軟體包,在伺服器上編譯安裝,然後根據研發需求,手工配置檔案,啟動服務。該階段暴露出諸多問題:
半自動化階段(依賴人力打包,yum方式部署)
隨著運維自動化的推行,搭建自己的yum源,自己打包來規範軟體版本來源和部署目錄。需要批量部署的時候,逐臺登入伺服器執行yum install 安裝相關的軟體包即可,該階段已經節省了很大的人力,不過依然需要逐臺登入伺服器去修改配置檔案才能夠滿足上線需求。配置檔案變更前的備份和故障後的恢復依然需要人力維護。
自動化階段
現在正在使用的管理系統AutoCMS,實現頁面化管理軟體部署和配置檔案,實現快速批量管理軟體。
下面將詳細介紹一下我們正在使用的AutoCMS。
二、AutoCMS使用方法介紹
AutoCMS 是基於Puppet實現的軟體部署和配置檔案管理的一套系統,避免手動安裝部署軟體,提供可靠的軟體標準化部署,配置檔案和基礎服務的管理服務。
本系統主要實現以下幾點功能:
批量部署軟體包
頁面管理軟體的配置檔案變更,支援備份和回滾
多環境部署,開發,測試,線上環境相互隔離
灰度推送配置
遠端執行安全的命令
基本的統計功能
使用者操作流程如下:
建立主機組
主機組是需要批量部署同一個軟體或者下發相同配置的主機的集合,建立主機組的同時需要關聯一下配置模組,該配置模組是提前寫好的puppet模組。
新增主機
將需要部署該模組的主機加入該組內(本系統中主機的輸入源是cmdb介面)
選擇環境
根據需求選擇該主機的環境,各個環境的配置資料獨立儲存,彼此不受影響。
配置部署引數
根據配置模組不同,編寫配置檔案,生成不同的配置頁面,業務運維只要在頁面上選擇相應的引數,puppet會根據這些引數生成相應的配置檔案。
推送配置
業務運維再前端頁面配置完成後,返回主機組管理頁面,選擇主機並進行推送配置,便會觸發相關主機的puppet agent 執行,部署相應的軟體和配置。
三、系統架構說明
AutoCMS使用django作為前端框架,後端部署程式主要基於puppet實現,通過puppet的enc和report功能實現完整的部署和配置邏輯,整體架構如下:
簡要分析下:
前端配置頁面
由於各個軟體配置選項不同,所以前端的軟體引數配置頁面要採用配置檔案動態生成。
資料儲存
設計初期,我們在mySQL和MongoDB之間選擇了MongoDB,主要出於一下幾點考慮:
Schema-less,json風格儲存:由於配置資料根據軟體的不同,其資料不能依靠key-value能夠存放的,每個軟體的配置項可能會有自定義的結構,所以採用了json格式來處理,而MongoDB的bson恰好能夠滿足需求,省去了在mysql中頻繁使用外來鍵。此外,json格式資料易於掌握和理解,儲存的資料一目瞭然。
CRUD方便快捷,支援範圍查詢和正則查詢,還支援支援upsert選項(如果不存在則插入)。
與其他NoSQL產品相比,我們對mongodb的持久化和高可用方案更加熟悉。
部署實施層
該部分是通過puppet模組實現,模組中引用的引數通過自定義facter或者使用enc來讀取配置儲存的MongoDB獲得,
一臺主機的多例項部署通過create_resources函式實現,例如一臺主機需配置多個tomcat例項,資料會是如下結構:
多環境分離實現: 本系統中puppet程式碼部分有git作為版本控制,通過git自身的多分支的特性來做puppet程式碼層面的環境分離。根據需求來執行不同分支的puppet程式碼即可。
四、配置案例
下面以tomcat自動部署模組為例,進行詳細介紹:
1. 根據部署需求,設計出配置數引數的儲存結構
2. 填寫前端佈局的配置檔案,自動生成前端配置頁面。
3. 編寫puppet自動部署模組。
4. 編寫enc轉換程式
5.以上準備工作做好之後,系統上線,運維可以建立主機組,關聯tomcat模組,將需要批量部署的主機加入該組內,並進行引數配置
6. 配置完成後,進行灰度釋出驗證沒問題後,進行全量推送,觀察狀態,配置完成。
五、小結
隨著雲時代的到來,很多伺服器可以定製映象實現所需的執行環境,不過隨著業務規模的擴大,伺服器的個性化配置會越來越多,映象的維護工作也會逐步增加,使用AutoCMS可以靈活的解決這個問題。把各自的配置需求寫成配置模組,並把伺服器分組,批量推送下去,可以節省運維人員很多體力勞動。讓運維人員將精力投入到更有價值的工作中。
|
相關文章
- 餘世維-打造職業化團隊(2)
- 餘世維-打造職業化團隊(1)
- 立足信創國產化運維,打造安全可控IT運維管理系統運維
- 遠端IT運維的升級,“團隊協作”運維
- 團隊動力之群體思維理論
- 【原創】運維團隊管理如何開展?運維
- Bitly 運維團隊的 10 個監控教訓運維
- 軟體配置管理——團隊開發的基石
- 智慧時代革命:打造人機融合的未來勞動力團隊
- 如何打造合作型團隊
- 把握汽車行業的變與不變,汽車之家如何打造新的增長樣板?行業
- 打造敏捷的自組織團隊敏捷
- 打造前端團隊的 React CLI 工具前端React
- 打造讓客戶尊敬的IT團隊
- 如何利用ITSM工具帶好一隻運維團隊運維
- 進入雲之家測試團隊沒有業務中心
- AdHoc使用團隊拓撲方法打造其工程團隊
- OKR系統改變您的團隊OKR
- 團隊動力之團隊發展階段理論
- 平臺運維團隊面臨的主要挑戰是什麼?運維
- 打造高效小團隊 - 團隊程式碼提交流程 && 規範
- 谷歌智慧城市計劃發力:招聘新團隊欲打造未來城市谷歌
- 如何提高團隊協作力?
- 專案團隊的凝聚力(轉)
- 如何快速為團隊打造自己的元件庫(下)—— 基於 element-ui 為團隊打造自己的元件庫元件UI
- 中小團隊如何快速制定推送運營體系
- 打造高效團隊的三大實用策略
- 李想:使用者思維改變傳統模式 汽車之家不急於造車模式
- 運維審計系統運維
- QiShare團隊二維碼
- 成功專案團隊的DISC系統模型(轉)模型
- 打造具備互補測試技能的團隊
- IT管理運維工單系統如何賦能新運維運維
- 虛擬團隊與傳統團隊的差異思考(轉)
- 汽車之家車型_車系_配置引數資料抓取
- 之家廣告索引系統設計索引
- 提升技術團隊戰鬥力的幾件事
- IT團隊適用的工時管理系統有哪些?