前言
運行維護的核心競爭力是什麼
前陣子有句話很流行,叫「知道了很多道理,卻依然過不好這一生」,我也經常拿這句話來打趣自己和身邊從事運行維護的朋友。那你有沒有想過,我們每天學那麼多東西,看那麼多書,得到那麼多知識,卻為什麼依然解決不了實際問題呢?
歸根結底,是因為處理問題的能力不夠啊!
什麼是能力?我覺得它包含了你對待問題的態度以及處理問題的想法和方法。
首先說態度。運行維護工作中我們可能經常會遇到一些警告資訊,例如偶爾的501 錯誤、504 錯誤等,但是,很多運行維護人員並不在意。沒錯,是很多,他們假裝看不見、不在乎,或將問題歸咎於人品。這就是態度問題。
偶爾的錯誤視而不見,經過長時間的累積,各種錯誤就會頻發,例如自己運行維護的網站每天頻繁出現500、501 等錯誤。此時由於影響正常使用了,所以運行維護人員不得不去處理解決,而處理的方法簡單粗暴— 直接重新啟動服務或重新啟動伺服器,於是,問題暫時獲得解決了。類似這種遇到問題不去深究原因,只靠重新啟動解決的工作方式太多了。更有甚者,當出現問題的時候,不從本身找原因,而是抱怨網路狀態不好、伺服器設定不好、作業系統不好、資料庫不好等,將問題歸咎於其他外在因素,甚至極度推責者也屢見不鮮。
這就是態度。如果能對問題有敏感性,能對任何小的、輕微的問題有足夠的敏銳利度,你就有了一個快速成長的基礎。對問題的敏銳利度是非常重要的。很多效能或程式邏輯上非致命的問題,在不夠敏銳的時候是發現不了的,但是一旦進入特殊場景這些問題就會驟然爆發。多一點敏銳利度,就會減少這種危機的風險。同時,這種工作態度完全阻止了你的成長,如果以這種態度工作,即使擁有10 年工作經驗,但可能僅有一年的實際能力。
優秀的運行維護人員和平庸的運行維護人員,不是靠敲打鍵盤的速度來區分的。在遇到問題後,平庸的運行維護人員的解決效率,和優秀運行維護「老鳥」相比有天壤之別。所謂提高效率,不外乎對故障的分析、定位以及思考。要分析、定位問題,那麼檢視記錄檔是基本方法,你可能需要檢視Web Server的記錄檔、資料庫的記錄檔、慢查詢記錄檔、binlog 記錄檔、PHP 的錯誤記錄檔等。看似簡單不過的處理問題方法,但真正能夠靜下心來檢視的人真的不多,線上出問題瞎猜的或連記錄檔都不看的大有人在。看記錄檔不仔細不完整的人也不少,而你能去認真研究記錄檔,其實已經超越很多人了。
發現問題之後,自然要去解決問題。問題差別很大、多種多樣,誰都不可能處理過所有可能發生的問題,那麼怎麼去快速解決這些問題呢?搜尋引擎是非常好的處理問題輔助工具。你所遇到的錯誤訊息和錯誤訊息,通常95% 都能在網上搜尋到。當然,搜尋到後要結合實際場景認真思考,並了解透徹,而非照貓畫虎地去處理,否則可能這次運氣好就猜對了,下次運氣不好可能就會出現誤刪資料庫要「跑路」的事了。
說到這裡,很久之前遇到過一件讓人哭笑不得的事情。公司新到職一個運行維護人員,某天被派到客戶那裡處理問題,然後就發訊息給我,問怎麼重新啟動Linux 系統。我看到後,就回覆了一句「百度一下吧」。我認為這種問題,他一定可以自己解決,第二天來到公司,我問他問題怎麼解決的,他說自己不太懂,沒找到關機的方法,所以就拔電源暴力關機了。我聽到這裡,默默地歎了口氣,讓人資請他離開。
為什麼請他離開?因為我知道他不適合這個職務,即使他堅守這個職務,也不會有大的前景。
這是個真實的狀況,沒有半點誇張成分。透過這個事件,我只是想說,要加強自己的能力,就要主動嘗試獨立解決問題。過度地依賴別人,出現任何問題都不假思索地問別人,並不能加強自己任何能力。
最後,要加強自己處理問題的能力,還要有知識的總結、整理和歸納。你今天上網買了一套學習視訊,明天從網路硬碟下載一套40GB 的Python 視訊課程,你可能下載的時候欣喜若狂,這種方式取得的僅是資料。這一堆冷冰冰的資料,除了能相當大地滿足你內心想要學習的虛榮感外,其真實的價值需要你付出很大的努力。
要讓知識變成自己的,是需要動手實作的。對一個問題或一種問題,以及不同類型的問題,要善於歸納整理,不斷反思,儘量把遇到過的每個問題都記錄下來,記錄要儘量詳細。這樣你經過一段時間去回頭看,可能會發現不一樣的處理方法和想法。如果你感覺到這一點,那麼恭喜你,你的能力又提升了一步!
我們日常遇到的問題類似打怪升級,你解決的問題越多你的能力就會越強,經驗自然也會越來越豐富。但人的腦袋不可能記住所有事情,將自己遇到的問題沉澱下來對以後的查閱也有很大的幫助,就不必每次都要去查資料,自己也能有一個索引資料庫。
經常歸納是加強能力的最好方式。知識的累積,不是你處理過的就一定有累積,而是整理過的才有價值。
本書結構和主要內容
本書最大的特點是注重運行維護能力的培養,透過實戰操作、理論與實作相結合的方式來介紹每個運行維護基礎知識。每個章節都會貫穿一個線上真實的案例說明,透過對案例的學習,讀者不僅學到了很多運行維護知識,同時掌握實際解決問題的能力。本書每一章都是一個獨立的基礎知識,讀者可以選擇從有興趣的章節閱讀,也可以從第1 章依次閱讀。
本書主要分為五大篇,總計15 章,基本結構如下。
第1 篇:Web、資料庫運行維護篇(第1 ∼ 3 章)
Web、資料庫運行維護篇主要介紹Web 運行維護和資料庫運行維護的實戰技能。其中,Web 運行維護主要介紹Nginx、Apache 以及LAMP、LNMP 等流行Web 架構的運行維護技能和實戰技巧。
資料庫運行維護主要介紹MySQL 資料庫的各種應用場景,包含MySQL 主從複製、MySQL 叢集架構、MySQL MHA 以及MySQL 讀寫分離中介軟體ProxySQL 的使用方法和企業常用的業務架構。
透過對Web、資料庫運行維護篇的學習,讀者可以輕鬆勝任網站運行維護、DBA 運行維護職位的各項工作。
第2 篇:運行維護監控篇(第4 ∼ 5 章)
運行維護監控篇主要介紹企業常用的運行維護監控工具,首先介紹目前流行的企業運行維護監控平台Zabbix 的建置和基本使用方法,然後透過多個實例說明如何監控常見的應用軟體,如Nginx、Apache、Tomcat、PHP-FPM、Redis 等。接著,本篇又介紹一款簡單、流行的分散式監控平台Ganglia,透過Ganglia 我們可以非常方便地收集各種記錄檔資料,並透過圖表形式即時展示。最重要的是,Ganglia 可以監控巨量的伺服器,且效能不受任何影響。如果你有Hadoop、Spark 等巨量伺服器需要監控的話, Ganglia 一定是你的首選。
第3 篇:叢集架構篇(第6 ∼ 8 章)
叢集架構和叢集技術一直是運行維護人員必須掌握的基礎知識。隨著行動網際網路快速發展、大數據技術的普及,巨量伺服器要協作執行。叢集技術是實現巨量運行維護的基礎,本篇主要介紹3 款開放原始碼叢集軟體,分別是Keepalived、LVS 和HAProxy。Keepalived 是一個高可用的叢集軟體,是企業高可用中使用頻率很高的軟體;LVS 是一款負載平衡叢集軟體,可用於多種負載平衡叢集場景。透過Keepalived 與LVS 的整合,我們可以迅速建置一套高可用的負載平衡叢集系統,網際網路上60% 以上的叢集架構基本都是透過Keepalived+LVS 實現的。最後,本篇還介紹一款軟體HAProxy,它是一個以7 層的專業的負載平衡叢集軟體為基礎,它可以實現比LVS 更多的負載平衡功能,也是企業叢集架構中使用流行度非常廣的一款軟體。
第4 篇:線上伺服器安全、最佳化、自動化運行維護篇(第9 ∼ 11 章)
本篇主要說明對生產環境中伺服器的運行維護、最佳化和安全防範技巧,屬於全實戰性質的案例介紹。本篇首先說明如何在生產環境下保障伺服器的安全,並介紹伺服器環境下常見的一些入侵偵測工具和安全防護工具,然後透過多個安全案例生動地介紹在伺服器遭受入侵或攻擊後的處理思維和方法。
接著,介紹如何在生產環境中上線一套業務系統,並介紹如何評估系統性能,以及如何進行效能的最佳化(主要介紹最佳化的技巧和經驗),然後透過多個最佳化案例實戰說明最佳化思維與方法。
最後,本篇介紹一款流行的自動化運行維護工具Ansible,透過Ansible 我們可以完成巨量主機的自動化部署、自動化設定,Ansible 是大數據運行維護必備的一款工具。
第5 篇:虛擬化、大數據運行維護篇(第12 ∼ 15 章)
本篇主要介紹虛擬化工具KVM 的使用方法、ELK 大規模記錄檔即時處理系統以及Hadoop 大數據平台的運行維護3 個方面。本篇首先介紹KVM 虛擬化工具的使用以及常見虛擬機器的建置和部署過程,接著詳細介紹ELK 記錄檔分析平台的建置、記錄檔分析機制、資料處理流程等內容,並透過實際的案例介紹如何透過ELK 收集Apache、Nginx、Tomcat、Redis 等系統的記錄檔並進行清洗和分析。本篇最後詳細介紹大數據平台Hadoop 的建置,主要是Hadoop高可用平台的建置機制、運行維護流程以及與Hadoop 相關的運行維護技能。
繁體中文版說明
本書原作者為中國大陸人士,書中多處例圖為中國大陸網站及系統,為求全書和原文相符,保留簡體中文介面圖例,讀者可對照前後文進行閱讀。
本書讀者群
本書適合的讀者群有:
■ 初 / 中級 Linux 運行維護人員
■ Linux 系統運行維護工程師
■ 大數據運行維護工程師
■ 運行維護開發工程師
■ 開放原始碼同好
勘誤和支援
本書的修訂資訊會發佈在作者的部落格上,該部落格也會不定期更新書中的遺漏。當然,讀者遇到疑惑或發現書中的錯誤也歡迎在部落格(在「51CTO 部落格」官網中搜尋「南非螞蟻」)上留言提出,非常歡迎大家到上面提出意見和建議,由於本人水準有限,書中錯誤疏漏在所難免,希望大家多多批評指正!