大綱
一、運維自動化背景
二、運維自動化發展階段
三、運維自動化體系架構
四、運維自動化常用工具
五、運維自動化對運維人員要求
注,最近在學習運維自動化相關專題,現在總結一下與大家分享一下。(如有雷同,純屬意外)
一、運維自動化背景
1.問題引入
近期一網站業務需要上線,預計短時間內會有幾百臺服務器要上線, 部署幾百臺服務器, 以運維部目前有限的人手, 根本不夠。怎麼辦?解決方案:採取自動化安裝、配置及監控的方案(運維自動化)。
2.官方解釋
何謂運維自動化,即在最少的人工干預下,利用腳本與第三方工具,保證業務系統7*24小時高效穩定運行。
3.高端、大氣、上檔次
運維自動化是指摟着妹子、喝着Coffee、看着顯示器、點點鼠標。(運維的終極目標啊,不解釋,你懂得。哈哈^_^……)
二、運維自動化發展階段
1.苦B階段(純手工)
依靠純手工,重複的進行軟件的部署與運維;
2.給力階段(腳本+文檔)
通過編寫腳本,方便的進行軟件的部署與運維;
硬件狀態監控:通過編寫腳本,對CPU、內存、磁盤、進程、網絡等關鍵硬件參數狀態進行實時監控,發現異常觸發報警(發送短信或郵件)信息給管理員;
業務監控:通過編寫腳本對常用業務的網站實時進行監控,發現網站頁面異常觸發報警信息給管理員;
系統安全加固:通過編寫腳本對常用的Windows、Linux、Unix服務器進行快速的安全加固;
補丁更新:通過編寫腳本實現應用及操作系統補丁的快速更新;
數據備份:通過編寫腳本實現關鍵業務數據、關鍵日誌、數據庫、操作系統、中間件等的快速備份(本地與異地);
過期日誌清理:通過編寫腳本實現過期日誌清理;
……
3.高富帥階段(自動化運維工具)
藉助第三方工具,高效的進行軟件的部署與運維;
我在選擇對於百萬量級、千萬量級的網站尤其會考慮選擇成熟的工具、性能高的工具、熟悉的工具、第三方工具。而對於小規模的網站,則會考慮選擇一些開源的、免費的工具。這個原則就是以應用爲導向,百萬量級、千萬量級的網站牽涉的面廣、要求高,不成熟的工具往往很難說服我使用,所以主要是在成熟度方面。
4.階段對比
各個階段 | 運維規模(/臺) | 運維效率 | 技能要求 |
純手工 | 小於50 | 低 | 一般 |
腳本與文檔 | 50-100 | 一般 | 高 |
運維工具(第三方工具) | 100-500 | 高 | 一般 |
腳本+運維工具 | 大於500 | 最高 | 高 |
三、運維自動化體系架構
一個完善的運維自動化體系包括,系統預備、配置管理以及監控報警3個功能模塊 :
1. 系統預備
自動化安裝操作系統及常用軟件包
自動化安裝與升級系統補丁
自動化升級相關軟件
……
2. 配置管理
自動化部署業務系統軟件包並完成配置
遠程管理服務器(開關服務等 )
變更回滾……
3. 監控報警
服務器可用性、性能狀態、安全監控
向管理員發送報警信息等
……
四、運維自動化常用工具
根據提供的功能不同,運維自動化工具也可以分爲以下3類,如下表所示:
1. 預備類工具
預備類工具可以使 Linux 操作系統及軟件安裝自動化。它們藉助服務器上的軟件包系統比如 rpm 或者 apt 來安裝軟件包,甚至會做一些粗略的配置工作。
2. 配置管理類工具
配置管理類工具可以自動化部署常用的應用程序,設置參數或者開啓一個新服務器上的服務,也可以用來把對操作系統及業務支撐系統的變更管理回滾到上一版本。
3. 監控報警類工具
監控工具用來收集服務器數據,從而生成可用性、性能和其它系統狀態的報告。可用性監控可以第一時間向運維人員發送業務不可用的警告,以便第一時間 處理,減少業務中斷時間。
紅帽資助的 Genome 項目是將預備類、配置管理類集成到一起的框架,如 下圖所示:
4.常用自動化運維工具對比選型
(1).預備類工具
Kickstart 供 Anaconda 讀取的無人值守安裝配置腳本, 自動化安裝配置過程繁瑣
Cobbler 一個集成工具,集成了 PXE、DHCP、DNS 和 Kickstart 服務管理和 yum 倉庫管理,簡化了運 維工程師工作量 (常用)
(2).集中化配置管理類
chef 工具
需要用戶熟悉 ruby 語言,入門門檻高,管 理模塊開發週期長
資源腳本從前向後執行,維護調試繁瑣
chef 在配置中心服務器端需要依賴軟件比 較多,需要 couchdb、RabbitMQ、Solr、java 和 erlang,配置過程複雜繁瑣
chef 的配置管理文件放在 couchdb 和 solr 索引等二進制文件中,通過遠程命令工具 knife 來操作這些配置,維護不方便
chef 的用戶羣少,出了問題不方便排查
puppet 工具 (常用)
puppet 自有的配置語言較爲高級,入門簡單,管理模塊開發週期短
puppet 資源之間有顯式的依賴關係,與這 些資源在配置文件的位置或前後沒有關係
puppet 安裝簡單,需要的支持軟件也少, 配置過程十分簡單
puppe 的配置管理文件爲 puppet 語言描述 的文本文件,易於發佈、備份和擴展
puppet 的用戶很多,Google、Redhat 等大公司都在使用,可以借鑑成熟的經驗
cfengine 工具
老牌的配置管理工具,功能強大,但語法 晦澀,學習、維護成本高
Puppet + Func 工具
新興的配置管理工具,語法簡單,易於學 習、維護,但遠程執行命令 Exec 資源只能返回成功與否,執行過程無法跟蹤查看, 需要和簡單易用的 Linux 集羣管理工具 Func 配合使用
(3).監控類工具
監控類工具中有 Zabbix、Nagois 和 Cacti 等工具,Zabbix 和 Nagois+cacti 組合都是很優秀的 工具,鑑於 Zabbix 參考資料相對較少,選擇了常用的 Nagois+Cacti 組合。
五、運維自動化對運維人員要求
1.事前預警
在故障出現之前,管理人員應該能在任何時間,任何地點接收到告警信息,並及時處理問題,把故障隱患扼殺在搖籃中。(強大的監控與報警機制)
2.事中恢復
即使是再完美的運維方案,也可能有預料之外的故障。爲保證在最短時間內恢復業務,關鍵數據不因故障丟失,我們需要有完整備份方案來應對自如。(強大的備份與恢復機制)
3.事後存檔
這裏更加強調運維管理的方法,針對處理過的故障,應該記錄在案,在處理過程當中運用過的處理技術,處理方案,應該形成經驗文檔,以供知識分享。(強大的FAQ機制)
要實現以上三個要求,並不是一件容易的事情。需要一個經驗豐富且高效的運維團隊,隨着我們的業務系統不斷增加,業務量的不斷上升,傳統依靠純手工的運維方式,逐漸被淘汰。高效的運維自動化方案正在逐漸形成規模。(不僅大公司在部署,小公司也開始逐漸部署)