隨著業務的增長,對運維效率和質量的要求越來越高,對自動化運維系統的需求也越來越大。
目前我服務的很多大中型企業客戶的運維還處於“刀耕火種”的原始狀態。
這裏說的“刀”和“火”是運維人員的遠程客戶端,比如xshell和Windows遠程桌面。
這種工作模式有許多局限性,
比如服務器、數據庫、中間件、應用軟件部署、服務發布和監控的安裝和初始化都是手工完成的。
這就需要運維人員登錄服務器,逐壹進行管理和維護。
如果有幾十個,幾百個,就累死了。
作者運營過4000多臺服務器,20多人的團隊。仔細想想這個工作靠人力能做什麽?
另外,人工操作方式過於依賴運維人員的執行順序和操作步驟,稍有不慎就可能導致生產事故。即使在改變之前,也很難保證不出意外。
妳不能不濕鞋就在河邊走。
此時,運營商開始探索使用腳本和批處理管理工具。
這種方法確實提高了效率和質量,但不具有普適性。
首先是劇本的不規範。
每個運維人員都有自己的解題風格,不同人員之間存在巨大的差異,所以開發這些腳本的版本管理對不同的人來說都是壹個挑戰。
二是劇本的交接。公司人員結構不是壹成不變的,人來了就走。辭職和交接工作都會導致腳本在運維人員中得不到很好的傳承和重用。
因此,構建壹個自動化的運維系統成為了唯壹的選擇。
那麽如何搭建自動化運維系統呢?本文分為三大方面:
第壹個是為什麽要建設自動化運維系統?
二是根據作者的經驗介紹運維系統是如何設計、運行和處理的。
三是作者對自動化運維過程中遇到的壹些問題的思考,並做出總結。
本文針對數據庫自動操作維護系統
核心內容如下:
壹、建設自動化運維系統的原因
為什麽要建設自動化運維系統?
肯定是運維過程中遇到的壹些挑戰。
首先是對變革的需求。
它表現在三個方面:
第壹,變化數量大。目前我們服務的客戶達到30000家企業,非常龐大。
二是變化種類繁多,不同客戶需求不同,包括但不限於擴容、性能優化、故障處理、DG切換遷移、RAC建設等。
第三,變更風險高,有些變更是高風險操作,自動化處理更安全。
二是運維環境,主要表現在服務器數量多,各類數據庫多。我們的客戶可以自由選擇使用哪個數據庫,它對應於不同的環境。
第三是人的因素。
在構建自動化運維系統的過程中,壹個比較重要的考慮因素就是人的因素。
正是因為每個操作者的能力不同,技術水平參差不齊,甚至習慣和工具都不壹樣。
因此,我們必須創建壹套標準化的自動化運維系統來提高工作效率。
二、如何構建自動化運維體系
讓我們看看每個模塊是如何設計和工作的。
1,自動安裝系統
安裝數據庫是壹項繁瑣但數據密集型的任務。
操作系統多,但人少,可用時間也少。自動化安裝省時省力。整個自動化過程采用通用框架,主要針對linux下的Oracle安裝和MySQL安裝。
在交付給用戶之前,會進行基本的安全設置,在壹定程度上提高了安全性,減少了壹些人工操作。
2.自動化操作和維護平臺
當服務器被自動化安裝後,將由自動化運維平臺接管。
自動化運維平臺是運維人員的操作平臺,主要解決大量安全、效率、速度帶來的管理問題。
在設計過程中,要考慮以下因素:整個運維系統的操作界面要設計成基於堡壘機的架構。
運維工程師可以隨時隨地登錄管理系統進行運維,更加方便,SecureCRT會向被操作的機器下達指令。
充分利用現有的協議和工具。該平臺的特點是所有系統都使用SSH管理,而不是開發某個代理,這也體現了自動化運維的觀點。
3.自動檢查系統
因為我們有很多客戶系統和業務,如何設計壹個系統來檢查他們的操作?
我們采取了兩種方式:自主研發的中控系統和第三方管理平臺。讓我們先來看看我們自己的中央控制系統:
用單臺服務器巡視其他數據庫節點,腳本可以是shell也可以是Python。
設置穿越時間間隔,出現故障時通過打電話或發短信的方式及時通知運維人員。
二是將所有數據庫節點管理到第三方監控平臺。
4、自動性能分析系統
系統不壹定要永遠穩定運行,性能問題是不可避免的。績效分析系統是最重要的。
在此,筆者單獨再寫壹篇。
5、自動監測預警系統
通常情況下,客戶的系統是7*24小時運行的,這就需要預警和監控。
預警監控系統+值班人員是標準配置。
預警和監測系統是根據檢查系統建立的,但收集的指標不同。
6.自動備份系統
兩地三中心+DG+NBU
三,建設自動化運維體系的思考
筆者將自動化運維系統的建設目標總結為四個字。
第壹個完成了。該系統應涵蓋所有操作和維護要求。
二是簡潔,簡單,好用。運維人員的學習成本應該不高,系統越復雜越難,越不可能發揮自身的能力和效率。
第三是效率,尤其是在批處理或執行特定任務時。
第四是安全。如果壹個運維系統不安全,可能很快就會被黑客接管。
摘要
目前作者也在慢慢從數據庫架構、優化、故障處理向自動化運維系統轉型。
總結過去,我覺得有三個方面供大家參考。
首先是循序漸進的原則:
把重點放在當前的問題上,處理好了,後面的問題就迎刃而解了。
如果當初設計的系統龐大,功能豐富,就會導致壹些不可控的情況。但如果最初的目標是解決壹些具體問題,有針對性,那麽就更容易推進。在筆者參與的自動化運維系統的搭建過程中,我們最初的目標是搭建壹個批量操作變更的基礎平臺,先把壹些需要重復的工作搬到平臺上。
然後根據運維的需求,豐富這個操作平臺的功能,提高效率。最後將周圍的系統相互連接起來,形成壹個完整的自動化運維系統。第二是考慮可伸縮性:
在設計系統的時候,無論是從功能上還是設計上,妳可能都不用考慮那麽多,但是妳要考慮的是,在服務器數量大幅膨脹的情況下,系統是否還能支撐。第三是出於實用目的:
用起來不方便,運維人員先放棄了。升職呢?
如何建立壹個自動化的數據庫操作和維護系統
標簽:兩個ble擴展事故小組的簡單系統之間的能力