1. 程式人生 > >運維自動化發展

運維自動化發展

手工 執行順序 條件 應用服務 obb 連接 任務 deploy 監控

# 運維自動化發展


## 運維學習和發展的一個線路

- 1.搭建服務(部署並運行起來)
- 2.用好服務(監控、管理、優化)
- 3.自動化(服務直接的關聯和協同工作)
- 4.產品設計(如何設計一個監控系統)

**雲計算的核心競爭力是運維!**

系統架構師(偏管理):網絡 系統 數據庫 開發 雲計算 自動化 運維管理 服務管理 項目管理 測試 業務
專註於某一領域
解決方案架構師

## 運維工作內容分類

- 監控運維(7x24運維值班、故障處理)
- 應用運維(業務熟悉、服務部署、業務部署、版本管理、灰度發布、應用監控)
- 安全運維(整體的安全方案、規範、漏洞監測、安全防護等)
- 系統運維(架構層面的分布式緩存、分布式文件系統、日誌收集、環境規劃(測試、開發、生產)、架構設計、性能優化)
- 基礎服務運維(包含運維開發)(內部DNS、負載均衡、系統監控、資產管理、運維平臺)
- 基礎設施運維(系統初始化、網絡維護)
- 機房運維(負責設備上下架、巡檢、報修、硬件監控)

阿裏雲:
SLB LVS + Tengine(Nginx)
ECS KVM

## 運維標準化

**物理設備層面:**
1.服務器標簽化、設備負責人、設備采購詳情、設備擺放標準
2.網絡劃分、遠程控制卡、網卡端口
3.服務器機型、硬盤、內存統一,根據業務分類
4.資產命名規範、編號規範、類型規範
5.監控標準

**操作系統層面**
1.操作系統版本
2.系統初始化(配置DNS、NTP、內核參數調優)
3.基礎Agent配備(Zabbix agent、logstash agent、salt minion)
4.系統監控標準(CPU、內存、硬盤、網絡、進程)

**應用服務層面:**
1.Web服務器選型(nginx、Apache)
2.進程啟動用戶、端口監聽規範、日誌收集規範(訪問日誌、錯誤日誌、運行日誌)
3.配置管理(配置文件規範、腳本規範)
4.架構規範(Nginx+keepalived、LVS+keepalived等等)
5.部署規範(位置、包命名等)

**運維操作層面:**
1.機房巡檢流程(周期、內容、保修流程)
2.業務部署流程(先測試、後預生產,再生產。回滾)
3.故障處理流程(緊急處理、故障升級、重大故障處理)
4.工作日誌流程(如何編寫工作日誌)
5.業務上線流程(1.項目發起人 2.系統安裝 3.部署nginx 4.解析域名 5.測試 6.加監控)
6.業務下線流程(誰發起,數據如何處理)
7.運維安全規範(密碼復雜度、更改周期、VPN使用規範、服務登陸規範、rm命令的參數寫在最後面)

標準化:規範化 流程化 文檔化

目標:文檔化



## 運維自動化發展-工具化

**工具化:**

- 1.shell腳本(功能性(流程)腳本、檢查性、報表性)
- 2.開源工具:zabbix、elkstack、saltstack、cobbler

**目標:**

- 1.促進標準化的實施
- 2.將重復的操作簡單化
- 3.將多次操作流程化
- 4.減少人為操作的低效和降低故障率

工具化和標準化是好搭檔

**痛點:**

- 1.你至少要ssh到服務器執行,可能出錯
- 2.多個腳本有執行順序的時候,可能出錯
- 3.權限不好管理,日誌沒法統計
- 4.無法避免手工操作

**例子:**

比如某天我們要對一個數據庫從庫進行版本停機升級。那麽要求評估:
停機影響:
3:00 晚上有定時任務連接該數據庫,做數據報表統計

- 1.淩晨3:00 我們所有系統的定時任務有哪些crontab
- 2.這些crontab哪些要連接我們要停止的從庫
- 3.哪些可以停,哪些不能停(修改到主庫),哪些可以後補
- 4.這些需要後補的腳本哪個業務的,誰加的,什麽時候加的

## 運維自動化發展-web化

運維平臺
例子:Job管理平臺

- 1.做成web界面
- 2.權限控制
- 3.日誌記錄
- 4.弱化流程
- 5.不用ssh到服務器,減少人為操作造成故障 Web ssh

DNSWeb管理 bind-DLZ
負載均衡Web管理
Job管理平臺
監控平臺 zabbix
操作系統安裝平臺

## 運維自動化發展-服務化(API)

- DNSWeb管理 bind-DLZ dns-api
- 負載均衡Web管理 slb-api
- Job管理平臺 job-api
- 監控平臺 zabbix zabbix-api
- 操作系統安裝平臺 cobbler-api
- 部署平臺 deploy-api
- 配置管理 saltstack-api

**智能化實現**

- 1.調用cobbler-api安裝操作系統
- 2.調用saltstack-api進行系統初始化
- 3.調用dns-api解析主機名
- 4.調用zabbix-api將該新上線機器加上監控
- 5.再次調用saltstack-api部署軟件(安裝nginx+php)
- 6.調用deploy-api將當前版本的代碼部署到服務器上
- 7.調用test-api 測試當前服務器運行是否正常
- 8.調用slb-api 將該節點加入集群

## 運維自動化發展-智能化
運維自動化發展層級:

- 標準化、工具化
- Web化、平臺化
- 服務化、API化
- 智能化

智能化的自動化擴容、縮容、服務降級、故障自愈


**自動化擴容**
1.zabbix觸發Action
觸發條件和決策:

- 1.當某個集群的訪問量超過最大支撐量,比如10000
- 2.並持續5分鐘
- 3.不是攻擊
- 4.資源池有可用資源
* 當前網絡帶寬使用率
* 如果是公有雲--錢夠不夠
- 5.當前後端服務支撐量是否超過閾值 如果超過應該後端先擴容
- 6.數據庫是否可以支撐當前並發
- 7.當前自動化擴展隊列,是否有正在擴容的節點
- 其他業務相關的

創建虛擬機之前,先判斷Buffer是否有最近X小時已經存在之前已經移除的虛擬機,並查詢軟件版本是否和當前一致,如果一致,跳過234步,如果不一致,跳過23步

2.Openstack 創建虛擬機
3.Saltstack 配置環境
4.部署系統 部署當前代碼
5.測試服務是否可用(註意間隔和次數)
6.加入集群
7.通知(短信、郵件)

**自動化縮容**
- 1.觸發條件和決策
- 2.從集群中移除節點
- 3.通知
- 4.移除的節點存放於Buffer裏面
- 5.Buffer裏面超過1天的虛擬機,自動關閉,存放於xx區
- 6.xx區的虛擬機,超過7天的清理刪除










運維自動化發展