Linux運維實作大全:高效管理所有主流服務 | 運動資訊第一站 - 2024年11月
Linux運維實作大全:高效管理所有主流服務
◎ 集結大量經典易懂的實例與技巧
◎ 全面涵蓋Linux系統管理的相關知識
◎ Linux技術專家多年實作經驗精華總結
隨著大數據、雲端運算、容器化應用的落實,基於Linux的運行維護也面臨新的挑戰:業務越來越複雜、使用者需求越來越多樣化、伺服器的數量越來越龐大。面對這些挑戰,建構標準化、自動化、穩定性高、可靠性強的運行維護體系迫在眉睫。
本書以實際生產環境為背景,以實作為主,有系統、全面性地講解Linux運行維護人員必須掌握的運行維護知識。透過本書,讀者不僅可以掌握必需的專業知識,還可具備實際解決問題的能力。
全書分為5篇,共有15章。
►第1篇 Web、資料庫運行維護篇(1∼3章)
介紹Web 運行維護和資料庫運行維護的實戰技能
►第2篇 運行維護監控篇(4∼5章)
介紹企業常用的運行維護監控工具,Zabbix、Nginx、Apache、Tomcat、PHP-FPM、Redis 、Ganglia
►第3篇 叢集架構篇(6∼8章)
介紹3款開放原始碼叢集軟體,Keepalived、LVS、HAProxy
►第4篇 線上伺服器安全、最佳化、自動化運行維護篇(9∼11章)
主要說明對生產環境中伺服器的運行維護、最佳化和安全防範技巧,屬於
全實戰性質的案例介紹,最後介紹一款流行的自動化運行維護工具Ansible
►第5篇 虛擬化、大數據運行維護篇(12∼15章)
介紹虛擬化工具KVM的使用方法、ELK大規模記錄檔即時處理系統、
Hadoop大數據平台的運行維護,並透過實際的案例介紹如何透過ELK 收集Apache、Nginx、Tomcat、Redis 等系統的記錄檔並進行清洗和分析。
適合讀者群
Linux系統運行維護工程師、大數據運行維護工程師、運行維護開發工程師、想要學習Linux運行維護技術者。
本書特色
終於有一本書能徹底地把Linux上所有主流系統、基本操作、安全實戰,說明的這麼清楚,一氣呵成。
透過實戰操作、理論與實作相結合的方式來介紹每個運行維護基礎知識。不讀不快,所有Linux IT人員必備工具書。
作者簡介
高俊峰
Linux資深技術專家,知名IT作家,51CTO專家博主。
曾任職於新浪、阿里雲等企業擔任系統架構師;具有多年的自動化運行維護和管理經驗,擅長Linux、叢集架構、Hadoop大數據等方面的系統運行維護、性能最佳化和規劃設計;出版多本Linux相關圖書。
前言
第1 篇 Web、資料庫運行維護篇
01 高效Web 伺服器Nginx
1.1 為什麼選擇Nginx
1.2 安裝和設定Nginx
1.3 Nginx 的管理與維護
1.4 Nginx 常見應用實例
1.5 LNMP 應用架構以及部署
1.6 Nginx +Tomcat 架構與應用案例
02 高效Web 伺服器Apache
2.1 LAMP 服務套件
2.2 Apache 的基礎設定
2.3 Apache 常見功能應用實例
2.4 Apache MPM 模式與基礎最佳化
2.5 Apache 整合Tomcat 建置高效JAVA Web 應用
03 企業常見MySQL 架構應用實戰
3.1 選擇Percona Server、MariaDB還是MYSQL
3.2 MySQL 指令操作
3.3 MySQL 備份恢復工具XtraBackup
3.4 常見的高可用MySQL 解決方案
3.5 透過Keepalived 架設MySQL 雙主模式的高可用叢集系統
3.6 MySQL 叢集架構MHA 應用實戰
3.7 MySQL 中介軟體ProxySQL
3.8 ProxySQL+MHA 建置高可用MySQL讀寫分離架構
第2 篇 運行維護監控篇
04 運行維護監控利器Zabbix
4.1 Zabbix 執行架構
4.2 安裝、部署Zabbix 監控平台
4.3 Zabbix Web 設定詳解
4.4 Zabbix 自訂監控項
4.5 Zabbix 的主動模式與被動模式
4.6 自動發現與自動註冊
4.7 Zabbix 運行維護監控實戰案例
05 分散式監控系統Ganglia
5.1 Ganglia 簡介
5.2 Ganglia 的組成
5.3 Ganglia 的工作原理
5.4 Ganglia 的安裝
5.5 設定一個Ganglia 分散式監控系統
5.6 Ganglia 監控系統的管理和維護
5.7 Ganglia 監控擴充實現機制
5.8 Ganglia 在實際應用中要考慮的問題
第3 篇 叢集架構篇
06 高性能叢集軟體Keepalived
6.1 叢集的定義
6.2 叢集的特點與功能
6.3 叢集的分類
6.4 HA 叢集中的相關術語
6.5 Keepalived 簡介
6.6 Keepalived 安裝與設定
6.7 Keepalived 基礎功能應用實例
07 高性能負載平衡叢集LVS
7.1 LVS 簡介
7.2 LVS 系統結構
7.3 IP 負載平衡與負載排程演算法
7.4 LVS 的安裝與使用
7.5 透過Keepalived 架設LVS 高可用性叢集系統
7.6 測試高可用LVS 負載平衡叢集系統
7.7 LVS 經常使用的叢集網路架構
08 高性能負載平衡軟體HAProxy
8.1 高性能負載平衡軟體HAProxy
8.2 HAProxy 基礎設定與應用實例
8.3 架設HAProxy+Keepalived 高可用負載平衡系統
8.4 測試HAProxy+Keepalived 高可用負載平衡叢集
第4 篇 線上伺服器安全、最佳化、自動化運行維護篇
09 線上伺服器安全運行維護
9.1 帳戶和登入安全
9.2 遠端存取和認證安全
9.3 檔案系統安全
9.4 系統軟體安全管理
9.5 Linux 後門入侵偵測與安全防護工具
9.6 伺服器遭受攻擊後的處理過程
9.7 雲端服務器被植入挖礦病毒案例實錄以及Redis 安全防範
10 線上伺服器效能最佳化案例
10.1 線上Linux 伺服器基礎最佳化策略
10.2 系統性能最佳化標準以及對某電子商務平台最佳化分析案例
10.3 一次Java 處理程序佔用CPU 過高問題的排除方法與案例分析
11 自動化運行維護工具Ansible
11.1 Ansible 的安裝
11.2 Ansible 的架構與執行原理
11.3 Ansible 主機和群組的設定
11.4 ansible.cfg 與預設設定
11.5 Ad-Hoc 與command 模組
11.6 Ansible 其他常用功能模組
11.7 ansible-playbook 簡單使用
第5 篇 虛擬化、大數據運行維護篇
12 KVM 虛擬化技術與應用
12.1 KVM 虛擬化架構
12.2 VNC 的安裝與使用
12.3 檢視硬體是否支援虛擬化
12.4 安裝KVM 核心模組和管理工具
12.5 宿主機網路設定
12.6 使用KVM 技術安裝虛擬機器
12.7 虛擬機器複製
12.8 KVM 虛擬化常用管理指令
13 ELK 大規模記錄檔即時處理系統應用實戰
13.1 ELK 架構介紹
13.2 ZooKeeper 基礎與入門
13.3 Kafka 基礎與入門
13.4 Filebeat 基礎與入門
13.5 ELK 常見應用架構
13.6 用ELK+Filebeat+Kafka+ZooKeeper建置大數據記錄檔分析平台
13.7 Logstash 設定語法詳解
13.8 ELK 收集Apache 存取記錄檔實戰案例
13.9 ELK 收集Nginx 存取記錄檔實戰案例
13.10 透過ELK 收集MySQL 慢查詢記錄檔資料
13.11 透過ELK 收集Tomcat 存取記錄檔和狀態記錄檔
14 高可用分散式叢集Hadoop部署全攻略
14.1 Hadoop 生態圈知識
14.2 Hadoop 的虛擬分散式部署
14.3 高可用Hadoop2.x 系統結構
14.4 部署高可用的Hadoop 大數據平台
14.5 Hadoop 叢集啟動過程
14.6 Hadoop 日常運行維護問題歸納
15 分散式檔案系統HDFS 與分散式運算YARN
15.1 分散式檔案系統HDFS
15.2 MapReduce 與YARN 的工作機制
前言
運行維護的核心競爭力是什麼
前陣子有句話很流行,叫「知道了很多道理,卻依然過不好這一生」,我也經常拿這句話來打趣自己和身邊從事運行維護的朋友。那你有沒有想過,我們每天學那麼多東西,看那麼多書,得到那麼多知識,卻為什麼依然解決不了實際問題呢?
歸根結底,是因為處理問題的能力不夠啊!
什麼是能力?我覺得它包含了你對待問題的態度以及處理問題的想法和方法。
首先說態度。運行維護工作中我們可能經常會遇到一些警告資訊,例如偶爾的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 部落格」官網中搜尋「南非螞蟻」)上留言提出,非常歡迎大家到上面提出意見和建議,由於本人水準有限,書中錯誤疏漏在所難免,希望大家多多批評指正!