運(yùn)維與自動化概述
一:運(yùn)維工作內(nèi)容分類:
1).機(jī)房運(yùn)維(負(fù)責(zé)服務(wù)器上下架、IP配置與劃分、服務(wù)器打標(biāo)簽、機(jī)房定期巡檢、服務(wù)器故障報修、服務(wù)器硬件監(jiān)控)2).基礎(chǔ)設(shè)施運(yùn)維(系統(tǒng)安裝及初始化、網(wǎng)絡(luò)維護(hù))3).監(jiān)控運(yùn)維(7×24運(yùn)維值班、簡單故障處理、通知相關(guān)業(yè)務(wù)負(fù)責(zé)人)4).基礎(chǔ)服務(wù)運(yùn)維(包含運(yùn)維開發(fā))(內(nèi)部DNS管理、負(fù)載均衡配置、系統(tǒng)監(jiān)控報警、硬件資產(chǎn)管理平臺、監(jiān)控平臺搭建、代碼發(fā)布平臺)5).應(yīng)用運(yùn)維(精通公司業(yè)務(wù)、各種服務(wù)系統(tǒng)部署、業(yè)務(wù)系統(tǒng)部署、版本管理、灰度發(fā)布、應(yīng)用監(jiān)控)6).系統(tǒng)運(yùn)維(架構(gòu)層面的分布式緩存、分布式文件系統(tǒng)、日志收集與分析、業(yè)務(wù)環(huán)境規(guī)劃(測試、開發(fā)、生產(chǎn))、業(yè)務(wù)架構(gòu)設(shè)計與規(guī)劃實(shí)施、服務(wù)器系統(tǒng)性能調(diào)優(yōu))7).安全運(yùn)維(整體的安全方案、規(guī)范、漏洞監(jiān)測、DDOS防護(hù)、病毒防護(hù)及處理、關(guān)鍵程序包更新、漏洞掃描與修補(bǔ)等)
二:運(yùn)維的發(fā)展線路:
1).搭建服務(wù)–可以安裝服務(wù)并運(yùn)行,由于是參加工作沒有相關(guān)服務(wù)安裝和部署經(jīng)驗,所以此階段的主要目的是可以把服務(wù)安裝并可以運(yùn)行起來。2).用好服務(wù)–適當(dāng)對服務(wù)優(yōu)化,工作一兩年后可以根據(jù)業(yè)務(wù)的實(shí)際需求對服務(wù)做適當(dāng)?shù)膬?yōu)化,比如可以對nginx做調(diào)優(yōu)和監(jiān)控。3).自動化–自動化服務(wù)的部署或監(jiān)控,工作三到五年后可以結(jié)合自動化部署工具或編寫腳本實(shí)現(xiàn)業(yè)務(wù)的自動化部署。4).產(chǎn)品設(shè)計(如何設(shè)計一個監(jiān)控系統(tǒng)),可以根據(jù)需要設(shè)計和部署大型業(yè)務(wù)系統(tǒng),現(xiàn)在很多公司都在用云服務(wù),比如阿里云、Amazon的AWS,微軟的Azure,以及騰訊云、青云等等各種云計算,云計算的核心競爭力是運(yùn)維,其始終離不開運(yùn)維對業(yè)務(wù)的技術(shù)支撐,比如搭建云服務(wù)時的服務(wù)器選型、網(wǎng)絡(luò)規(guī)劃、物理機(jī)系統(tǒng)部署與優(yōu)化、監(jiān)控系統(tǒng)的安裝配置等等。
三:自動化運(yùn)維之運(yùn)維標(biāo)準(zhǔn)化
1.物理設(shè)備層面:1).服務(wù)器標(biāo)簽化(IP地址/與交換機(jī)接口/當(dāng)前服務(wù)/)、設(shè)備負(fù)責(zé)人(管理人)、設(shè)備采購詳情(保修日期)、設(shè)備擺放標(biāo)準(zhǔn)(服務(wù)器之間間隔1U通風(fēng))。2).網(wǎng)絡(luò)劃分、遠(yuǎn)程控制卡、網(wǎng)卡端口。3).服務(wù)器廠商機(jī)型號同一、硬盤大小轉(zhuǎn)速同一、內(nèi)存統(tǒng)型號大小頻率一、服務(wù)器課根據(jù)業(yè)務(wù)分類,有的要求IO高(存儲服務(wù)器),有的要求內(nèi)存大(緩存服務(wù)器),有的要求CPU塊(代理服務(wù)器),有 的對CPU和IO要求CPU和內(nèi)存都高(數(shù)據(jù)庫服務(wù)器)。4).資產(chǎn)命名規(guī)范、編號規(guī)范、類型規(guī)范。5).監(jiān)控標(biāo)準(zhǔn)(統(tǒng)一閾值和監(jiān)控類型)。
2.操作系統(tǒng)層面:
1).操作系統(tǒng)版本(不要混合使用linux和windows,linux發(fā)行版盡量統(tǒng)一)2).系統(tǒng)初始化(IP、網(wǎng)關(guān)、掩碼、DNS、NTP、內(nèi)核參數(shù)調(diào)優(yōu)、rsyslog、主機(jī)名規(guī)范、任務(wù)計劃)3).基礎(chǔ)Agent配備(Zabbix Agent、Logstash Agent、Saltstack minion)4).系統(tǒng)監(jiān)控標(biāo)準(zhǔn)(CPU使用率、內(nèi)存使用率、硬盤使用率、IO延時、網(wǎng)絡(luò)狀況、進(jìn)程數(shù)與僵尸進(jìn)程、運(yùn)行時間等)
3.應(yīng)用服務(wù)層面:1).Web服務(wù)器選型(LNMP/LAMP/Tomcat/MySQL)2).進(jìn)程啟動用戶身份及目錄、端口監(jiān)聽規(guī)范、日志收集規(guī)范(訪問日志、錯誤日志、運(yùn)行日志、系統(tǒng)日志)3).配置管理(配置文件規(guī)范、腳本規(guī)范)4).架構(gòu)規(guī)范(Nginx+Keepalived、LVS+Keepalived、Haproxy+Keepalived、阿里云SLB、Ucloud ULB等等)5).部署規(guī)范(位置、包命名等)
4.運(yùn)維操作層面:
1).機(jī)房巡檢流程(巡檢周期、巡檢內(nèi)容、硬件報修流程)2).業(yè)務(wù)部署流程(先在開發(fā)環(huán)境和測試環(huán)境測試、最后后在生產(chǎn)環(huán)境部署、如出現(xiàn)問題立即回滾、出現(xiàn)問題先回滾再修復(fù))3).故障處理流程(緊急故障處理、故障升級流程及時間、重大故障管理、責(zé)任分配)4).工作日志標(biāo)準(zhǔn)(如何編寫工作日志周報、月報)5).業(yè)務(wù)上線流程(1.項目發(fā)起人 2.系統(tǒng)安裝部署優(yōu)化 3.部署Nginx及相關(guān)訪問 4.備案及解析域名 5.上線測試 6.對服務(wù)和主機(jī)加監(jiān)控 7.數(shù)據(jù)定期備份)6).業(yè)務(wù)下線流程(誰發(fā)起,下線時間,服務(wù)器和數(shù)據(jù)如何處理。)7).運(yùn)維安全規(guī)范(密碼復(fù)雜度、更改周期、VPN使用規(guī)范、服務(wù)登錄規(guī)范、命令使用規(guī)范、備份還原規(guī)范)運(yùn)維標(biāo)準(zhǔn)化實(shí)現(xiàn)業(yè)務(wù)規(guī)范化,最終達(dá)到文檔化的目的,即所有和業(yè)務(wù)相關(guān)的都有文檔可查,包括技術(shù)文檔、升級文檔、故障文檔等,也不會導(dǎo)致因為某員工離職而導(dǎo)致業(yè)務(wù)中斷。
四:自動化運(yùn)維之工具化:通過相關(guān)運(yùn)維工具,替代需要人工需要多次執(zhí)行單一的工作內(nèi)容,如:
1).Shell或Python腳本(簡單功能配置或修改的腳本,如自動修改配置文件、流程執(zhí)行的腳本,如需要先修改完配置文件才能重啟服務(wù)、檢查性,如檢查配置文件是否修改,日志是否生成、報表性的腳本,如生成自定義數(shù)據(jù)的文本文檔并自動發(fā)送到郵箱)2).開源監(jiān)控工具:Zabbix ELKStack SaltStack Cobbler3).開源部署工具:cobbler、walle、jenkins等4).開源跳板工具:jumperserver等
運(yùn)維工具化帶來的好處:1).促進(jìn)標(biāo)準(zhǔn)化的實(shí)施2).將重復(fù)的操作,簡單化3).將多次操作,流程化4).減少人為操作的低效和降低故障率
運(yùn)維工具化遇到的問題:1).你至少要ssh到服務(wù)器執(zhí)行。可能犯錯2).多個腳本有執(zhí)行順序的時候,可能犯錯。3).權(quán)限不好管理,日志沒法統(tǒng)計。4).無法避免手工操作。例子:比如某天某臺Web服務(wù)器磁盤可能發(fā)生問題,要在訪問量較低的凌晨要將服務(wù)器的數(shù)據(jù)導(dǎo)出來放在其他服務(wù)器替代,那么需要考慮的是:1).是否有由其他服務(wù)器連接此服務(wù)器取數(shù)據(jù)或此服務(wù)器是否到其他服務(wù)器取數(shù)據(jù)。2).此服務(wù)器是否有定時任務(wù)計劃到其他服務(wù)器執(zhí)行或有其他服務(wù)器連接到此服務(wù)器執(zhí)行。3).任務(wù)計劃索要涉及的內(nèi)容,以及停服務(wù)是否影響其他服務(wù)器。4).后續(xù)的代碼更新問題。
五:自動化運(yùn)維之web化公司基于php等語言自己開發(fā)的可以在web通過鼠標(biāo)點(diǎn)擊就能實(shí)現(xiàn)代碼發(fā)布和回滾等功能的web界面的操作平臺。1).招聘開發(fā)運(yùn)維做成Web界面。2).web界面的登錄權(quán)限控制。3).操作日志記錄。4).一鍵部署所有指定服務(wù)器,弱化操作流程。5).不用ssh到每臺后端服務(wù)器,減少人為誤操作的故障率。例如:1).DNS Web管理 bind-DLZ2).負(fù)載均衡Web管理3).Job管理平臺4).監(jiān)控平臺 Zabbix5).操作系統(tǒng)安裝平臺
六:自動化運(yùn)維之服務(wù)化(API化)
1).DNS Web管理 ———->bind-DLZ dns-api(bind)2).負(fù)載均衡Web管理——>slb-api(haproxy、LVS、Nginx)3).Job管理平臺————->job-api(php自主開發(fā))4).監(jiān)控平臺 Zabbix ——->zabbix-api(zabbix、nagios、cacti)5).操作系統(tǒng)安裝平臺——>cobbler-api(cobbler、kickstack)6).部署平臺——————>deploy-api(安裝服務(wù)軟件nginx+php)7).配置管理平臺————>saltstack-api(saltstack、ansible)8).自動化測試平臺———>test-api(自主開發(fā)測試)
通過調(diào)用相關(guān)api實(shí)現(xiàn)服務(wù)器從系統(tǒng)安裝到上線完全自動化:1).調(diào)用cobbler-api自動安裝指定的操作系統(tǒng)2).調(diào)用saltstack-api進(jìn)行系統(tǒng)初始化和配置3).調(diào)用dns-api 解析域名和主機(jī)名4).調(diào)用zabbix-api 講該新上線機(jī)器加上監(jiān)控5).再次調(diào)用saltstack-api 部署訪問軟件(安裝Nginx+PHP,Tomcat,Mysql)6).調(diào)用deploy-api 將當(dāng)前最新穩(wěn)定版本的代碼部署到服務(wù)器上的指定目錄。7).調(diào)用test-api 測試當(dāng)前服務(wù)運(yùn)行十分正常,如有異常,則執(zhí)行報警等操作8).調(diào)用slb-api 將該節(jié)點(diǎn)加入集群
七:自動化運(yùn)維之智能化:能根據(jù)一定的策略或條件,智能化的自動化擴(kuò)容、縮容、(服務(wù)降級、故障自修復(fù)),包括自動發(fā)布代碼加進(jìn)負(fù)載集群等一些列操作觸發(fā):指的是觸發(fā)事先定義的一個閾值,可能是CPU使用率80%,也可能是并發(fā)超過100000,也可能是web訪問響應(yīng)時間超過5s,這是一個觸發(fā)機(jī)制,然后要定義要做的決策,如:1).當(dāng)某個集群的訪問量超過最大支撐量,比如100001.1 CPU使用率達(dá)到xx% 內(nèi)存使用率達(dá)到xx% 響應(yīng)時間> x秒2).此狀態(tài)已經(jīng)持續(xù)5分鐘。3).判斷不是攻擊4).擴(kuò)張資源池有可用資源4.1).當(dāng)前網(wǎng)絡(luò)帶寬使用率4.2).如果是公有云(錢夠不夠)5).當(dāng)前后端服務(wù)支撐量是否超過閾值 如果超過應(yīng)該后端先擴(kuò)容6).數(shù)據(jù)庫是否可以支撐當(dāng)前并發(fā)7).當(dāng)前自動化擴(kuò)展隊列,是否有正在擴(kuò)容的節(jié)點(diǎn)8).其它業(yè)務(wù)相關(guān)的。
自動化擴(kuò)容機(jī)制:1).擴(kuò)容之前:先判斷Buffer區(qū)域是否有最近x小時,已經(jīng)移除的之前創(chuàng)建的虛擬機(jī),并查詢軟件版本是否和當(dāng)前一致,如果一致,跳過 2 3 4步驟,如果不一致,跳過2 3。2). OpenStack 創(chuàng)建虛擬機(jī)3). Saltstack 配置環(huán)境—-監(jiān)控4). 部署系統(tǒng)部署當(dāng)前代碼5). 測試服務(wù)是否可用(注意間隔和次數(shù))6). 加入集群7). 通知(短信、郵件)自動化縮容機(jī)制:1).觸發(fā)條件和決策2).從集群中移除節(jié)點(diǎn)-關(guān)閉監(jiān)控-移除3).通知4).移除的節(jié)點(diǎn)存放于Buffer里面。5).Buffer里面超過1天的虛擬機(jī),自動關(guān)閉,存放于xx區(qū)6).Buffer區(qū)的虛擬機(jī),每7天清理刪除。
最主要的是給自己增加知識的儲備,有備無患。最后給大家分享Spring系列的學(xué)習(xí)筆記和面試題,包含spring面試題、spring cloud面試題、spring boot面試題、spring教程筆記、spring boot教程筆記、最新阿里巴巴開發(fā)手冊(63頁P(yáng)DF總結(jié))、2022年Java面試手冊。一共整理了1184頁P(yáng)DF文檔。私信博主(666)領(lǐng)取,祝大家更上一層樓!!!