運維自動化方案
阿新 • • 發佈:2018-06-01
自動化 方案
運維自動化簡寫
自動化運維主要包括以下幾個方面:
- 系統安裝
- 系統優化
- 系統監控
- 日誌監控和收集
- 應用自動化部署
- 代碼自動化部署
- 自動化測試
- 自動化更新
- 自動化擴容
-
配置文件管理
- 系統自動化安裝和優化
系統的自動化安裝和優化,可以使用到自動化工具cobbler結合kickstart完成。
優點: - 可以完美支持linux和VMware的esxi系統
- 配置簡單
- 可配置性強
- 可以基於mac地址的系統安裝,全程無需人工幹預
- 可以配置腳本,在安裝系統完成之後可以同於yum源和安裝上必須要的客戶端軟件,如salt-minion,Zabbix-agent 等,全程實現自動化
- 系統優化配置文件可以分類管理,基於web,基於數據庫,基於代理的配置文件可以優化,都可以在配置在系統初始化的時候完成
- 系統監控
系統監控工具我們采用開源的zabbix完成,現在收費產品也很多如基調,監控寶等。
zabbix優點: - 安裝配置簡單
- 可以實現自動化安裝部署
- 可以實現自動化添加和監控客戶端
- 形成的圖標準確直觀
- 可以定制監控項
- 可以基於api調用zabbix的監控項,擴展性強
-
日誌監控和收集
日誌監控收集和監控工具使用elk(elasticsearch + logstash+ kibana)完成
基本架構為:
Logstash 收集,過濾和轉存數據
Elasticsearch: 存儲和分析數據
Kibana:展示數據
由於logstash是java完成,需要依賴的java的環境,對系統的資源的消耗較大,且在大規模的日誌收集的過程中logstash的讀取和寫入會是一個瓶頸,所以結構演化為:
Filebeat: 負責收集日誌並存儲到redis ,非常輕量,基本不消耗資源
Redis: 消息隊列
Logstash: 負責從redis拉去日誌,並過濾日誌,解除客戶端過大的瓶頸
Elasticsearch: 存儲數據和分析數據
Kibana: 展示數據 -
應用自動化部署和代碼自動化部署及更新
應用自動化部署和代碼自動化部署我們都可使用工具saltstack完成。
Saltstack是基於python編寫的一個自動化工具,配置文件基於yaml語法編寫。所以代碼非常清晰易讀,使用saltstack可以完成應用的自動化部署,配置文件的統一管理和標準化。
- 獲取代碼: 可以從代碼管理倉庫獲取,如svn,git等
- 編譯: 這一步是可選的,如果是java代碼可以使用像jenkins之類的工具自動構建和編譯,像php之類的代碼不需要編譯,可以跳過編譯這一步
- 匹配配置文件環境: 不同應用的配置文件不同,拉去相應的環境的代碼,需要相應環境的配置文件做支持,如user登錄,需要user.conf,用戶支付的pay的配置文件pay.conf,配置文件必須單獨管理,尤其是在重要的配置文件,可以單獨建立一個配置文件倉庫,使用svn,git都可以完成
- 打包:拉去代碼之後,為了便於分發,需要對代碼進行打包處理,tar,zip工具都可以完成
- 將代碼包分達到目標主機:分發代碼工具有很多,rsync,saltstack,scp等都可以完成
- 部署節點剔除集群: 代碼copy完成之後,需要將集群節點提出集群,以免造成數據錯亂,saltstack+etcd可以完成
- 代碼部署:解壓代碼和創建軟連接,創建軟連接的目的是秒級回滾
- 比對配置文件:配置文件至關重要,不要將測試的配置文件同步到生產,這一步必須要匹配配置文件的環境和版本
- 重啟web: 代碼更新部署之後,需要重啟web,推薦平滑重啟,如nginx: kill -HUP nginx
- 自動化測試: 基於業務完成,現在很多自動化工具,python腳本,selenium等都是基於業務完成
-
加入集群:在測試完成成功之後將節點加入集群,繼續下一節點,如果失敗立即回滾到上一版本
- 自動化擴容
自動化擴容,在系統資源出現告警危機的時候,我們需要為應用實現自動化擴容。
自動化擴容跟業務緊密相關,可以使用當下時代的企業私有雲完成如kvm,openstack等。Saltstack的salt-cloud提供了基於openstack的api,可以全自動化完成擴容。然後你也可以基於kvm完成全自動化的擴容,基於腳本都可以完成。
運維自動化方案