1. 程式人生 > >運維與自動化系列①運維與自動化概述

運維與自動化系列①運維與自動化概述

轉自:https://www.cnblogs.com/reblue520/p/7110187.html

運維與自動化概述

一:運維工作內容分類:

1).機房運維(負責伺服器上下架、IP配置與劃分、伺服器打標籤、機房定期巡檢、伺服器故障報修、伺服器硬體監控)
2).基礎設施運維(系統安裝及初始化、網路維護) 
3).監控運維(7×24運維值班、簡單故障處理、通知相關業務負責人) 
4).基礎服務運維(包含運維開發)(內部DNS管理、負載均衡配置、系統監控報警、硬體資產管理平臺、監控平臺搭建、程式碼釋出平臺) 
5).應用運維(精通公司業務、各種服務系統部署、業務系統部署、版本管理、灰度釋出、應用監控) 
6).系統運維(架構層面的分散式快取、分散式檔案系統、日誌收集與分析、業務環境規劃(測試、開發、生產)、業務架構設計與規劃實施、伺服器系統性能調優) 
7).安全運維(整體的安全方案、規範、漏洞監測、DDOS防護、病毒防護及處理、關鍵程式包更新、漏洞掃描與修補等)

二:運維的發展線路:

1).搭建服務–可以安裝服務並執行,由於是參加工作沒有相關服務安裝和部署經驗,所以此階段的主要目的是可以把服務安裝並可以執行起來。 
2).用好服務–適當對服務優化,工作一兩年後可以根據業務的實際需求對服務做適當的優化,比如可以對nginx做調優和監控。 
3).自動化–自動化服務的部署或監控,工作三到五年後可以結合自動化部署工具或編寫指令碼實現業務的自動化部署。 
4).產品設計(如何設計一個監控系統),可以根據需要設計和部署大型業務系統,現在很多公司都在用雲服務,比如阿里雲、Amazon的AWS,微軟的Azure,以及騰訊雲、青雲等等各種雲端計算,雲端計算的核心競爭力是運維,其始終離不開運維對業務的技術支撐,比如搭建雲服務時的伺服器選型、網路規劃、物理機系統部署與優化、監控系統的安裝配置等等。

三:自動化運維之運維標準化

1.物理裝置層面: 
1).伺服器標籤化(IP地址/與交換機介面/當前服務/)、裝置負責人(管理人)、裝置採購詳情(保修日期)、裝置擺放標準(伺服器之間間隔1U通風)。
2).網路劃分、遠端控制卡、網絡卡埠。
3).伺服器廠商機型號同一、硬碟大小轉速同一、記憶體統型號大小頻率一、伺服器課根據業務分類,有的要求IO高(儲存伺服器),有的要求記憶體大(快取伺服器),有的要求CPU塊(代理伺服器),有 的對CPU和IO要求CPU和記憶體都高(資料庫伺服器)。 
4).資產命名規範、編號規範、型別規範。 
5).監控標準(統一閾值和監控型別)。

2.作業系統層面:

1).作業系統版本(不要混合使用linux和windows,linux發行版儘量統一)
2).系統初始化(IP、閘道器、掩碼、DNS、NTP、核心引數調優、rsyslog、主機名規範、任務計劃) 
3).基礎Agent配備(Zabbix Agent、Logstash Agent、Saltstack minion) 
4).系統監控標準(CPU使用率、記憶體使用率、硬碟使用率、IO延時、網路狀況、程序數與殭屍程序、執行時間等)

3.應用服務層面:
1).Web伺服器選型(LNMP/LAMP/Tomcat/MySQL) 
2).程序啟動使用者身份及目錄、埠監聽規範、日誌收集規範(訪問日誌、錯誤日誌、執行日誌、系統日誌)
3).配置管理(配置檔案規範、指令碼規範)
4).架構規範(Nginx+Keepalived、LVS+Keepalived、Haproxy+Keepalived、阿里雲SLB、Ucloud ULB等等)
5).部署規範(位置、包命名等)

4.運維操作層面:

1).機房巡檢流程(巡檢週期、巡檢內容、硬體報修流程)
2).業務部署流程(先在開發環境和測試環境測試、最後後在生產環境部署、如出現問題立即回滾、出現問題先回滾再修復)
3).故障處理流程(緊急故障處理、故障升級流程及時間、重大故障管理、責任分配)
4).工作日誌標準(如何編寫工作日誌週報、月報)
5).業務上線流程(1.專案發起人 2.系統安裝部署優化 3.部署Nginx及相關訪問 4.備案及解析域名 5.上線測試 6.對服務和主機加監控 7.資料定期備份)
6).業務下線流程(誰發起,下線時間,伺服器和資料如何處理。)
7).運維安全規範(密碼複雜度、更改週期、VPN使用規範、服務登入規範、命令使用規範、備份還原規範)
運維標準化實現業務規範化,最終達到文件化的目的,即所有和業務相關的都有文件可查,包括技術文件、升級文件、故障文件等,也不會導致因為某員工離職而導致業務中斷。

四:自動化運維之工具化:通過相關運維工具,替代需要人工需要多次執行單一的工作內容,如:

1).Shell或Python指令碼(簡單功能配置或修改的指令碼,如自動修改配置檔案、流程執行的指令碼,如需要先修改完配置檔案才能重啟服務、檢查性,如檢查配置檔案是否修改,日誌是否生成、報表性的指令碼,如生成自定義資料的文字文件並自動傳送到郵箱)
2).開源監控工具:Zabbix ELKStack SaltStack Cobbler 
3).開源部署工具:cobbler、walle、jenkins等
4).開源跳板工具:jumperserver等

運維工具化帶來的好處:
1).促進標準化的實施
2).將重複的操作,簡單化
3).將多次操作,流程化
4).減少人為操作的低效和降低故障率

運維工具化遇到的問題:
1).你至少要ssh到伺服器執行。可能犯錯
2).多個指令碼有執行順序的時候,可能犯錯。
3).許可權不好管理,日誌沒法統計。
4).無法避免手工操作。

例子:比如某天某臺Web伺服器磁碟可能發生問題,要在訪問量較低的凌晨要將伺服器的資料匯出來放在其他伺服器替代,那麼需要考慮的是:
1).是否有由其他伺服器連線此伺服器取資料或此伺服器是否到其他伺服器取資料。
2).此伺服器是否有定時任務計劃到其他伺服器執行或有其他伺服器連線到此伺服器執行。
3).任務計劃索要涉及的內容,以及停服務是否影響其他伺服器。
4).後續的程式碼更新問題。

五:自動化運維之web化
公司基於php等語言自己開發的可以在web通過滑鼠點選就能實現程式碼釋出和回滾等功能的web介面的操作平臺。
1).招聘開發運維做成Web介面。
2).web介面的登入許可權控制。 
3).操作日誌記錄。
4).一鍵部署所有指定伺服器,弱化操作流程。
5).不用ssh到每臺後端伺服器,減少人為誤操作的故障率。
例如:
1).DNS Web管理 bind-DLZ 
2).負載均衡Web管理
3).Job管理平臺
4).監控平臺 Zabbix
5).作業系統安裝平臺

六:自動化運維之服務化(API化)

1).DNS Web管理 ———->bind-DLZ dns-api(bind)
2).負載均衡Web管理——>slb-api(haproxy、LVS、Nginx)
3).Job管理平臺————->job-api(php自主開發) 
4).監控平臺 Zabbix ——->zabbix-api(zabbix、nagios、cacti)
5).作業系統安裝平臺——>cobbler-api(cobbler、kickstack)
6).部署平臺——————>deploy-api(安裝服務軟體nginx+php)
7).配置管理平臺————>saltstack-api(saltstack、ansible)
8).自動化測試平臺———>test-api(自主開發測試)

通過呼叫相關api實現伺服器從系統安裝到上線完全自動化:
1).呼叫cobbler-api自動安裝指定的作業系統
2).呼叫saltstack-api進行系統初始化和配置
3).呼叫dns-api 解析域名和主機名
4).呼叫zabbix-api 講該新上線機器加上監控
5).再次呼叫saltstack-api 部署訪問軟體(安裝Nginx+PHP,Tomcat,Mysql)
6).呼叫deploy-api 將當前最新穩定版本的程式碼部署到伺服器上的指定目錄。
7).呼叫test-api 測試當前服務執行十分正常,如有異常,則執行報警等操作
8).呼叫slb-api 將該節點加入叢集

七:自動化運維之智慧化:
能根據一定的策略或條件,智慧化的自動化擴容、縮容、(服務降級、故障自修復),包括自動釋出程式碼加進負載叢集等一些列操作
觸發:指的是觸發事先定義的一個閾值,可能是CPU使用率80%,也可能是併發超過100000,也可能是web訪問響應時間超過5s,這是一個觸發機制,然後要定義要做的決策,如:
1).當某個叢集的訪問量超過最大支撐量,比如10000
1.1 CPU使用率達到xx%  記憶體使用率達到xx% 響應時間> x秒
2).此狀態已經持續5分鐘。
3).判斷不是攻擊
4).擴張資源池有可用資源
4.1).當前網路頻寬使用率
4.2).如果是公有云(錢夠不夠)
5).當前後端服務支撐量是否超過閾值 如果超過應該後端先擴容
6).資料庫是否可以支撐當前併發
7).當前自動化擴充套件佇列,是否有正在擴容的節點
8).其它業務相關的。

自動化擴容機制:
1).擴容之前:先判斷Buffer區域是否有最近x小時,已經移除的之前建立的虛擬機器,並查詢軟體版本是否和當前一致,如果一致,跳過 2 3 4步驟,如果不一致,跳過2 3。
2). OpenStack 建立虛擬機器
3). Saltstack 配置環境—-監控
4). 部署系統部署當前程式碼
5). 測試服務是否可用(注意間隔和次數)
6). 加入叢集
7). 通知(簡訊、郵件)
自動化縮容機制:
1).觸發條件和決策
2).從叢集中移除節點-關閉監控-移除
3).通知
4).移除的節點存放於Buffer裡面。
5).Buffer裡面超過1天的虛擬機器,自動關閉,存放於xx區
6).Buffer區的虛擬機器,每7天清理刪除。