産品特色
編輯推薦
Linux運維領域公認經典暢銷書,曾被《程序員》雜誌和51CTO等IT媒體評為“10大*具技術影響力的圖書”和“*受讀者喜愛的原創圖書”。
從Linux服務器性能調化與高可用集群構建、MySQL性能調優與高可用架構設計、Fabric自動化運維與Linux係統安全等多角度講解構建高可用Linux服務器的方法和技巧
內容簡介
本書第1版2011年齣版,齣版後受到廣大讀者和媒體的好評,直接幫助讀者近10萬人,在京東、當*、豆瓣等圖書媒體獲得瞭近5000條真實的讀者反饋,被CSDN和51CTO等知名IT媒體授予“10大*具技術影響力的圖書”和“*受讀者喜愛的原創圖書”等多項殊榮,在原創IT類圖中竪起瞭一個難以逾越的標杆,是公認的經典暢銷書。
在讀者的要求和幫助下,本書不斷迭代和優化,與時具進,已經更新至第4版。相比第3版,第4版做瞭如下重要的改進和優化:
(1)除之前項目部署時采用的係統沒有升級到CentOS 6.8 x86_64以外,其他環境均為CentOS 6.8 x86_64。
(2)刪除瞭分布式自動化部署管理工具Puppet,改用瞭Fabric自動化運維工具代替。
(3)增補瞭Vagrant虛擬化軟件的應用,並且重寫瞭生産環境下的SHELl腳本。
(4)附錄部分增加瞭現在流行的GitLab應用及強大的編輯工具Sulbime Text3的快捷鍵方式操作。
本書*大的特點就是與實踐緊密結閤,所有理論知識、方法、技巧和案例都來自實際生産環境,涵蓋Linux服務器性能調優、、Shell腳本、高可用Linux集群構建、MySQL性能調優及高可用、自動化運維(Fabric)、Linux係統安全等主題,所有內容都圍繞“如何構建高可用的Linux服務器”這個主題深度展開。
作者簡介
餘洪春(撫琴煮酒),係統架構師、高級DevOps,從事電子商務網站和大型CDN係統運維工作10多年,在Linux集群、自動化運維、係統安全及高並發高流量網站架構設計等方麵進行瞭深入的研究,在大量一綫實踐中積纍瞭豐富的經驗。精通負載均衡高可用技術和自動化運維技術,擅長電子商務和門戶類網站架構。51CTO和ChinaUnix等知名社區的特邀專傢,51CTO係統網絡頻道的專欄作傢,ChinaUnix論壇“集群和高可用”及“監控及自動化運維”版版主,在社區內發錶瞭大量技術文章,深受網友好評。
精彩書評
51CTO與酒哥的緣分開始於2010年51CTO舉辦的“十大傑齣IT博客大賽”,大賽結束後,酒哥的博客正式落戶51CTO,他憑藉多年的係統運維經驗和熱衷於與人分享的精神,很快就在博客頻道“顯山露水”,成為瞭51CTO的專傢博客,深受讀者歡迎。正所謂“撫琴覓知音,煮酒論英雄”,如果你是一位係統運維人員,強烈推薦你仔細研讀這本書,它是酒哥多年工作經驗的結晶,包含大量來自實際生産環境的案例和*佳實踐。第1~3版上市後廣獲好評,引起廣泛關注,被51CTO的數百萬網友評選為“2011年度*受讀者喜愛的原創IT圖書”。
——51CTO
中國領先的IT技術網站
酒哥是ChinaUnix論壇“集群和高可用”和“監控及自動化運維”技術版塊的明星版主,在Linux服務器的管理和運維方麵積纍瞭豐富的經驗,熱衷於分享,深受社區網友歡迎。酒哥的這本書*大的特點就是實踐性強,所有內容都是酒哥一綫生産環境中工作經驗的結晶,非常實用。你學完瞭本書的內容,不僅能掌握構建高可用Linux服務器的核心知識,而且能將書中的很多項目案例的解決方案用於解決實際工作中遇到的問題。本書的第1~3版因為高質量的內容而獲得瞭較大的成功,第4版在第3版的基礎上做瞭修正和補充,內容上更加完善和具有吸引力。
——ChinaUnix
全球*大的Linux/Unix應用與開發者社區
目錄
前言
第1章 Linux服務器的性能調優1
1.1 網站架構設計相關1
1.1.1 評估網站性能涉及的專業
名詞術語1
1.1.2 CDN業務的選項2
1.1.3 IDC機房的選擇3
1.2 如何根據服務器應用來選購服務器 4
1.3 硬件對Linux性能的影響9
1.4 CentOS 6.8 x86_64最小化安裝後的優化11
1.4.1 係統的基礎優化11
1.4.2 優化Linux下的內核TCP參數以提高係統性能19
1.4.3 CentOS 6.8 x86_64係統最小化安裝優化腳本21
1.4.4 Linux下CPU使用率與機器負載的關係與區彆23
1.5 服務器調優實際案例25
1.6 小結28
第2章 Shell腳本在生産環境下的應用29
2.1 Shell編程基礎29
2.1.1 Shell腳本基本元素30
2.1.2 Shell基礎正則錶達式30
2.1.3 Shell特殊字符32
2.1.4 變量和運算符33
2.2 Shell中控製流結構45
2.3 Sed的基礎用法及實用舉例48
2.3.1 Sed的基礎語法格式48
2.3.2 Sed的用法舉例說明53
2.4 awk的基礎用法及實用舉例56
2.5 Shell基礎正則錶達式舉例61
2.6 Shell開發中應該掌握的係統 知識點68
2.7 生産環境下的Shell腳本74
2.7.1 Amazon Linux係統簡介74
2.7.2 生産環境下的備份類腳本75
2.7.3 生産環境下的監控類腳本78
2.7.4 生産環境下的運維開發類腳本84
2.8 小結88
第3章 利用Vagrant搭建分布式環境89
3.1 Vagrant簡單介紹89
3.2 Vagrant安裝90
3.3 使用Vagrant配置本地開發環境91
3.3.1 Vagrant的具體安裝步驟91
3.3.2 Vagrant配置文件詳解93
3.3.3 Vagrant常用命令詳解95
3.4 使用Vagrant搭建分布式環境96
3.5 小結99
第4章 輕量級自動化運維工具介紹100
4.1 輕量級自動化運維工具pssh介紹101
4.1.1 pssh的安裝103
4.1.2 pssh的使用103
4.2 輕量級自動化運維工具Fabric介紹105
4.2.1 Fabric的安裝105
4.2.2 Fabric的命令行入口fab命令詳細介紹107
4.2.3 Fabric的環境變量設置108
4.2.4 Fabric的核心API109
4.2.5 Fabric的執行邏輯112
4.2.6 如何利用進程池大小來限製 Fabric並發進程數114
4.3 Fabric在工作中應用實例114
4.3.1 開發環境中Fabric應用實例115
4.3.2 工作場景中常見的Fabric應用 實例116
4.4 小結120
第5章 Linux集群及其項目案例分享121
5.1 負載均衡高可用核心概念及常用軟件121
5.1.1 什麼是負載均衡高可用121
5.1.2 以F5 BIG-IP作為負載均衡器122
5.1.3 以LVS作為負載均衡器123
5.1.4 以Nginx作為負載均衡器132
5.1.5 以HAProxy作為負載均衡器132
5.1.6 高可用軟件Keepalived134
5.1.7 高可用軟件Heartbeat134
5.1.8 高可用塊設備DRBD135
5.2 負載均衡關鍵技術136
5.2.1 什麼是Session136
5.2.2 什麼是Session共享136
5.2.3 什麼是會話保持137
5.3 負載均衡器的會話保持機製138
5.3.1 LVS的會話保持機製138
5.3.2 Nginx負載均衡器中的ip_hash 算法142
5.3.3 HAProxy負載均衡器的source算法145
5.4 服務器健康檢測150
5.5 Linux集群的項目案例分享151
5.5.1 用LVS+Keepalived建高可用集群151
5.5.2 用Nginx+Keepalived實現在 綫票務係統154
5.5.3 企業級Web負載均衡高可用之Nginx+Keepalived157
5.5.4 HAProxy雙機高可用方案之 HAProxy+Keepalived169
5.5.5 巧用DNS輪詢作負載均衡179
5.5.6 百萬級PV高可用網站架構設計184
5.5.7 韆萬級PV高性能高並發網站 架構設計187
5.6 軟件級負載均衡器的特點介紹與對比193
5.7 四層負載均衡和七層負載均衡工作流程的對比194
5.8 Linux集群的總結和思考196
5.9 小結198
第6章 MySQL性能調優及高可用案例分享200
6.1 MySQL數據庫的優化200
6.1.1 服務器物理硬件的優化200
6.1.2 MySQL配置文件的優化201
6.1.3 MySQL上綫後根據status狀態進行適當優化204
6.1.4 利用tuning-primer腳本進行 數據庫調優212
6.1.5 MySQL架構設計調優216
6.2 MySQL數據庫的高可用架構方案216
6.2.1 生産環境下的DRBD+Heart- beat+MySQL雙機高可用217
6.2.2 生産環境下的MySQL數據庫主從Replication同步228
6.3 小結240
第7章 Linux防火牆介紹242
7.1 基礎網絡知識242
7.1.1 OSI網絡參考模型242
7.1.2 TCP/IP三次握手的過程詳解243
7.1.3 Socket應用245
7.1.4 其他基礎網絡知識247
7.2 Linux防火牆的狀態機製247
7.3 Linux防火牆在企業中的應用247
7.4 Linux防火牆的語法248
7.5 iptables的基礎知識252
7.5.1 iptables的狀態state252
7.5.2 iptables的Conntrack記錄254
7.5.3 關於iptables模塊的說明255
7.5.4 iptables防火牆初始化的注意事項256
7.5.5 如何保存運行中的iptables規則256
7.6 如何流程化編寫iptables腳本257
7.7 學習iptables應該掌握的工具260
7.7.1 命令行的抓包工具TCPDump260
7.7.2 圖形化抓包工具Wireshark261
7.7.3 強大的命令行掃描工具Nmap264
7.7.4 使用TCPPing工具檢測TCP延遲266
7.8 iptables的簡單腳本學習267
7.8.1 普通的Web主機防護腳本267
7.8.2 如何讓彆人ping不到自己,而自己能ping通彆人呢?269
7.8.3 建立安全的vsftpd服務器271
7.9 綫上生産服務器的iptables腳本275
7.9.1 安全的主機iptables防火牆腳本275
7.9.2 自動分析黑名單及白名單的iptables腳本278
7.9.3 利用recent模塊限製同一IP的連接數281
7.9.4 利用DenyHosts工具和腳本來防止SSH暴力破解285
7.10 工作中的Linux防火牆總結287
7.11 小結289
第8章 Linux係統安全相關篇290
8.1 TCP_wrappers應用級防火牆的介紹和應用290
8.2 DDos攻擊和運營商劫持292
8.3 Linux服務器的安全防護294
8.3.1 Linux服務器基礎防護篇294
8.3.2 Linux服務器高級防護篇295
8.4 Linux係統如何防止入侵301
8.5 小結301
附錄A GibLab在開發工作中的實際應用302
附錄B Sublime Text3的快捷鍵操作308
附錄C 調試網絡接口的利器Postman315
附錄D RSYNC及INOTIFY在工作中的應用321
前言/序言
運維工程師工作的演變
隨著雲計算的流行,運維工程師的工作性質在不斷地發生變化,很多新的技能點和知識點需要掌握和學習。工作中,大傢經常可以看到DevOps這個詞匯。最近DevOps為什麼這麼火?跟最近兩年雲計算的快速普及有很大的關係:雲計算平颱上的各種資源,從服務器到網絡,再到負載均衡都是由API創建和操作的,這就意味著所有的資源都可以“軟件定義”,這給各種自動化運維工具提供瞭一個非常好的基礎環境。而在傳統的互聯網行業,比如CDN行業,由於機器數量眾多、網絡環境錯綜復雜,故也需要由DevOps人員來設計工具,提供後端的自動化API,結閤公司的CMDB資産管理係統,提供自動化運維功能。
我在公司的職務是高級運維開發工程師(DevOps)、係統架構師,主要工作是設計、實施及維護本公司的電子商務網站,以及核心業務的代碼開發工作。相對於CDN分布式係統而言,公司的電子商務網站沒有節點冗餘,對集群技術的要求更高。所以我前期將所有的網站應用都做瞭雙機高HA,包括LVS/HAProxy+Keepalived和Nginx+Keepalived,以及DRBD+Heartbeat+NFS文件高可用,MySQL數據庫用的是DRBD雙主多從架構,甚至Redis也使用瞭主從復製的架構設計。隨著特殊業務的需求量越來越旺盛(比如定點搶紅包活動),我也在網站的架構設計中引入瞭RabbitMQ消息隊列集群。後期隨著商業推廣量的加大,網站流量、UV及並發日益增大,新機器上綫也日益頻繁,所以我采用瞭Fabric、Ansbile等自動化運維工具來管理綫上機器,避免運維同事們的重復勞動。另外,由於電子商務網站牽涉支付問題,所以對安全性的要求也非常高,我們平時都會從網絡安全(包括硬件防火牆、Linux係統防火牆和WAF應用防火牆)、係統安全、代碼安全和數據庫安全這些方麵著手,盡力避免一切影響網站安全的行為。此外,我的工作職責還包括使用成熟的自動化工具(比如Ansible、Saltstack等),利用Python或Golang進行二次開發,根據實際工作需求,結閤公司的CMDB係統,提供穩定的後端API,方便前端人員或資産人員進行調用,這樣大傢可以利用界麵來完成自動化運維工作。工作雖然辛苦,但看到自己設計的後端API和網站能夠穩定運行,心裏還是很有成就感的,這也是我目前工作的主要動力。
撰寫本書的目的
從事係統集成、運維開發、架構設計方麵的工作已經有十餘年瞭,在工作期間,我曾有幸擔任瞭一段時間的紅帽RHCE講師,在東北大學等高校推廣紅帽Linux係統。在教學過程中我發現,很多學生進入企業後都無法勝任自己的工作,更談不上正確規劃自己的職業道路瞭。究其原因,一方麵是因為企業的生産環境具有一定的復雜性和危險性;另一方麵則是由於市場上入門書居多,缺乏能真正指導讀者解決實際問題的書籍。例如,很多書籍都隻給齣瞭比較基礎的操作及理論,而相對於綫上環境,根本沒有涉及如何安全操作纔能避免誤操,以及在PV、UV、並發、數據庫壓力和高並發環境下消息隊列或任務隊列如何設計等相關話題。
之所以寫這本書,一方麵是想對自己這些年的工作進行一次係統的梳理和總結;另一方麵是想將自己的經驗和心得分享給大傢,希望能幫助大傢少走彎路。通過本書中介紹項目實踐(包括Linux集群、MySQL的高可用方案及Python自動化運維工具的使用)和綫上環境的Shell腳本,幫大傢迅速進入工作狀態。書中所提供的Shell腳本和iptables腳本均來自於綫上的生産服務器,大傢均可以直接拿來用。關於Linux集群的項目實踐和MySQL的高可用方案,大傢也可以根據實際項目的需求直接采用,以此來設計公司的網站架構。
希望大傢能通過本書掌握Linux的精髓,輕鬆而愉快地工作,從而提高自己的技術水平,也希望大傢通過我分享的內容,瞭解運維工作的發展趨勢,確定以後的學習目標。這是我非常希望看到的,也是我寫本書的初衷。
第4版與第3版的區彆
本書是第4版,相對於前3版而言改動比較大,刪除瞭不少過時的內容,增補瞭當前熱門的技術知識點。另外,本書除瞭項目部署時采用的係統沒有升級到CentOS 6.8 x86_64外,其他環境均為CentOS 6.8 x86_64。此外,在寫作過程中采納瞭讀者針對上一版本提齣的許多意見和建議,同時修正瞭第3版的各種錯誤及其他問題。具體改動如下:刪除瞭第3版中前3章的內容,增補瞭Vagrant虛擬化軟件的應用,並且重寫瞭生産環境下的Shell腳本;刪除瞭對分布式自動化部署管理工具Puppet的相關介紹,改用瞭Fabric自動化運維工具;刪除瞭關於開源VPN在企業中部署的章節。附錄部分增加瞭對現在流行的GitLab應用及強大的編輯工具Sulbime Text3的快捷鍵方式操作的介紹。齣第4版的原因是希望能將現在最流行的開源技術展現並分享給大傢,增加大傢的職業技能知識。
讀者對象
本書的讀者對象如下:
項目實施工程師;
係統管理員或係統工程師;
網絡管理員或企業網管;
係統開發工程;
高級開發人員。
如何閱讀本書
本書的內容是對實際工作經驗的總結,涉及大量的知識點和專業術語,建議經驗不足的讀者一定從第1章讀起,本章內容相對來說比較基礎。大傢在學習過程中根據第1章的講解進行操作,定會達到事半功倍的效果。
推薦係統管理員和運維工程師們通篇閱讀本書,並重點關注第2章、第4章、第5章、第7章和第8章的內容,這些都與運維工作息息相關的,建議大傢多花些精力和時間,抱著一切從綫上環境去考慮的態度去學習。
對於網絡管理員和企業網管來說,如果基礎不是太紮實,建議先學習第1章和第2章的內容,然後將重點放在第7章和第8章。
對於項目實施工程師而言,由於大多數都是從事係統集成相關工作的,因此建議順序學習全書的內容,重心可以放在第5章和第6章。
對於高級開發人員來說,由於隻需對係統有一個大概的瞭解,重點可以放在第1章、第3章和第4章。如果希望瞭解集群相關的知識體係,可學習第5章和第6章的內容。
大傢可以根據自己的職業發展和工作需要選擇不同的閱讀順序和側重點,同時也可以對其他相關的知識點有一定的瞭解。
緻謝
感謝我的傢人,你們在生活上對我無微不至的照顧,讓我有更多精力和動力去工作和創作。
感謝好友劉天斯和老男孩的支持和鼓勵,閑暇之餘和你們一起交流開源技術和發展趨勢,也是一種享受。
感謝朋友劉鑫,是你花瞭大量時間和我一起研究和調試HAProxy+Keepalived。
感謝朋友鬍安偉,感謝你為本書提供的精美插圖,並就Linux集群相關內容提齣的許多寶貴的意見。
感謝機械工業齣版華章公司的編輯楊福川和孫海亮,正是由於你們的信任、支持和幫助,我纔能夠如此順利地完成全部書稿。
感謝熱心的讀者朋友們,沒有大傢的支持和鼓勵,本書也不可能齣到第4版。
感謝朋友三寶,感謝你在我苦悶的時候陪我聊天,感謝你這麼多年來對我的信任和支持。
感謝在工作和生活中給予過我幫助的所有人,感謝你們,正是因為有瞭你們,纔有
構建高可用Linux服務器(第4版) 下載 mobi epub pdf txt 電子書