第1章 Linux集群基礎概念 1
1.1 Linux集群涉及的核心概念及常用軟件 2
1.1.1 什么是負載均衡高可用 2
1.1.2 什么是服務發(fā)現 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開發(fā)工作 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協(xié)程 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 后端開發(fā)工作中為什么要使用RESTful API 114
3.3.2 項目實戰(zhàn) 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配置本地開發(fā)環(huán)境 141
4.1.3 使用Vagrant搭建本地開發(fā)環(huán)境 148
4.1.4 使用Vagrant搭建分布式環(huán)境 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的環(huán)境變量設置 166
4.2.5 Fabric的核心API 167
4.2.6 Fabric的執(zhí)行邏輯 171
4.3 Fabric在工作中的應用實例 173
4.3.1 開發(fā)環(huán)境中的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在項目中的優(yōu)化設計思路 181
5.1.2 項目案例二:用Nginx+Keepalived實現在線票務系統(tǒng) 184
5.1.3 項目案例三:企業(yè)級Web負載均衡高可用之Nginx+Keepalived 188
5.1.4 項目案例四:HAProxy雙機高可用方案HAProxy+Keepalived 198
5.2 利用HAProxy代理WebSocket集群 203
5.3 巧用DNS輪詢進行負載均衡 206
5.4 利用ZooKeeper集群來搭建分布式系統(tǒng) 211
5.5 小結 218
第6章 云原生環(huán)境下的負載均衡實現 219
6.1 私有化部署Kubernetes集群 220
6.1.1 部署Kubernetes集群環(huán)境的準備工作 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 服務發(fā)現 243
6.2.4 Ingress-Controller的介紹 245
6.3 小結 264
第7章 MySQL高可用集群項目案例 265
7.1 MySQL數據庫的安裝 265
7.2 服務器物理硬件的選擇 267
7.3 MySQL數據庫的優(yōu)化 267
7.4 MySQL主從復制流程與原理 270
7.5 MySQL主從復制的搭建 271
7.5.1 MySQL主從復制環(huán)境介紹 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工具的二次開發(fā) 318
7.9 用XtraBackup工具備份和恢復數據庫 319
7.9.1 XtraBackup的安裝過程 319
7.9.2 XtraBackup的運行原理 319
7.9.3 XtraBackup備份及恢復過程 321
7.10 小結 322
第8章 高可用高并發(fā)系統(tǒng)架構設計 323
8.1 系統(tǒng)性能評估指標 323
8.2 網站架構設計規(guī)劃預案 324
8.2.1 合理設計與規(guī)劃 324
8.2.2 核心系統(tǒng)的開發(fā)設計 325
8.2.3 規(guī)劃好網站未來的發(fā)展 325
8.2.4 合理選用開源軟件方案 326
8.2.5 機房及CDN選型 326
8.2.6 CI/CD及藍綠部署發(fā)布 327
8.2.7 系統(tǒng)安全問題 327
8.3 千萬級PV、高性能、高并發(fā)網站的架構設計 328
8.4 億級PV、高性能、高并發(fā)網站的架構設計 332
8.5 秒殺系統(tǒng)的架構設計 339
8.6 小結 343
第9章 Linux集群的總結和思考 344
9.1 集群與分布式系統(tǒng)的區(qū)別 344
9.2 了解微服務及其組件 346
9.3 現階段如何保證高可用 349
9.4 小結 351
附錄A Docker進階操作總結 352
附錄B 利用Nexus3配置CI/CD的私有倉庫 358
附錄C XtraBackup備份工具的詳細測試 365