運維工程師是做什麼的?

河南新華001


職責

無論做什麼運維,運維工程師最基本的職責都是負責服務的穩定性,確保服務可以7*24H不間斷地為用戶提供服務。在此之上運維工程師的主要工作職責如下:

質量:保障並不斷提升服務的可用性,確保用戶數據安全,提升用戶體驗。

效率:用自動化的工具/平臺提升軟件在研發生命週期中的工程效率。

成本:通過技術手段優化服務架構、性能調優;通過資源優化組合降低成本、提升ROI。

從產品的生命週期來看:

1. 產品發佈前:負責參與並審核架構設計的合理性和可運維性,以確保在產品發佈之後能高效穩定的運行。

2. 產品發佈階段:負責用自動化的技術或者平臺確保產品可以高效的發佈上線,之後可以快速穩定迭代。

3. 產品運行維護階段:負責保障產品7*24H穩定運行,在此期間對出現的各種問題可以快速定位並解決;在日常工作中不斷優化系統架構和部署的合理性,以提升系統服務的穩定性。

工作內容

在軟件產品的整個生命週期中運維工程師都需要適時地參與併發揮不同的作用,因此運維工程師的工作內容和方向非常多:

事件管理:目標是在服務出現異常時儘可能快速的恢復服務,從而保障服務的可用性;同時深入分析故障產生的原因,推動並修復服務存在的問題,同時設計並開發相關的預案以確保服務出現故障時可以高效的止損。在這方面主要工作內容有:

問題發現:設計並開發高效的監控平臺和告警平臺,使用機器學習、大數據分析等方法對系統中的大量監控數據進行彙總分析,以及在系統出現異常的時候可以快速的發現問題和判斷故障的影響。

問題處理:設計並開發高效的問題處理平臺和工具,在系統出現異常的時候可以快速/自動決策並觸發相關止損預案,快速恢復服務。

問題跟蹤:通過分析問題發生時系統的各種表現(日誌、變更、監控)確定問題發生的根本原因,制定並開發預案工具。

變更管理:以可控的方式,儘可能高效的完成產品功能的迭代的變更工作。在這方面主要工作內容有:

配置管理:通過配置管理平臺(自研、開源)管理服務涉及到的多個模塊、多個版本的關係以及配置的準確性。

發佈管理:通過構建自動化的平臺確保每一次版本變更可以安全可控地發佈到生產環境。

容量管理:在服務運行維護階段,為了確保服務架構部署的合理性同時掌握服務整體的冗餘,需要不斷評估系統的承載能力,並不斷優化之。在這方面主要工作內容有:

容量評估:通過技術手段模擬實際的用戶請求,測試整個系統所能承擔的最大吞吐;通過建立容量評估模型分析壓力測試過程中的數據以評估整個服務的容量。

容量優化:基於容量評估數據,判斷系統的瓶頸並提供容量優化的解決方案。比如通過調整系統參數、優化服務部署架構等方法來高效的提升系統容量。

架構優化:為了支持產品的不斷迭代,需要不斷的進行架構優化調整。以確保整個產品能夠在功能不斷豐富和複雜的條件下,同時保持高可用性。

能力要求

基礎技能:

精通shell/Python/Perl等1至2種編程語言

熟練掌握常用數據結構和算法,並能靈活運用

熟悉網絡基礎知識

深入理解Linux操作系統


實現價值


首先說一下“運維工程師”的概念:說到運維工程師,一般人都會認為是修電腦的,其實不然,並非只是會修電腦這樣簡單的技能就可行的。說白了運維就是“運行維護”,那麼也就可以理解運維工程師的職能就是保障業務的正常運行並在出現問題時及時維護。

運維工程師的日常分為兩種情況:

第一種,運維工程師需要他們完成一個項目產品的時候,有的時候需要加班好幾個星期。

他們在產品項目完成的不同階段會發揮不同的作用。所以其實他們的工作內容很多:

產品發佈前:負責參與並審核架構設計的合理性和可運維性,以確保在產品發佈之後能高效穩定的運行。

產品發佈階段:負責用自動化的技術或者平臺確保產品可以高效的發佈上線,之後可以快速穩定迭代。

產品運行維護階段:負責保障產品7*24H穩定運行,在此期間對出現的各種問題可以快速定位並解決;在日常工作中不斷優化系統架構和部署的合理性,以提升系統服務的穩定性。

小結:

運維工程師是一個需要二十四小時在線的職業,因為你不知道什麼時候系統就需要你去維護。所以就算你休假在家,需要運維工程師的時候也需要出手。

運維工程師會有著很多業務需求,如果運維工程師能夠滿足業務需求,或者主動挖掘業務的痛點和改進方法,就能為業務實現更多的價值。業務由於故障引起的中斷一定會造成損失,所以能在發病之前就將它修理好,這才是運維工程師的核心價值。在滿足業務需求時,優先面對業務快速發展非常重要的需求,例如穩定性,部署和變更效率,容量管理。

第二種,沒有項目的日常,運維工程師們都在幹嘛,是不是無所事事的玩手機?

當然不是了,如果你這麼做的話,會被炒魷魚的。那運維工程師日常工作是幹嘛呢?

1,每日定時對機房內的網絡服務器、數據庫服務器、Internet服務器進行日常巡視,檢查是否正常工作,公司的網站是否能正常訪問;

2,每日巡查計算機系統各個終端電腦、打印機、複印機等設備是否工作正常,是否有不正確的操作使用,是否有帶故障工作的設備;

3,每天夜間在大家都下班之後對財務軟件進行自動實時備份,每週做一次物理數據備份,並在備份服務器中進行邏輯備份的驗證工作;

4,每週至少對文件服務器做一次物理數據備份;還有就是處理各種有關網絡的突發問題。

小結:

當然每個公司的運維工程師從事的工作是大同小異的,有的公司可能還會給運維工程師安排其他的工作。

所以,正在學習從事和想要成為運維工程師的你們,對於自己想要從事的崗位工作內容有沒有多一點了解?希望以後別人問起來運維工程師是幹嘛的,千萬別再讓別人覺得你就是個修電腦的了。


爬牆去看海


運維工程師到底是做什麼呢?我給大家分析一下:

1、保障業務長期穩定運行(如網站服務器、遊戲服務器等)。

2、保障數據安全可靠(如用戶名密碼、遊戲數據、博客文章、交易數據等)。

由這兩句話推演運維工程師要做些什麼?

一、保障業務長期穩定運行

出一點點差錯,用戶就要投訴了。

1、業務跑在什麼上面?

網站服務器一般是apache,nginx,tomcat等。但是真正跑通流程還需要Mysql數據庫來存儲用戶密碼及其它。很多程序都要php的解析,所以LNMP、LAMP(即nginx、apache、mysql、php)環境部署是必須掌握的技能。

2、業務出了問題怎麼及時知道?

這就需要監控軟件來郵件或短信來通知你,常用的有zabbix,nagios等。報警發郵件,也得一個郵件程序呀,sendmail或postfix。

3、在家裡收到報警,但服務器是內網IP,怎麼也得解決問題吧?

在公司搭建openvpn或pptp或openswan,在家裡通過VPN撥入內網,24小時解決問題…唉,半夜爬起來解決問題也沒工資。

二、保障數據安全可靠

出一點點差錯,領導要找你喝茶了。

1、有時需要手動改數據庫內容?

所以要會基本的Mysql數據庫增刪查改命令。

2、萬一數據庫服務器硬件壞了怎麼辦?

需要有個備庫以備不時之需,所以需要Mysql主從複製。

3、數據庫要還原怎麼辦?

所以需要在crond中定期全備Mysql數據,以便還原使用。如果要還原到指定時間點,還要學會Mysql增量備份與恢復。

4、如果是用戶上傳的圖片或文件服務器壞了怎麼辦?

定時備份可能還不夠,需要使用rsync加inotify來實時備份。以便任一時刻主服務器壞掉,也能保障所有圖片有備份可以用來恢復。

5、小心黑客,要增加服務器安全性?

ssh輕易不能讓外人訪問,那麼就設置只允許公司的IP或跳板機IP訪問,這些都通過iptables來控制。

三、大性能

1、越來越多的用戶來訪問我們的網站,一臺web服務器抗不住了怎麼辦?

那就需要多臺web服務器來負擔,但多臺服務器之間怎麼進行負載均衡呢,這就需要用到nginx反向代理或LVS+keepalived或haproxy+heartbeat了。

2、用戶註冊發表的文章與評論太多,一臺數據庫抗不住了怎麼辦?

數據庫壓力分為讀和寫,如果寫抗不住,需要進行分表分庫到多個服務器上。如果是讀壓力不夠了,可以使用mysql-proxy讀寫分離,

來分擔讀的壓力。更簡單方便的方法,把數據庫裡的內容放到內存上,這就用上memcache或redis了。

3、N多用戶上傳下載文件,磁盤抗不住了怎麼辦?

把多塊磁盤做成raid,或者使用分佈式存儲文件系統如MFS,GlusterFS來提高磁盤的讀寫能力。

4、網站上好多圖片,總有用戶反應網站加載太慢,怎麼辦?

這時可以把網站上的圖片通過squid或varnish緩存到網站前端,儘可能的增加訪問速度,當然,最好是購買商業的CDN加速。

5、運營商是個大難題,他們之間的帶寬好像很小,聯通IP訪問我電信網站怎麼就這麼慢呢?

這時可以使用bind自建一個DNS服務器,把網站的DNS記錄指向自建DNS服務器上,配置好解析規則,以後聯通IP解析到聯通網站上,

電信IP解析到電信網站上,體驗就會好很多啦。

四、自動化

終極目標:跑死機器,閒死人。

1、公司新買100臺服務器,公司竟然就1個移動光驅,這裝系統得到什麼時候?

使用kickstart或cobbler來網絡遠程自動安裝系統吧。

2、每次裝完機要優化很多內容,什麼文件描述符、端口、軟件安裝啊,手動操作不累死去?

趕緊學會shell,將解放非常多的工作量。

3、系統裝完後登陸要輸入密碼,這麼多臺啊?

使用expect吧,自動讀取提示來輸入密碼,並執行命令。

4、要批量把新代碼發佈到線上服務器,怎麼辦?

使用saltstack或puppet或ansible吧,絕對爽歪歪。

五、其他

1、搭整套測試環境需要5臺服務器,但公司窮的只有一臺空閒服務器?

學會xen或kvm或docker吧,虛擬出多臺服務器,就能解決資源問題了。特別是docker,強烈推薦,以後某個研發人員讓你部署一套新環境,分分鐘幫他解決。

2、研發人員的代碼控制,權限控制,總要運維人員管呀?

svn或git,這個是肯定要有的。

現在我們在回過頭來思考,運維工程師平時幹些啥呢?

1、 隨時解決報警故障。

2、 業務程序更新。

3、 編寫一些腳本,監控或完成其他可自動完成功能。

4、 運維架構完善,部署一些用起來更方便更可靠或性能更好的開源工具以及制定運維流程規範。

5、 打雜,如調交換機,裝系統,部署新環境等。

這是我的回答,謝謝大家。


分享到:


相關文章: