運維自動化方案

運維自動化簡寫

自動化運維主要包括以下幾個方面:

  1. 系統安裝
  2. 系統優化
  3. 系統監控
  4. 日誌監控和收集
  5. 應用自動化部署
  6. 代碼自動化部署
  7. 自動化測試
  8. 自動化更新
  9. 自動化擴容
  10. 配置文件管理

  11. 系統自動化安裝和優化
    系統的自動化安裝和優化,可以使用到自動化工具cobbler結合kickstart完成。
    優點:
  12. 可以完美支持linux和VMware的esxi系統
  13. 配置簡單
  14. 可配置性強
  15. 可以基於mac地址的系統安裝,全程無需人工干預
  16. 可以配置腳本,在安裝系統完成之後可以同於yum源和安裝上必須要的客戶端軟件,如salt-minion,Zabbix-agent 等,全程實現自動化
  17. 系統優化配置文件可以分類管理,基於web,基於數據庫,基於代理的配置文件可以優化,都可以在配置在系統初始化的時候完成
  18. 系統監控
    系統監控工具我們採用開源的zabbix完成,現在收費產品也很多如基調,監控寶等。
    zabbix優點:
  19. 安裝配置簡單
  20. 可以實現自動化安裝部署
  21. 可以實現自動化添加和監控客戶端
  22. 形成的圖標準確直觀
  23. 可以定製監控項
  24. 可以基於api調用zabbix的監控項,擴展性強
  25. 日誌監控和收集
    日誌監控收集和監控工具使用elk(elasticsearch + logstash+ kibana)完成
    基本架構爲:
    Logstash 收集,過濾和轉存數據
    Elasticsearch: 存儲和分析數據
    Kibana:展示數據
    由於logstash是java完成,需要依賴的java的環境,對系統的資源的消耗較大,且在大規模的日誌收集的過程中logstash的讀取和寫入會是一個瓶頸,所以結構演化爲:
    Filebeat+redis+logstash+elasticsearch+kibana
    Filebeat: 負責收集日誌並存儲到redis ,非常輕量,基本不消耗資源
    Redis: 消息隊列
    Logstash: 負責從redis拉去日誌,並過濾日誌,解除客戶端過大的瓶頸
    Elasticsearch: 存儲數據和分析數據
    Kibana: 展示數據

  26. 應用自動化部署和代碼自動化部署及更新
    應用自動化部署和代碼自動化部署我們都可使用工具saltstack完成。
    Saltstack是基於python編寫的一個自動化工具,配置文件基於yaml語法編寫。所以代碼非常清晰易讀,使用saltstack可以完成應用的自動化部署,配置文件的統一管理和標準化。
    代碼的自動化部署更新流程見下圖(引用趙班長的圖):
    運維自動化方案

  27. 獲取代碼: 可以從代碼管理倉庫獲取,如svn,git等
  28. 編譯: 這一步是可選的,如果是java代碼可以使用像jenkins之類的工具自動構建和編譯,像php之類的代碼不需要編譯,可以跳過編譯這一步
  29. 匹配配置文件環境: 不同應用的配置文件不同,拉去相應的環境的代碼,需要相應環境的配置文件做支持,如user登錄,需要user.conf,用戶支付的pay的配置文件pay.conf,配置文件必須單獨管理,尤其是在重要的配置文件,可以單獨建立一個配置文件倉庫,使用svn,git都可以完成
  30. 打包:拉去代碼之後,爲了便於分發,需要對代碼進行打包處理,tar,zip工具都可以完成
  31. 將代碼包分達到目標主機:分發代碼工具有很多,rsync,saltstack,scp等都可以完成
  32. 部署節點剔除集羣: 代碼copy完成之後,需要將集羣節點提出集羣,以免造成數據錯亂,saltstack+etcd可以完成
  33. 代碼部署:解壓代碼和創建軟連接,創建軟連接的目的是秒級回滾
  34. 比對配置文件:配置文件至關重要,不要將測試的配置文件同步到生產,這一步必須要匹配配置文件的環境和版本
  35. 重啓web: 代碼更新部署之後,需要重啓web,推薦平滑重啓,如nginx: kill -HUP nginx
  36. 自動化測試: 基於業務完成,現在很多自動化工具,python腳本,selenium等都是基於業務完成
  37. 加入集羣:在測試完成成功之後將節點加入集羣,繼續下一節點,如果失敗立即回滾到上一版本

  38. 自動化擴容
    自動化擴容,在系統資源出現告警危機的時候,我們需要爲應用實現自動化擴容。
    自動化擴容跟業務緊密相關,可以使用當下時代的企業私有云完成如kvm,openstack等。Saltstack的salt-cloud提供了基於openstack的api,可以全自動化完成擴容。然後你也可以基於kvm完成全自動化的擴容,基於腳本都可以完成。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章