全書共9章,主要是以作者的項(xiàng)目實(shí)踐為基礎(chǔ),以CentOS 7.5 x86_64為主操作系統(tǒng)、AWS云為平臺(tái),介紹Linux傳統(tǒng)集群技術(shù)、云原生下的負(fù)載均衡技術(shù)、MySQL的高可用方案及Python自動(dòng)化運(yùn)維工具的使用。
推薦序
前言
第1章 Linux集群基礎(chǔ)概念 1
1.1 Linux集群涉及的核心概念及常用軟件 2
1.1.1 什么是負(fù)載均衡高可用 2
1.1.2 什么是服務(wù)發(fā)現(xiàn) 3
1.1.3 以LVS作為負(fù)載均衡器 4
1.1.4 以Nginx作為負(fù)載均衡器 9
1.1.5 以HAProxy作為負(fù)載均衡器 10
1.1.6 高可用軟件Keepalived 10
1.1.7 高可用軟件Heartbeat 11
1.1.8 高可用塊設(shè)備DRBD 11
1.2 負(fù)載均衡關(guān)鍵技術(shù) 13
1.2.1 負(fù)載均衡算法 13
1.2.2 Session共享和會(huì)話保持 17
1.3 負(fù)載均衡器的會(huì)話保持機(jī)制 19
1.3.1 負(fù)載均衡器的會(huì)話保持處理機(jī)制 19
1.3.2 LVS的持久連接機(jī)制 20
1.3.3 Nginx負(fù)載均衡器的ip_hash算法 24
1.3.4 HAProxy負(fù)載均衡器的source算法 25
1.3.5 基于cookie的會(huì)話保持處理機(jī)制 29
1.4 服務(wù)器健康檢測(cè) 33
1.5 L4和L7負(fù)載均衡器對(duì)比 34
1.6 集群內(nèi)(外)負(fù)載均衡 34
1.7 軟件級(jí)負(fù)載均衡器的特點(diǎn)介紹與對(duì)比 35
1.8 小結(jié) 36
第2章 Python的基礎(chǔ)概念及進(jìn)階知識(shí) 37
2.1 Python語(yǔ)言的應(yīng)用領(lǐng)域 37
2.2 選擇Python的原因 39
2.3 Python的版本說(shuō)明 40
2.4 如何高效地進(jìn)行Python開發(fā)工作 40
2.4.1 IPython的功能介紹 40
2.4.2 利用virtualenv隔離項(xiàng)目 46
2.4.3 PyCharm簡(jiǎn)介 47
2.5 Python基礎(chǔ)知識(shí)介紹 51
2.5.1 正則表達(dá)式的應(yīng)用 51
2.5.2 Python程序的構(gòu)成 58
2.5.3 Python的編碼問(wèn)題 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的多進(jìn)程和多線程 91
2.5.9 Python協(xié)程 105
2.6 小結(jié) 109
第3章 Python在Linux集群中的實(shí)踐應(yīng)用 110
3.1 Python經(jīng)常用到的第三方類庫(kù) 110
3.2 工作中常用的Python腳本 111
3.2.1 利用Python比較應(yīng)用 111
3.2.2 利用Python獲取數(shù)據(jù)庫(kù)證書并替換成文件字符串 112
3.2.3 利用Python處理JSON式文件 113
3.3 利用Flask Web框架設(shè)計(jì)RESTful API 114
3.3.1 后端開發(fā)工作中為什么要使用RESTful API 114
3.3.2 項(xiàng)目實(shí)戰(zhàn) 117
3.4 利用Nginx+Gunicorn+Flask部署Python項(xiàng)目 119
3.5 利用Flask+ Gevent搭建webssh 128
3.6 小結(jié) 137
第4章 輕量級(jí)自動(dòng)化運(yùn)維工具Fabric介紹 138
4.1 Vagrant簡(jiǎn)介 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 輕量級(jí)自動(dòng)化運(yùn)維工具Fabric 162
4.2.1 Paramiko版本庫(kù)簡(jiǎn)介 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)用實(shí)例 173
4.3.1 開發(fā)環(huán)境中的Fabric應(yīng)用實(shí)例 173
4.3.2 工作場(chǎng)景中常見(jiàn)的Fabric應(yīng)用實(shí)例 174
4.4 Fabric在性能方面的不足 180
4.5 小結(jié) 180
第5章 Linux集群項(xiàng)目案例 181
5.1 Linux集群的項(xiàng)目案例詳解 181
5.1.1 項(xiàng)目案例一:LVS在項(xiàng)目中的優(yōu)化設(shè)計(jì)思路 181
5.1.2 項(xiàng)目案例二:用Nginx+Keepalived實(shí)現(xiàn)在線票務(wù)系統(tǒng) 184
5.1.3 項(xiàng)目案例三:企業(yè)級(jí)Web負(fù)載均衡高可用之Nginx+Keepalived 188
5.1.4 項(xiàng)目案例四:HAProxy雙機(jī)高可用方案HAProxy+Keepalived 198
5.2 利用HAProxy代理WebSocket集群 203
5.3 巧用DNS輪詢進(jìn)行負(fù)載均衡 206
5.4 利用ZooKeeper集群來(lái)搭建分布式系統(tǒng) 211
5.5 小結(jié) 218
第6章 云原生環(huán)境下的負(fù)載均衡實(shí)現(xiàn) 219
6.1 私有化部署Kubernetes集群 220
6.1.1 部署Kubernetes集群環(huán)境的準(zhǔn)備工作 220
6.1.2 Nexus3私有倉(cāng)庫(kù)在集群內(nèi)的暴露使用 221
6.1.3 部署Kubernetes集群 222
6.1.4 Kubernetes集群數(shù)據(jù)如何持久化 228
6.2 負(fù)載均衡的具體實(shí)現(xiàn) 232
6.2.1 以iptables作為集群的負(fù)載均衡 232
6.2.2 以IPVS作為集群的負(fù)載均衡 241
6.2.3 服務(wù)發(fā)現(xiàn) 243
6.2.4 Ingress-Controller的介紹 245
6.3 小結(jié) 264
第7章 MySQL高可用集群項(xiàng)目案例 265
7.1 MySQL數(shù)據(jù)庫(kù)的安裝 265
7.2 服務(wù)器物理硬件的選擇 267
7.3 MySQL數(shù)據(jù)庫(kù)的優(yōu)化 267
7.4 MySQL主從復(fù)制流程與原理 270
7.5 MySQL主從復(fù)制的搭建 271
7.5.1 MySQL主從復(fù)制環(huán)境介紹 271
7.5.2 影響MySQL主從復(fù)制的配置選項(xiàng) 272
7.5.3 MySQL主從復(fù)制的實(shí)現(xiàn)過(guò)程 273
7.6 MySQL MHA集群案例 274
7.6.1 MHA安裝前的準(zhǔn)備工作 275
7.6.2 源碼安裝MHA程序 276
7.6.3 MHA的實(shí)際安裝和部署流程 277
7.6.4 MHA manager的壓測(cè) 284
7.6.5 設(shè)置MHA manager為守護(hù)進(jìn)程 290
7.7 MySQL DRBD高可用案例 291
7.7.1 MySQL DRBD相關(guān)組件原理介紹 292
7.7.2 MySQL DRBD的具體搭建過(guò)程 293
7.7.3 MySQL SysBench的基準(zhǔn)測(cè)試 308
7.8 利用mysql-utilities工具自動(dòng)切換主從復(fù)制 308
7.8.1 基于GTID的主從復(fù)制 308
7.8.2 mysql-utilities工具的二次開發(fā) 318
7.9 用XtraBackup工具備份和恢復(fù)數(shù)據(jù)庫(kù) 319
7.9.1 XtraBackup的安裝過(guò)程 319
7.9.2 XtraBackup的運(yùn)行原理 319
7.9.3 XtraBackup備份及恢復(fù)過(guò)程 321
7.10 小結(jié) 322
第8章 高可用高并發(fā)系統(tǒng)架構(gòu)設(shè)計(jì) 323
8.1 系統(tǒng)性能評(píng)估指標(biāo) 323
8.2 網(wǎng)站架構(gòu)設(shè)計(jì)規(guī)劃預(yù)案 324
8.2.1 合理設(shè)計(jì)與規(guī)劃 324
8.2.2 核心系統(tǒng)的開發(fā)設(shè)計(jì) 325
8.2.3 規(guī)劃好網(wǎng)站未來(lái)的發(fā)展 325
8.2.4 合理選用開源軟件方案 326
8.2.5 機(jī)房及CDN選型 326
8.2.6 CI/CD及藍(lán)綠部署發(fā)布 327
8.2.7 系統(tǒng)安全問(wèn)題 327
8.3 千萬(wàn)級(jí)PV、高性能、高并發(fā)網(wǎng)站的架構(gòu)設(shè)計(jì) 328
8.4 億級(jí)PV、高性能、高并發(fā)網(wǎng)站的架構(gòu)設(shè)計(jì) 332
8.5 秒殺系統(tǒng)的架構(gòu)設(shè)計(jì) 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進(jìn)階操作總結(jié) 352
附錄B 利用Nexus3配置CI/CD的私有倉(cāng)庫(kù) 358
附錄C XtraBackup備份工具的詳細(xì)測(cè)試 365