全書共9章,主要是以作者的項目實踐為基礎(chǔ),以CentOS 7.5 x86_64為主操作系統(tǒng)、AWS云為平臺,介紹Linux傳統(tǒng)集群技術(shù)、云原生下的負載均衡技術(shù)、MySQL的高可用方案及Python自動化運維工具的使用。
推薦序
前言
第1章 Linux集群基礎(chǔ)概念 1
1.1 Linux集群涉及的核心概念及常用軟件 2
1.1.1 什么是負載均衡高可用 2
1.1.2 什么是服務(wù)發(fā)現(xiàn) 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 高可用塊設(shè)備DRBD 11
1.2 負載均衡關(guān)鍵技術(shù) 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 服務(wù)器健康檢測 33
1.5 L4和L7負載均衡器對比 34
1.6 集群內(nèi)(外)負載均衡 34
1.7 軟件級負載均衡器的特點介紹與對比 35
1.8 小結(jié) 36
第2章 Python的基礎(chǔ)概念及進階知識 37
2.1 Python語言的應(yīng)用領(lǐng)域 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基礎(chǔ)知識介紹 51
2.5.1 正則表達式的應(yīng)用 51
2.5.2 Python程序的構(gòu)成 58
2.5.3 Python的編碼問題 60
2.5.4 使用Python解析JSON 63
2.5.5 Python異常處理與程序調(diào)試異常 64
2.5.6 Python函數(shù) 67
2.5.7 Python的面向?qū)ο? 79
2.5.8 Python的多進程和多線程 91
2.5.9 Python協(xié)程 105
2.6 小結(jié) 109
第3章 Python在Linux集群中的實踐應(yīng)用 110
3.1 Python經(jīng)常用到的第三方類庫 110
3.2 工作中常用的Python腳本 111
3.2.1 利用Python比較應(yīng)用 111
3.2.2 利用Python獲取數(shù)據(jù)庫證書并替換成文件字符串 112
3.2.3 利用Python處理JSON式文件 113
3.3 利用Flask Web框架設(shè)計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 小結(jié) 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)境變量設(shè)置 166
4.2.5 Fabric的核心API 167
4.2.6 Fabric的執(zhí)行邏輯 171
4.3 Fabric在工作中的應(yīng)用實例 173
4.3.1 開發(fā)環(huán)境中的Fabric應(yīng)用實例 173
4.3.2 工作場景中常見的Fabric應(yīng)用實例 174
4.4 Fabric在性能方面的不足 180
4.5 小結(jié) 180
第5章 Linux集群項目案例 181
5.1 Linux集群的項目案例詳解 181
5.1.1 項目案例一:LVS在項目中的優(yōu)化設(shè)計思路 181
5.1.2 項目案例二:用Nginx+Keepalived實現(xiàn)在線票務(wù)系統(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 小結(jié) 218
第6章 云原生環(huán)境下的負載均衡實現(xiàn) 219
6.1 私有化部署Kubernetes集群 220
6.1.1 部署Kubernetes集群環(huán)境的準備工作 220
6.1.2 Nexus3私有倉庫在集群內(nèi)的暴露使用 221
6.1.3 部署Kubernetes集群 222
6.1.4 Kubernetes集群數(shù)據(jù)如何持久化 228
6.2 負載均衡的具體實現(xiàn) 232
6.2.1 以iptables作為集群的負載均衡 232
6.2.2 以IPVS作為集群的負載均衡 241
6.2.3 服務(wù)發(fā)現(xiàn) 243
6.2.4 Ingress-Controller的介紹 245
6.3 小結(jié) 264
第7章 MySQL高可用集群項目案例 265
7.1 MySQL數(shù)據(jù)庫的安裝 265
7.2 服務(wù)器物理硬件的選擇 267
7.3 MySQL數(shù)據(jù)庫的優(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主從復制的實現(xiàn)過程 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 設(shè)置MHA manager為守護進程 290
7.7 MySQL DRBD高可用案例 291
7.7.1 MySQL DRBD相關(guān)組件原理介紹 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工具備份和恢復數(shù)據(jù)庫 319
7.9.1 XtraBackup的安裝過程 319
7.9.2 XtraBackup的運行原理 319
7.9.3 XtraBackup備份及恢復過程 321
7.10 小結(jié) 322
第8章 高可用高并發(fā)系統(tǒng)架構(gòu)設(shè)計 323
8.1 系統(tǒng)性能評估指標 323
8.2 網(wǎng)站架構(gòu)設(shè)計規(guī)劃預案 324
8.2.1 合理設(shè)計與規(guī)劃 324
8.2.2 核心系統(tǒng)的開發(fā)設(shè)計 325
8.2.3 規(guī)劃好網(wǎng)站未來的發(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ā)網(wǎng)站的架構(gòu)設(shè)計 328
8.4 億級PV、高性能、高并發(fā)網(wǎng)站的架構(gòu)設(shè)計 332
8.5 秒殺系統(tǒng)的架構(gòu)設(shè)計 339
8.6 小結(jié) 343
第9章 Linux集群的總結(jié)和思考 344
9.1 集群與分布式系統(tǒng)的區(qū)別 344
9.2 了解微服務(wù)及其組件 346
9.3 現(xiàn)階段如何保證高可用 349
9.4 小結(jié) 351
附錄A Docker進階操作總結(jié) 352
附錄B 利用Nexus3配置CI/CD的私有倉庫 358
附錄C XtraBackup備份工具的詳細測試 365