運維工程師工作的演變
隨著云計算的流行,運維工程師的工作性質在不斷地發生變化,很多新的技能點和知識點需要掌握和學習。工作中,大家經?梢钥吹紻evOps這個詞匯。最近DevOps為什么這么火?跟最近兩年云計算的快速普及有很大的關系:云計算平臺上的各種資源,從服務器到網絡,再到負載均衡都是由API創建和操作的,這就意味著所有的資源都可以“軟件定義”,這給各種自動化運維工具提供了一個非常好的基礎環境。而在傳統的互聯網行業,比如CDN行業,由于機器數量眾多、網絡環境錯綜復雜,故也需要由DevOps人員來設計工具,提供后端的自動化API,結合公司的CMDB資產管理系統,提供自動化運維功能。
我在公司的職務是高級運維開發工程師(DevOps)、系統架構師,主要工作是設計、實施及維護本公司的電子商務網站,以及核心業務的代碼開發工作。相對于CDN分布式系統而言,公司的電子商務網站沒有節點冗余,對集群技術的要求更高。所以我前期將所有的網站應用都做了雙機高HA,包括LVS/HAProxy+Keepalived和Nginx+Keepalived,以及DRBD+Heartbeat+NFS文件高可用,MySQL數據庫用的是DRBD雙主多從架構,甚至Redis也使用了主從復制的架構設計。隨著特殊業務的需求量越來越旺盛(比如定點搶紅包活動),我也在網站的架構設計中引入了RabbitMQ消息隊列集群。后期隨著商業推廣量的加大,網站流量、UV及并發日益增大,新機器上線也日益頻繁,所以我采用了Fabric、Ansbile等自動化運維工具來管理線上機器,避免運維同事們的重復勞動。另外,由于電子商務網站牽涉支付問題,所以對安全性的要求也非常高,我們平時都會從網絡安全(包括硬件防火墻、Linux系統防火墻和WAF應用防火墻)、系統安全、代碼安全和數據庫安全這些方面著手,盡力避免一切影響網站安全的行為。此外,我的工作職責還包括使用成熟的自動化工具(比如Ansible、Saltstack等),利用Python或Golang進行二次開發,根據實際工作需求,結合公司的CMDB系統,提供穩定的后端API,方便前端人員或資產人員進行調用,這樣大家可以利用界面來完成自動化運維工作。工作雖然辛苦,但看到自己設計的后端API和網站能夠穩定運行,心里還是很有成就感的,這也是我目前工作的主要動力。
撰寫本書的目的
從事系統集成、運維開發、架構設計方面的工作已經有十余年了,在工作期間,我曾有幸擔任了一段時間的紅帽RHCE講師,在東北大學等高校推廣紅帽Linux系統。在教學過程中我發現,很多學生進入企業后都無法勝任自己的工作,更談不上正確規劃自己的職業道路了。究其原因,一方面是因為企業的生產環境具有一定的復雜性和危險性;另一方面則是由于市場上入門書居多,缺乏能真正指導讀者解決實際問題的書籍。例如,很多書籍都只給出了比較基礎的操作及理論,而相對于線上環境,根本沒有涉及如何安全操作才能避免誤操,以及在PV、UV、并發、數據庫壓力和高并發環境下消息隊列或任務隊列如何設計等相關話題。
之所以寫這本書,一方面是想對自己這些年的工作進行一次系統的梳理和總結;另一方面是想將自己的經驗和心得分享給大家,希望能幫助大家少走彎路。通過本書中介紹項目實踐(包括Linux集群、MySQL的高可用方案及Python自動化運維工具的使用)和線上環境的Shell腳本,幫大家迅速進入工作狀態。書中所提供的Shell腳本和iptables腳本均來自于線上的生產服務器,大家均可以直接拿來用。關于Linux集群的項目實踐和MySQL的高可用方案,大家也可以根據實際項目的需求直接采用,以此來設計公司的網站架構。
希望大家能通過本書掌握Linux的精髓,輕松而愉快地工作,從而提高自己的技術水平,也希望大家通過我分享的內容,了解運維工作的發展趨勢,確定以后的學習目標。這是我非常希望看到的,也是我寫本書的初衷。
第4版與第3版的區別
本書是第4版,相對于前3版而言改動比較大,刪除了不少過時的內容,增補了當前熱門的技術知識點。另外,本書除了項目部署時采用的系統沒有升級到CentOS 6.8 x86_64外,其他環境均為CentOS 6.8 x86_64。此外,在寫作過程中采納了讀者針對上一版本提出的許多意見和建議,同時修正了第3版的各種錯誤及其他問題。具體改動如下:刪除了第3版中前3章的內容,增補了Vagrant虛擬化軟件的應用,并且重寫了生產環境下的Shell腳本;刪除了對分布式自動化部署管理工具Puppet的相關介紹,改用了Fabric自動化運維工具;刪除了關于開源VPN在企業中部署的章節。附錄部分增加了對現在流行的GitLab應用及強大的編輯工具Sulbime Text3的快捷鍵方式操作的介紹。出第4版的原因是希望能將現在最流行的開源技術展現并分享給大家,增加大家的職業技能知識。
讀者對象
本書的讀者對象如下:
項目實施工程師;
系統管理員或系統工程師;
網絡管理員或企業網管;
系統開發工程;
高級開發人員。
如何閱讀本書
本書的內容是對實際工作經驗的總結,涉及大量的知識點和專業術語,建議經驗不足的讀者一定從第1章讀起,本章內容相對來說比較基礎。大家在學習過程中根據第1章的講解進行操作,定會達到事半功倍的效果。
推薦系統管理員和運維工程師們通篇閱讀本書,并重點關注第2章、第4章、第5章、第7章和第8章的內容,這些都與運維工作息息相關的,建議大家多花些精力和時間,抱著一切從線上環境去考慮的態度去學習。
對于網絡管理員和企業網管來說,如果基礎不是太扎實,建議先學習第1章和第2章的內容,然后將重點放在第7章和第8章。
對于項目實施工程師而言,由于大多數都是從事系統集成相關工作的,因此建議順序學習全書的內容,重心可以放在第5章和第6章。
對于高級開發人員來說,由于只需對系統有一個大概的了解,重點可以放在第1章、第3章和第4章。如果希望了解集群相關的知識體系,可學習第5章和第6章的內容。
大家可以根據自己的職業發展和工作需要選擇不同的閱讀順序和側重點,同時也可以對其他相關的知識點有一定的了解。
致謝
感謝我的家人,你們在生活上對我無微不至的照顧,讓我有更多精力和動力去工作和創作。
感謝好友劉天斯和老男孩的支持和鼓勵,閑暇之余和你們一起交流開源技術和發展趨勢,也是一種享受。
感謝朋友劉鑫,是你花了大量時間和我一起研究和調試HAProxy+Keepalived。
感謝朋友胡安偉,感謝你為本書提供的精美插圖,并就Linux集群相關內容提出的許多寶貴的意見。
感謝機械工業出版華章公司的編輯楊福川和孫海亮,正是由于你們的信任、支持和幫助,我才能夠如此順利地完成全部書稿。
感謝熱心的讀者朋友們,沒有大家的支持和鼓勵,本書也不可能出到第4版。
感謝朋友三寶,感謝你在我苦悶的時候陪我聊天,感謝你這么多年來對我的信任和支持。
感謝在工作和生活中給予過我幫助的所有人,感謝你們,正是因為有了你們,才有了本書的問世。
關于勘誤
盡管我花了大量時間和精力去核對文件和語法,但書中難免還會存在一些錯誤和紕漏,如果大家發現問題,希望可以反饋給我,相關信息可發到我的郵箱 yuhongchun027@gmail.com。盡管我無法保證每一個問題都會有正確的答案,但我肯定會努力回答和并且指出一個正確的方向。
如果大家對本書有任何疑問或想進行Linux的技術交流,可以訪問我的個人博客,我會在此恭候大家。我的個人博客地址為http://yuhongchun.blog.51cto.com。另外,我在51CTO和CU社區的用戶名均為“撫琴煮酒”,大家也可以直接通過此用戶名在社區內與我進行交流。
余洪春(撫琴煮酒)
余洪春(撫琴煮酒),系統架構師、高級DevOps,從事電子商務網站和大型CDN系統運維工作10多年,在Linux集群、自動化運維、系統安全及高并發高流量網站架構設計等方面進行了深入的研究,在大量一線實踐中積累了豐富的經驗。精通負載均衡高可用技術和自動化運維技術,擅長電子商務和門戶類網站架構。51CTO和ChinaUnix等知名社區的特邀專家,51CTO系統網絡頻道的專欄作家,ChinaUnix論壇“集群和高可用”及“監控及自動化運維”版版主,在社區內發表了大量技術文章,深受網友好評。