內容介紹
《實用負載均衡技術:網站性能最佳化攻略》內容簡介:處理負載均衡問題的相關概念和工具,說明了如何避免性能退化和伺服器上的服務突然崩潰的風險,闡述了單個伺服器以及可以執行cookie插入或者改善SSL吞吐量的負載均衡器,最後還探討了雲計算中的負載均衡。作者介紹
作者簡介:Peter Membrey
是獲得認證的IT專業人員,擁有15年以上使用Linux和開源方案的實戰經驗。他17歲就通過了RHCE(Red Hat認證工程師)認證,成為最年輕的認證得主,還曾有幸為Red Hat工作,撰寫過介紹開源方案的著作。
EelcoPlugge
本科畢業後就一直對信息安全領域很感興趣。他曾在McAfee擔任數據加密專家。現在,他在利物浦大學攻讀信息安全碩士學位,並利用零散時間寫書。他持有多個專業證書,並熱衷於Linux、網路安全和加密數據等諸多技術方面。
David Hows
來自澳大利亞,以優異成績畢業於信息與通信技術專業。他熱衷系統性能最佳化和系統安全,並一直堅持在這個枯燥的領域工作。
作品目錄
目 錄第1章 引言1
1.1 性能問題1
1.2 解決方案2
1.3 什麼是負載均衡3
1.3.1 負載均衡的前世3
1.3.2 負載均衡的今生3
1.3.3 縱向擴展3
1.3.4 橫向擴展4
1.4 負載均衡的實現4
1.4.1 網路的構成4
1.4.2 快取:網站的曲速引擎5
1.4.3 使用DNS進行負載均衡5
1.4.4 內容分發網路5
1.4.5 6P原則6
1.4.6 基礎知識6
1.4.7 HTTP負載均衡6
1.4.8 對資料庫進行負載均衡7
1.4.9 對網路連線進行負載均衡7
1.4.10 SSL負載均衡7
1.4.11 建立高可用性集群7
1.4.12 雲平台上的負載均衡7
1.4.13 IPv6:實現和概念8
1.4.14 下一步做什麼8
1.5 總結8
第2章 網站工作原理9
2.1 開始我們的旅程10
2.1.1 來自非IT背景10
2.1.2 開始瀏覽的過程10
2.1.3 通過DNS查找網站11
2.1.4 最終連線到伺服器11
2.1.5 伺服器自身12
2.1.6 連線到資料庫12
2.1.7 快取技術速覽12
2.1.8 回傳到客戶端13
2.2 進一步了解13
2.3 網路14
2.3.1 TCP14
2.3.2 DNS16
2.3.3 速度、頻寬和延遲17
2.3.4 網路連線小結19
2.4 HTML和Web19
2.4.1 HTML20
2.4.2 為什麼基於文本很重要20
2.4.3 為什麼連結很重要21
2.4.4 HTML小結22
2.4.5 瀏覽器22
2.5 Web內容23
2.5.1 靜態內容23
2.5.2 動態內容24
2.5.3 創建動態內容24
2.5.4 Web內容小結25
2.6 資料庫:最薄弱的環節26
2.7 總結26
第3章 內容快取:保持低負載28
3.1 什麼是快取29
3.2 走馬觀花29
3.2.1 基於瀏覽器的快取29
3.2.2 Web加速器30
3.2.3 Web代理31
3.2.4 透明Web代理32
3.2.5 邊緣快取33
3.2.6 平台快取34
3.2.7 套用快取35
3.2.8 資料庫快取36
3.2.9 僅僅是個開始……36
3.3 快取理論:快取為什麼這么難36
3.3.1 HTTP 1.0對快取的支持37
3.3.2 HTTP 1.1加強的快取支持37
3.3.3 解決方案38
3.3.4 快取不像看起來那么簡單39
3.4 Web代理39
3.4.1 Squid代理伺服器39
3.4.2 開始了40
3.4.3 故障排除41
3.4.4 透明代理42
3.4.5 發生了什麼42
3.4.6 獲得幫助44
3.4.7 Squid,代理中的瑞士軍刀44
3.5 邊緣快取:Varnish45
3.5.1 默認保守快取46
3.5.2 安裝Varnish46
3.5.3 配置並運行47
3.5.4 定製Varnish49
3.6 總結49
第4章 基於DNS的負載均衡51
4.1 DNS內幕51
4.1.1 IP位址51
4.1.2 問題52
4.1.3 解決方案52
4.1.4 回退一步53
4.2 DNS詳解53
4.2.1 親自查詢54
4.2.2 DNS查詢進階55
4.3 DNS快取56
4.3.1 查詢DNS快取56
4.3.2 Linux系統上的DNS快取58
4.3.3 實質內容58
4.4 BIND958
4.4.1 DNS DB的頭60
4.4.2 DNS資料庫記錄61
4.4.3 載入資料庫62
4.4.4 檢查配置檔案63
4.4.5 常見問題63
4.4.6 測試DNS63
4.5 基於DNS的負載均衡64
4.5.1 基於DNS的負載均衡的優勢65
4.5.2 基於DNS的負載均衡的問題65
4.6 總結66
第5章 內容分發網路67
5.1 選擇CDN服務提供商68
5.2 開始使用Rackspace68
5.3 向CDN賬戶添加內容69
5.4 Rackspace雲檔案API72
5.4.1 將API集成到PHP中72
5.4.2 用API密鑰進行認證72
5.4.3 建立連線和下線73
5.4.4 對容器進行操作74
5.4.5 對檔案進行操作79
5.4.6 其他有用的函式84
5.5 總結86
第6章 性能和可靠性計畫87
6.1 yoU MAke DInner In TiME87
6.1.1 理解88
6.1.2 決策90
6.1.3 設計與實現91
6.1.4 安裝92
6.1.5 測試、維護、評估93
6.1.6 計畫的重要性95
6.2 備份96
6.2.1 為什麼備份如此重要96
6.2.2 前方可能有麻煩97
6.2.3 必須實現自動化98
6.2.4 戰術備份98
6.2.5 戰略備份98
6.2.6 增量備份與全備份99
6.2.7 一定,一定要測試恢復!99
6.3 總結100
第7章 負載均衡基礎101
7.1 什麼是負載均衡101
7.2 有哪些可用的計算資源102
7.2.1 處理器102
7.2.2 記憶體103
7.2.3 使用top命令查看CPU和RAM的性能103
7.2.4 網路104
7.2.5 存儲(磁碟)105
7.3 負載均衡實戰105
7.4 指導原則106
7.4.1 深入理解系統106
7.4.2 規劃106
7.4.3 監測和測試107
7.5 總結107
第8章 對網站進行負載均衡108
8.1 測量Web伺服器的性能108
8.2 加速Apache HTTP110
8.2.1 禁用空載模組111
8.2.2 禁用DNS查詢111
8.2.3 採用壓縮112
8.2.4 FollowSymLinks和SymLinksIfOwnerMatch選項113
8.3 加速nginx114
8.3.1 worker_processes和worker_cpu_affinity114
8.3.2 Gzip壓縮115
8.4 對Web伺服器進行負載均衡116
8.4.1 配置117
8.4.2 準備IPVS伺服器118
8.4.3 準備工作伺服器120
8.4.4 測試負載均衡器121
8.5 劃分動態和靜態內容122
8.6 總結123
第9章 對資料庫進行負載均衡124
9.1 搭建MySQL Cluster124
9.1.1 安裝管理程式126
9.1.2 配置管理程式126
9.1.3 準備集群數據節點129
9.1.4 安裝MySQL Server和NDB守護進程129
9.1.5 配置NDB守護進程130
9.1.6 啟動集群節點上的服務131
9.1.7 更新MySQL的root用戶132
9.1.8 測試上述安裝和配置133
9.2 實施負載均衡135
9.2.1 建立負載均衡135
9.2.2 設定負載均衡伺服器136
9.2.3 設定工作伺服器137
9.2.4 測試負載均衡伺服器138
9.3 總結139
第10章 對網路進行負載均衡140
10.1 分擔負載140
10.2 TCP/IP141
10.2.1 TCP141
10.2.2 IP142
10.3 路由142
10.4 負載均衡伺服器144
10.5 IPVS146
10.5.1 IPVS的調度方式146
10.5.2 在Ubuntu上安裝IPVS148
10.5.3 在CentOS上安裝IPVS149
10.6 IPVSADM150
10.7 擴展IPVS151
10.8 IPVS進階153
10.8.1 修改調度算法153
10.8.2 分配權值154
10.8.3 協定與多台虛擬伺服器155
10.8.4 增加IP位址156
10.9 保存設定158
10.10 總結159
第11章 對SSL進行負載均衡160
11.1 什麼是SSL和TLS160
11.2 公鑰密碼學161
11.3 信任和數字證書認證機構162
11.4 TLS加密162
11.5 TLS負載均衡162
11.6 配置Web伺服器上的SSL163
11.6.1 配置Apache伺服器上的SSL165
11.6.2 配置nginx伺服器上的SSL166
11.7 SSL加速166
11.7.1 在Apache上啟用SSL加速166
11.7.2 在nginx上啟用SSL加速166
11.8 SSL前端167
11.9 測試SSL168
11.10 進一步配置170
11.10.1 在SSL前端中啟用SSL加速170
11.10.2 啟用快取171
11.10.3 指定要支持的協定172
11.10.4 指定加密方法172
11.11 LVS和SSL終結前端173
11.12 將負載均衡伺服器/SSL終端功能集成到同一台伺服器上175
11.13 總結175
第12章 使用集群提高可用性176
12.1 高可用性177
12.2 單一故障點178
12.3 集群化179
12.4 IPVS故障恢復180
12.4.1 在Ubuntu上安裝集群軟體包181
12.4.2 在CentOS上安裝集群軟體包182
12.4.3 配置集群182
12.4.4 常見配置問題185
12.4.5 檢查系統186
12.5 測試187
12.6 Web伺服器細節配置189
12.6.1 Ubuntu189
12.6.2 CentOS189
12.7 高級配置選項189
12.7.1 ha.cf189
12.7.2 ldirectord.cf190
12.7.3 Web伺服器190
12.8 總結190
第13章 雲端負載均衡191
13.1 雲計算191
13.2 虛擬化192
13.3 虛擬化資源195
13.4 管理虛擬資源196
13.4.1 平衡197
13.4.2 超量供給198
13.4.3 計畫199
13.5 雲的彈性200
13.6 用雲伺服器工作201
13.7 總結203
第14章 IPv6:影響和概念204
14.1 IPv6204
14.2 十六進制表示204
14.3 縮略表示205
14.4 IPv4地址的耗盡205
14.5 部署IPv6205
14.6 IPv6的優勢206
14.7 實現206
14.8 網際網路連線208
14.9 DNS208
14.10 作業系統208
14.11 網路208
14.11.1 單一網關的網路209
14.11.2 雙重網路209
14.12 軟體支持209
14.12.1 Apache209
14.12.2 nginx210
14.12.3 Varnish210
14.12.4 Memcached210
14.12.5 IPVS211
14.12.6 ldirectord211
14.12.7 heartbeat211
14.13 總結212
第15章 何去何從213
15.1 回顧213
15.2 監控214
15.3 安全215
15.3.1 訪問控制215
15.3.2 視圖216
15.3.3 常見的攻擊防護216
15.4 作業系統性能217
15.4.1 自己編譯217
15.4.2 裁剪218
15.4.3 高性能作業系統218
15.5 計畫218
15.6 總結219
索引220