3dwoo大學簡體電腦書店
Linux集群之美
( 簡體 字)
作者:余洪春 著類別:1. -> 作業系統 -> Linux
出版社:機械工業出版社Linux集群之美 3dWoo書號: 53882
詢問書籍請說出此書號!
有庫存
NT售價: 495
出版日:12/1/2020
頁數:376
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787111669814 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
推薦序
前言
第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
隨著云原生技術的流行和普及,除了傳統的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高并發高流量網站架構為例來說明網站的系統架構設計,并且分享了秒殺系統的架構設計思想。
系統架構師之路

自2006年接觸Linux系統以來,我從Linux系統工程師一步步晉升為項目實施工程師、高級Linux系統工程師、運維架構師,直至今日的高級運維開發工程師、系統架構師,這一路走來,深感開源技術和Linux集群的強大。其中印象最為深刻的還是擔任項目實施工程師、高級Linux系統工程師期間,因為要設計和實施網站(尤其是電子商務網站)架構,負責開發語言和開發框架的選型,感覺能力提升特別快,成長十分迅速。

在擔任運維架構師的這段工作時間里,我主要負責維護公司的電子商務網站。有些平臺核心網站的并發量并不是太大,但比較重要,所以公司都要求部署Linux集群,有時指定要部署LVS或HAProxy負載均衡器。在實際設計和安裝的過程中,我發現LVS/HAProxy的負載均衡確實非常強大,可以與硬件級的F5負載均衡器相媲美。很快我就被Linux集群這門藝術迷住了,工作之余自己也研究了Nginx/HAProxy+Keepalived(動靜分離)這種負載均衡高可用架構,并且在許多項目中成功實施,客戶反映效果不錯,所以我也在很多開源社區推廣Linux集群技術。

現階段我的職務是高級運維開發工程師、系統架構師,主要負責設計、實施及維護公司的電子商務網站以及產品核心功能的代碼開發。相對于CDN分布式系統而言,網站應用沒有節點冗余,所以對Linux集群技術的要求更高。前期我將所有網站應用都做了雙機高可用,即LVS/HAProxy+Keepalived和Nginx+Keepalived,還有DRBD+Heartbeat+NFS文件高可用,MySQL數據庫用的是MHA一主多從架構。其間,隨著特殊業務的需求越來越多(比如定點搶紅包活動),我也在網站的架構設計中引入了RabbitMQ消息隊列集群。后期基于商業推廣,網站流量、UV及并發日益增大,新機器上線也日益頻繁,所以我采用了Fabric和Ansbile自動化運維來管理線上機器,幫助運維同事避免重復勞動。另外,由于電子商務網站會牽涉支付問題,所以對安全性的要求也非常高,我們平時都會從網絡安全(包括硬件防火墻、Linux系統防火墻和WAF應用防火墻)、系統安全、代碼安全和數據庫安全等方面著手,盡力避免一切影響網站安全的行為。工作雖然辛苦,但看著自己設計的網站順利運行,心里還是很有成就感的,這也是我目前工作的主要動力。

撰寫本書的目的

從事系統集成、運維開發、架構設計方面的工作已經有十余年,我曾經有幸擔任過RHCE講師,到武漢各高校推廣紅帽Linux系統。在教學過程中我發現,很多學生在進入企業后都無法勝任自己的工作,更談不上正確地規劃自己的職業道路了。一方面是因為企業的生產環境具有一定的復雜性和危險性,另一方面市場上入門書居多,缺乏能真正指導讀者解決實際問題的書籍。例如,很多書都只是給出了比較基礎的操作及理論,而相對于線上環境,根本沒有涉及安全操作以避免誤操作的內容,更沒有PV、UV和并發以及數據庫壓力和高并發環境下的消息隊列或任務隊列的設計等相關話題。

我寫這本書,一方面是想對自己這些年的工作經驗和心得進行一次系統的梳理和總結;另一方面是想將自己的經驗分享給大家,希望幫助大家少走彎路,希望書中的項目實踐(包括Linux傳統集群技術及云原生下的負載均衡技術、MySQL的高可用方案及Python自動化運維工具的使用)和線上環境的Python腳本,有助于讀者迅速進入工作狀態。書中提供的Python程序均來自真實項目,可以直接借用。關于Linux集群的項目實踐和MySQL的高可用方案,大家也可以根據實際項目的需求直接用于公司的網站架構。希望大家能通過本書掌握Linux集群的精髓,領會Linux集群的魅力,通過Python程序實現自動化運維和編程,從而輕松愉快地工作。

讀者對象

本書的讀者對象如下:

系統工程師或運維工程師

DevOps工程師

網絡管理員或企業網管

系統開發工程師

運維架構師

如何閱讀本書

本書是對實際工作經驗的總結,涉及大量的知識點和專業術語,建議經驗還不是很豐富的讀者先了解第1~2章的內容,如果大家在學習過程中根據這兩章的講解進行操作,定會達到事半功倍的效果。

系統工程師和運維工程師可以重點關注第4~7章的內容,這些都是與運維工作息息相關的,建議大家多花些精力和時間,從線上環境去考慮學習。

DevOps工程師可以重點關注第2~8章的內容,想在企業運維開發工作中開發高效的運維工具并不是一件很容易的事情,建議大家多學習,拓寬自己的知識面。

運維架構師可以重點關注第4~5章和第7~8章的內容,這些都跟系統/網站架構技術息息相關,而且基本上都出自真實項目經驗,具備一定的參考意義。

對于開發人員來說,由于已具備很強的編程開發能力,可以重點關注第2章和第3章之外的章節,以提升自己的技術。

致謝

感謝我的家人,她們在生活上對我無微不至地照顧,讓我更有精力和動力去工作和創作。

感謝好友劉天斯和老男孩的支持和鼓勵,閑暇之余和你們一起交流開源技術和發展趨勢,也是一種享受。

感謝朋友胡安偉。他為本書提供了許多精美的插圖,并就Linux集群技術相關內容提出了許多寶貴的意見。

感謝現公司的領導給予我足夠的信任和支持,讓我在工作中去了解和熟悉大量關于云原生的開源技術并用于工作實踐。

感謝機械工業出版社華章公司的編輯楊繡國女士,在你的信任、支持和幫助下,本書才能如此順利地完成。

感謝朋友三寶,感謝他這么多年來對我的信任和支持,在我苦悶的時候陪我聊天。

感謝在工作和生活中給予我幫助的所有人,正是因為有了你們,才有了本書的問世。

關于勘誤

盡管筆者花了大量的時間和精力去核對文稿和語法,但書中難免還會存在一些錯誤和紕漏,如果大家發現了問題,可以及時反饋給我,相關信息可發到筆者的郵箱。盡管我無法保證能準確地回答每一個問題,但我肯定會努力為大家指出一個正確的方向。

如果大家對本書有任何疑問或想進行Linux集群的技術交流,可以訪問我的個人博客。另外,筆者在51CTO和ChinaUnix社區的用戶名均為“撫琴煮酒”,大家也可以直接在社區與我交流。

余洪春(撫琴煮酒)

于武漢
pagetop