本書是以動視暴雪中國運維團隊七位作者的日常工作作為背景,全面解析了Linux集群在動視暴雪的應(yīng)用現(xiàn)狀,內(nèi)容包括Linux系統(tǒng)、網(wǎng)絡(luò)、安全、監(jiān)控、備份、日志分析、自動化等,跳出了一般書籍僅僅能覆蓋的原理層面,詳盡真實地展現(xiàn)了各項技術(shù)在集群架構(gòu)和運維方向上的實際應(yīng)用和發(fā)展趨勢,是一本不可多得的實戰(zhàn)案例。
Preface 前 言為什么要寫這本書五個Linux愛好者和開源軟件的密集使用者因為同事關(guān)系相聚在動視暴雪,茶余之際談及目前市場上已出版的Linux圖書,一致的看法是,雖然市場上以Linux為主題的書很多,但絕大多數(shù)集中于Linux基礎(chǔ)介紹或是單純的服務(wù)搭建,有一些書著眼點在Linux集群的架構(gòu)設(shè)計,但是往往內(nèi)容重合度較高、篇幅零散,且基本上限于對原理的講解,缺乏對實際系統(tǒng)的集成梳理。雖然Linux及Linux集群目前在互聯(lián)網(wǎng)已經(jīng)非常流行,但是基于實際生產(chǎn)應(yīng)用講解Linux集群的書仍難覓蹤跡。因為從嚴(yán)格意義上來說,集群屬于一門多種技術(shù)融合的科學(xué),包含了Linux基礎(chǔ)系統(tǒng)、系統(tǒng)安全、系統(tǒng)調(diào)優(yōu)、網(wǎng)絡(luò)安全、日志分析、系統(tǒng)監(jiān)控、自動化管理、資產(chǎn)管理等多方面的內(nèi)容,單個人寫作很難達到這么全面的剖析范圍。于是,我們五人決定合作來寫一本相對更全面實用的Linux圖書。
在決定動筆之際,參與本書寫作的五位作者都就職于世界最大的游戲出版公司動視暴雪,因此,本書以動視暴雪中國運維團隊的日常工作為背景,內(nèi)容也基于(但不拘泥)日常運維的生產(chǎn)系統(tǒng)和測試系統(tǒng),力圖從實際生產(chǎn)系統(tǒng)和應(yīng)用出發(fā),以自己平日的實際運維工作為基本立足點,全方位、真實地展示目前Linux集群的應(yīng)用現(xiàn)狀。書中內(nèi)容包括Linux系統(tǒng)、網(wǎng)絡(luò)、安全、監(jiān)控、備份、日志分析等,跳出了一般書籍僅僅能覆蓋的原理層面,詳盡真實地展現(xiàn)了各項技術(shù)在集群架構(gòu)和運維方向上的實際應(yīng)用和發(fā)展趨勢,其中很多內(nèi)容更是動視暴雪中國運維團隊多年運維總結(jié)的最佳實踐。
對于我們自己來說,完成這本書的寫作,不但能分享自己多年的工作心得,也是一次極為難得的和眾多Linux愛好者一起學(xué)習(xí)和成長的機會。
讀者對象本書主要適合于以下讀者:
希望更深入地了解Linux系統(tǒng)的中高級人員希望更深入地了解網(wǎng)絡(luò)的中高級人員基于Linux系統(tǒng)的網(wǎng)站前后端開發(fā)人員系統(tǒng)運維工程師和架構(gòu)師如何閱讀本書本書第1章詳細描述了Linux的安裝、配置、用戶管理、文件管理、網(wǎng)絡(luò)管理、進程管理、軟件管理等內(nèi)容,這是Linux的基礎(chǔ)入門知識,建議所有沒有Linux基礎(chǔ)的讀者,或是新手通讀本章。第2章是Linux性能分析,介紹了Linux系統(tǒng)中性能分析工具的使用方法,這在實際工作中很常用,但是根據(jù)不同的場景,也有很多組合的使用方式。第3章至第5章是所有生產(chǎn)環(huán)境都會使用到的用戶集中認(rèn)證、DNS服務(wù)和系統(tǒng)備份等內(nèi)容,這些內(nèi)容屬于必知必會的部分,建議通讀。第6章針對集群和集群存儲進行了講解,建議讀者視自己的實際使用情況選讀。第7章詳細介紹了一款當(dāng)前非常流行的、實時metric工具Graphite,對于很多大型系統(tǒng)來說,這是一款極好的系統(tǒng)狀態(tài)記錄工具。第8章介紹Cobbler,對于依然在使用傳統(tǒng)DC的管理員來說,Cobbler是一款很好的系統(tǒng)自動安裝配置工具。第9章和第10章詳細描述了Puppet在自動化部署中的使用,這也是當(dāng)前非常流行的一款配置管理工具。第11章介紹了CMDB,建議感興趣的讀者閱讀。第12章是日志管理內(nèi)容,描述了兩種當(dāng)前流行的日志處理工具Splunk和ELK,它們都是處理海量日志非常好的工具。
勘誤和支持由于作者水平有限,書中難免會出現(xiàn)一些錯誤或者不準(zhǔn)確的地方,懇請讀者批評指正,您有任何寶貴意見都可以發(fā)送至郵箱johnwang.wangjun@gmail.com,我們很期待能夠聽到您的真摯反饋。
致謝這本書能順利的交稿,首先要感謝參與寫作的各位作者,能從百忙的工作和各自的家庭生活中抽出寶貴的時間,分享自己的心得和體會,才能有機會讓更多的愛好者和同行溝通交流。
此外,感謝機械工業(yè)出版社華章公司的編輯楊繡國(Lisa)老師,感謝她在這段時間里始終支持我們的寫作,她的鼓勵和幫助引導(dǎo)我們順利完成全部書稿。
王軍2017年5月
8年系統(tǒng)工程師、網(wǎng)絡(luò)架構(gòu)師工作經(jīng)驗,2006年初開始從事信息技術(shù)相關(guān)工作,先后參與過校園交換網(wǎng)、公司辦公網(wǎng)以及大中型互聯(lián)網(wǎng)公司的網(wǎng)絡(luò)架構(gòu)設(shè)計,有著極為豐富的實戰(zhàn)經(jīng)驗。2008年進入Linux系統(tǒng)運維領(lǐng)域,并相繼在國內(nèi)多家企業(yè)(易趣網(wǎng)、51JOB、阿里云、國家電網(wǎng)、動視暴雪)就職,工作內(nèi)容涉及大規(guī)模商用云計算虛擬化平臺運維、網(wǎng)站系統(tǒng)架構(gòu)、企業(yè)網(wǎng)絡(luò)架構(gòu),曾擔(dān)任多家IT公司Linux內(nèi)訓(xùn)講師、云計算咨詢顧問,設(shè)計和部署過國內(nèi)多家大型網(wǎng)站的高可用集群,對系統(tǒng)、網(wǎng)絡(luò)、數(shù)據(jù)庫等相關(guān)技術(shù)都有一定理解,多次在國內(nèi)一些知名技術(shù)論壇發(fā)表技術(shù)文檔和專題視頻,《Linux系統(tǒng)命令及Shell腳本實踐指南》一書作者。
Contents 目 錄
前言
第1章 Linux系統(tǒng)管理入門1
1.1 系統(tǒng)安裝1
1.1.1 安裝CentOS1
1.1.2 首次啟動CentOS14
1.1.3 更多設(shè)置14
1.2 系統(tǒng)登錄20
1.2.1 本地登錄20
1.2.2 遠程登錄22
1.3 用戶管理24
1.3.1 用戶和用戶組的概念24
1.3.2 新增和刪除用戶25
1.3.3 新增和刪除用戶組26
1.3.4 用戶切換26
1.4 文件系統(tǒng)27
1.4.1 什么是文件系統(tǒng)27
1.4.2 常見的文件系統(tǒng)27
1.4.3 磁盤分區(qū)和創(chuàng)建文件系統(tǒng)28
1.5 文件管理33
1.5.1 文件和目錄簡介33
1.5.2 文件和目錄權(quán)限34
1.5.3 文件查找35
1.5.4 文件壓縮和打包36
1.6 網(wǎng)絡(luò)管理37
1.6.1 網(wǎng)絡(luò)配置管理37
1.6.2 Linux防火墻38
1.6.3 網(wǎng)絡(luò)連通性診斷40
1.7 進程管理42
1.7.1 什么是進程43
1.7.2 進程的常見狀態(tài)43
1.7.3 進程優(yōu)先級的調(diào)整43
1.7.4 進程的終止44
1.8 軟件安裝46
1.8.1 源碼編譯安裝46
1.8.2 使用包管理Yum48
1.8.3 創(chuàng)建自己的Yum倉庫49
1.9 系統(tǒng)安全檢測與審計51
1.9.1 AIDE系統(tǒng)入侵檢測 51
1.9.2 審計53
第2章 系統(tǒng)性能分析56
2.1 性能分析簡介56
2.2 系統(tǒng)分析的基本工具56
2.2.1 CPU性能分析工具56
2.2.2 內(nèi)存性能分析工具60
2.2.3 磁盤性能分析工具62
2.2.4 sar64
2.3 軟件分析的基本工具66
2.3.1 ldd66
2.3.2 strace與ltrace66
2.3.3 ipcs71
2.3.4 systemtap73
2.4 與內(nèi)存相關(guān)的那些事情76
2.4.1 內(nèi)存泄漏76
2.4.2 虛擬內(nèi)存、物理內(nèi)存與頁缺失78
2.4.3 Out of Memory79
2.4.4 Overcommit79
2.4.5 cache與buffer80
2.5 與磁盤相關(guān)的那些事情80
2.5.1 HDD與SSD80
2.5.2 HDD磁盤的調(diào)度算法81
2.5.3 文件系統(tǒng)中的日志82
2.6 系統(tǒng)資源限制82
2.6.1 ulimit82
2.6.2 Cgroup84
第3章 用戶集中認(rèn)證91
3.1 openLDAP簡介91
3.2 openLDAP的安裝91
3.3 openLDAP的配置92
3.4 利用openLDAP集中認(rèn)證95
第4章 域名服務(wù)器DNS97
4.1 DNS服務(wù)簡介97
4.2 DNS安裝配置98
4.2.1 DNS安裝過程98
4.2.2 關(guān)于chroot的解釋99
4.2.3 配置主配置文件99
4.2.4 DNS的正向解析配置100
4.2.5 DNS的反向解析配置101
4.2.6 利用DNS實現(xiàn)負載均衡103
4.3 DNS的主從復(fù)制104
4.4 配置純緩存的DNS服務(wù)106
4.5 DNS的客戶端配置107
4.5.1 Linux中的配置107
4.5.2 Windows中的配置108
第5章 系統(tǒng)備份109
5.1 為什么要備份109
5.2 常見的備份機制110
5.2.1 完全備份110
5.2.2 增量備份110
5.2.3 差異備份111
5.3 Bacula簡介111
5.3.1 什么是Bacula111
5.3.2 Bacula的基本組件112
5.4 Bacula的安裝和配置112
5.4.1 Bacula控制器114
5.4.2 Bacula存儲守護進程120
5.4.3 Bacula客戶端文件守護進程121
5.4.4 Bacula控制臺122
5.4.5 啟動服務(wù)122
5.4.6 Bacula配置綜述122
5.5 使用Bacula進行備份和恢復(fù)124
5.5.1 執(zhí)行備份124
5.5.2 文件恢復(fù)127
5.6 Bacula的使用和維護129
5.6.1 Bconsole的用法129
5.6.2 使用Bacula進行文件驗證130
5.6.3 Catalog的維護和備份131
5.7 備份的策略132
5.7.1 備份什么133
5.7.2 備份到哪里133
5.7.3 備份的時間133
5.7.4 測試和監(jiān)控備份133
第6章 集群與存儲134
6.1 存儲的基本概念134
6.2 SAN134
6.2.1 SAN的選擇135
6.2.2 iSCSI的配置135
6.3 分布式文件系統(tǒng)與集群文件系統(tǒng)138
6.3.1 分布式文件系統(tǒng)138
6.3.2 GlusterFS的配置138
6.4 高可用集群141
6.4.1 Red Hat HA Cluster簡介141
6.4.2 配置一個高可用的Apache集群142
6.5 負載均衡集群151
6.5.1 HAProxy負載均衡151
6.5.2 Nginx負載均衡153
6.5.3 LVS負載均衡155
第7章 Graphite159
7.1 Graphite是什么159
7.1.1 Graphite不是一個告警系統(tǒng)159
7.1.2 Graphite的功能和特色159
7.2 Graphite的基本組件160
7.2.1 Whisper160
7.2.2 Carbon161
7.2.3 Graphite Web162
7.3 Graphite的安裝162
7.3.1 安裝Whisper數(shù)據(jù)庫163
7.3.2 安裝Carbon守護進程163
7.3.3 安裝graphite-web163
7.4 Graphite 的配置(單點)164
7.4.1 配置Carbon守護進程164
7.4.2 給Carbon Cache發(fā)送數(shù)據(jù)166
7.4.3 配置Graphite-web167
7.5 Graphite的配置(集群配置)169
7.5.1 配置Carbon Relay170
7.5.2 Relay中的數(shù)據(jù)復(fù)制172
7.5.3 數(shù)據(jù)聚合172
7.5.4 Graphite Cluster174
7.6 使用Graphite Web175
7.6.1 Graphite的Render API175
7.6.2 Graphite作圖函數(shù)176
7.6.3 Graphite Dashboard和Grafana178
7.7 Graphite 的性能監(jiān)控和調(diào)整181
7.8 其他182
7.8.1 Whisper文件操作182
7.8.2 壓力測試183
7.8.3 其他工具185
第8章 系統(tǒng)大規(guī)模部署186
8.1 概述186
8.2 與PXE不得不說的故事186
8.2.1 PXE簡介186
8.2.2 PXE實戰(zhàn)187
8.3 系統(tǒng)部署工具Cobbler192
8.3.1 Cobbler簡介192
8.3.2 Cobbler安裝192
8.3.3 Cobbler 配置193
8.3.4 Cobbler應(yīng)用197
8.3.5 Cobbler API202
8.3.6 Cobbler Replicat