Linux 集群之美

Linux 集群之美

作者: 余洪春
出版社: 機械工業
出版在: 2020-12-07
ISBN-13: 9787111669814
ISBN-10: 7111669819
裝訂格式: 平裝
總頁數: 387 頁





內容描述


隨著雲原生技術的流行和普及,除了傳統的Linux高可用集群技術,
雲原生的負載均衡技術在產品或系統中的比重也越來越大,因此本書基於這兩方面講解Linux集群的實現。
書中內容除了介紹傳統的Linux集群和分佈式系統以外,還介紹了微服務環境(包括Kubernetes和Mesos)
下各組件(如Kong和Istio)的用法,以及如何在復雜的項目環境中保證Linux集群服務的高可用。
在實際工作中,系統架構設計絕不輕鬆,成熟的架構實現都是經過生產環境逐漸演變完善的。
本書也以筆者維護過的高並發、高流量網站架構與秒殺系統說明了網站的系統架構設計思想。
書中內容都是基於項目實踐或工作內容提煉而來的,相信對讀者會有一定的啟發!
本書的主要內容和特色
基於真實的電子商務系統和CDN系統著重介紹了Nginx/HAProxy+Keepalived、LVS+Keepalived/DR及DNS輪詢等常見的Web集群負載均衡高可用技術,
除此之外,還介紹了ZooKeeper集群在分佈式系統中的應用。
MySQL高可用架構目前主要是以MySQL 5.7為主,
書中針對DRBD+Heartbeat、MySQL MHA及基於GTID的MySQL主從復制工具mysql-utilities進行了詳細說明。
基於筆者目前維護的容器雲平台(包括Kubernetes和Mesos集群)介紹雲原生環境下的負載均衡技術的具體實現,
例如HAProxy、IPVS及Ingress-Controller等,重點介紹了Nginx/Traefik Ingress-Controller在Kubernetes集群系統中的部署和應用。
以筆者維護過的千萬級/億級PV高並發高流量網站架構為例來說明網站的系統架構設計,
並且分享了秒殺系統的架構設計思想。


目錄大綱


推薦序
前言
第1章Linux集群基礎概念1
1.1 Linux集群涉及的核心概念及常用軟件2
1.1.1什麼是負載均衡高可用2
1.1.2什麼是服務發現3
1.1.3以LVS作為負載均衡器4
1.1.4以Nginx作為負載均衡器9
1.1.5以HAProxy作為負載均衡器10
1.1.6高可用軟件Keepalived 10
1.1.7高可用軟件Heartbeat 11
1.1.8高可用塊設備DRBD 11
1.2負載均衡關鍵技術13
1.2.1負載均衡算法13
1.2.2 Session共享和會話保持17
1.3負載均衡器的會話保持機制19
1.3.1負載均衡器的會話保持處理機制19
1.3.2 LVS的持久連接機制20
1.3.3 Nginx負載均衡器的ip_hash算法24
1.3.4 HAProxy負載均衡器的source算法25
1.3.5基於cookie的會話保持處理機制29
1.4服務器健康檢測33
1.5 L4和L7負載均衡器對比34
1.6集群內(外)負載均衡34
1.7軟件級負載均衡器的特點介紹與對比35
1.8小結36
第2章Python的基礎概念及進階知識37
2.1 Python語言的應用領域37
2.2選擇Python的原因39
2.3 Python的版本說明40
2.4如何高效地進行Python開發工作40
2.4.1 IPython的功能介紹40
2.4. 2利用virtualenv隔離項目46
2.4.3 PyCharm簡介47
2.5 Python基礎知識介紹51
2.5.1正則表達式的應用51
2.5.2 Python程序的構成58
2.5.3 Python的編碼問題60
2.5.4使用Python解析JSON 63
2.5.5 Python異常處理與程序調試異常64
2.5.6 Python函數67
2.5.7 Python的面向對象79
2.5.8 Python的多進程和多線程91
2.5.9 Python協程105
2.6小結109
第3章Python在Linux集群中的實踐應用110
3.1 Python經常用到的第三方類庫110
3.2工作中常用的Python腳本111
3.2.1利用Python比較應用111
3.2.2利用Python獲取數據庫證書並替換成文件字符串112
3.2.3利用Python處理JSON式文件113
3.3利用Flask Web框架設計RESTful API 114
3.3.1後端開發工作中為什麼要使用RESTful API 114
3.3.2項目實戰117
3.4利用Nginx+Gunicorn+Flask部署Python項目119
3.5利用Flask+ Gevent搭建webssh 128
3.6小結137
第4章輕量級自動化運維工具Fabric介紹138
4.1 Vagrant簡介139
4.1.1 Vagrant的安裝139
4.1.2使用Vagrant配置本地開發環境141
4.1.3使用Vagrant搭建本地開發環境148
4.1.4使用Vagrant搭建分佈式環境153
4.2輕量級自動化運維工具Fabric 162
4.2.1 Paramiko版本庫簡介162
4.2.2 Fabric的安裝164
4.2.3 Fabric的命令行入口fab命令詳解165
4.2.4 Fabric的環境變量設置166
4.2.5 Fabric的核心API 167
4.2.6 Fabric的執行邏輯171
4.3 Fabric在工作中的應用實例173
4.3.1開發環境中的Fabric應用實例173
4.3.2工作場景中常見的Fabric應用實例174
4.4 Fabric在性能方面的不足180
4.5小結180
第5章Linux集群項目案例181
5.1 Linux集群的項目案例詳解181
5.1.1項目案例一:LVS在項目中的優化設計思路181
5.1.2項目案例二:用Nginx+Keepalived實現在線票務系統184
5.1.3項目案例三:企業級Web負載均衡高可用之Nginx+Keepalived 188
5.1.4項目案例四:HAProxy雙機高可用方案HAProxy+Keepalived 198
5.2利用HAProxy代理WebSocket集群203
5.3巧用DNS輪詢進行負載均衡206
5.4利用ZooKeeper集群來搭建分佈式系統211
5.5小結218
第6章云原生環境下的負載均衡實現219
6.1私有化部署Kubernetes集群220
6.1.1部署Kubernetes集群環境的準備工作220
6.1.2 Nexus3私有倉庫在集群內的暴露使用221
6.1.3部署Kubernetes集群222
6.1.4 Kubernetes集群數據如何持久化228
6.2負載均衡的具體實現232
6.2.1以iptables作為集群的負載均衡232
6.2.2以IPVS作為集群的負載均衡241
6.2.3服務發現243
6.2.4 Ingress-Controller的介紹245
6.3小結264
第7章MySQL高可用集群項目案例265
7.1 MySQL數據庫的安裝265
7.2服務器物理硬件的選擇267
7.3 MySQL數據庫的優化267
7.4 MySQL主從復制流程與原理270
7.5 MySQL主從復制的搭建271
7.5.1 MySQL主從復制環境介紹271
7.5.2影響MySQL主從復制的配置選項272
7.5.3 MySQL主從復制的實現過程273
7.6 MySQL MHA集群案例274
7.6.1 MHA安裝前的準備工作275
7.6.2源碼安裝MHA程序276
7.6.3 MHA的實際安裝和部署流程277
7.6.4 MHA manager的壓測284
7.6.5設置MHA manager為守護進程290
7.7 MySQL DRBD高可用案例291
7.7.1 MySQL DRBD相關組件原理介紹292
7.7.2 MySQL DRBD的具體搭建過程293
7.7.3 MySQL SysBench的基準測試308
7.8利用mysql-utilities工具自動切換主從復制308
7.8.1基於GTID的主從復制308
7.8.2 mysql-utilities工具的二次開發318
7.9用XtraBackup工具備份和恢復數據庫319
7.9.1 XtraBackup的安裝過程319
7.9.2 XtraBackup的運行原理319
7.9.3 XtraBackup備份及恢復過程321
7.10小結322
第8章高可用高並發系統架構設計323
8.1系統性能評估指標323
8.2網站架構設計規劃預案324
8.2.1合理設計與規劃324
8.2.2核心系統的開發設計325
8.2.3規劃好網站未來的發展325
8.2.4合理選用開源軟件方案326
8.2.5機房及CDN選型326
8.2.6 CI/CD及藍綠部署發布327
8.2.7系統安全問題327
8.3千萬級PV、高性能、高並發網站的架構設計328
8.4億級PV、高性能、高並發網站的架構設計332
8.5秒殺系統的架構設計339
8.6小結343
第9章Linux集群的總結和思考344
9.1集群與分佈式系統的區別344
9.2了解微服務及其組件346
9.3現階段如何保證高可用349
9.4小結351
附錄A Docker進階操作總結352
附錄B利用Nexus3配置CI/CD的私有倉庫358
附錄C XtraBackup備份工具的詳細測試365


作者介紹


余洪春(撫琴煮酒)
高級DevOps、系統架構師,從事電子商務網站和大型CDN系統運維、架構設計工作十餘年,
在Linux集群、自動化運維、Kubernetes/Mesos雲原生平台及高並發高流量網站架構設計等方面有深入研究,
通過大量一線實踐積累了豐富的經驗,精通負載均衡高可用技術、DevOps及容器技術等。
51CTO和ChinaUnix等知名社區的特邀專家,51CTO系統網絡頻道的專欄作家,
ChinaUnix論壇“集群和高可用”及“監控及自動化運維”版版主,在社區內發表了大量技術文章,深受網友好評。




相關書籍

Linux Device Drivers, 3/e (Paperback)

作者 Jonathan Corbet Alessandro Rubini Greg Kroah-Hartman

2020-12-07

Principles of Electronic Communication Systems, 3/e (IE-Paperback)

作者 Louis E. Jr. Frenzel

2020-12-07

Developing MMS Applications: Multimedia Messaging Services for Wireless Networks

作者 Scott Guthery Mary Cronin

2020-12-07