推薦序
前 言
第1章 自動化運維之深度解碼 1
1.1 概述 1
1.2 運維自動化的三重境界 3
1.3 運維自動化的睏境和價值 4
1.3.1 運維自動化的睏境 4
1.3.2 運維自動化的價值 4
1.4 運維自動化的多維解讀 5
1.4.1 基於應用變更場景的維度劃分 5
1.4.2 基於係統層次的維度劃分 8
1.4.3基於與業務程序耦閤緊密程度的維度劃分 8
1.4.4 麵嚮服務的自動化能力劃分 9
1.5 運維自動化的方法論 11
1.6 運維自動化係統的實現 12
1.6.1 DNS管理係統 12
1.6.2 CMDB管理係統 13
1.6.3 名字服務中心係統 13
1.6.4 持續部署管理係統 14
1.6.5 運維調度管理係統 15
1.7 運維自動化係統的API參考實現 16
1.8 運維自動化依賴的團隊模型 17
1.8.1 團隊的能力模型 17
1.8.2 團隊的驅動模型 18
1.8.3 團隊的技能模型 18
1.8.4 參考的運維團隊組織結構 19
1.9 小結 19
第2章利用Facter和Django快速構建CMDB 20
2.1 CMDB簡介 21
2.2 開源CMDB介紹 21
2.2.1 OneCMDB介紹 21
2.2.2 CMDBuild介紹 22
2.2.3 其他的開源CMDB 23
2.3 Puppet及Facter介紹 24
2.3.1 什麼是Puppet 24
2.3.2 為什麼是Puppet 25
2.3.3 什麼是Facter 25
2.3.4 Facter的特點 25
2.3.5 Facter變量 26
2.4 如何利用Python獲取Facts 27
2.4.1 工作原理 27
2.4.2 利用Python腳本獲取Facts 27
2.5使用Django快速構建CMDB係統 28
2.5.1 Django介紹 28
2.5.2 Django安裝 29
2.5.3 Django常用命令 30
2.5.4 Django的配置 30
2.6 高級進階 44
2.6.1 曆史查詢功能 44
2.6.2 API功能 45
2.6.3 數據錶結構 48
2.6.4 用戶管理功能 50
2.6.5 用戶組管理功能 51
2.7 小結 53
第3章數據中心搬遷中的x86自動化運維 54
3.1 數據中心搬遷準備 54
3.1.1 數據中心搬遷介紹 54
3.1.2 搬遷環境介紹 55
3.1.3 搬遷前的準備工作 56
3.1.4 搬遷信息收集 56
3.2利用VMware腳本簡化虛擬化層的搬遷 58
3.2.1通過腳本完成ESXI安裝後的基礎設置 58
3.2.2 批量掛載數據盤 63
3.2.3 批量注冊虛擬機 67
3.2.4 vCenter目錄結構的調整 68
3.2.5批量更改虛擬機名稱及port group 69
3.2.6批量設置虛擬機版本和CPU、內存保留值 70
3.3利用批處理與Shell腳本簡化邏輯節點的搬遷 71
3.3.1 邏輯節點切換腳本的思路 71
3.3.2利用批處理腳本簡化Windows邏輯節點的搬遷 72
3.3.3利用Shell腳本簡化Linux邏輯節點的搬遷 78
3.3.4通過SFTP和WMIC指令將腳本文件上傳至所有虛擬機 86
3.3.5 搬遷期間的注意事項 87
3.4 小結 87
第4章集中配置管理工具Puppet 88
4.1如何同步puppet-agent端上的常用服務 89
4.2如何在puppet-agent端上自動安裝常用的軟件包 90
4.3如何自動同步puppet-agent端的yum源 90
4.4如何根據不同名字的節點機器推送不同的文件 92
4.5如何根據節點機器名來選擇性地執行Shell程序 95
4.6如何快速同步puppet-server端的www目錄文件 97
4.7如何利用ERB模闆自動配置Apache虛擬主機 102
4.8如何利用ERB模闆自動配置Nginx虛擬主機 105
4.9 小結 110
第5章深度實踐iptables 111
5.1 禁用連接追蹤 111
5.1.1 排查連接追蹤導緻的故障 111
5.1.2 分析連接追蹤的原理 113
5.1.3 禁用連接追蹤的方法 114
5.1.4 確認禁用連接追蹤的效果 117
5.2 慎重禁用ICMP協議 117
5.2.1禁用ICMP協議導緻的一則故障案例 117
5.2.2 MTU發現的原理 119
5.2.3 解決問題的方法 121
5.3 網絡地址轉換在實踐中的案例 121
5.3.1 源地址NAT 121
5.3.2 目的地址NAT 122
5.4深入理解iptables的各種錶和各種鏈 123
5.5 小結 125
第6章使用systemd管理Linux係統服務 126
6.1 systemd和sysVinit之間的關係 126
6.1.1 sysVinit方式下係統的啓動特點 127
6.1.2 systemd方式下係統的啓動特點 127
6.2 systemd的原理和啓動順序 128
6.2.1 sysVinit的啓動順序 128
6.2.2 systemd的啓動順序 130
6.3 systemd的進程控製命令 135
6.3.1 systemctl命令 136
6.3.2 hostnamectl命令 136
6.3.3 localectl命令 137
6.3.4 loginctl命令 137
6.3.5 timedatectl命令 138
6.4 systemd服務管理 138
6.4.1編寫Nginx的sysVinit啓動腳本 138
6.4.2編寫Nginx的systemd啓動腳本 140
6.4.3 systemd的其他功能 142
6.5 優化 146
6.5.1使用systemd-analyze優化啓動時間 146
6.5.2 使用systemd journal功能 148
6.6 小結 148
第7章PHP運維實踐 149
7.1 PHP再認識 150
7.1.1 PHP進程的工作方式 150
7.1.2 PHP代碼的編譯和部署 151
7.1.3 PHP內部實現和生命周期 151
7.1.4 PHP在互聯網技術棧的位置 152
7.2PHP開發、架構、運維問題及解決思路 153
7.2.1 運維對PHP研發提要求 153
7.2.2運維參與PHP項目架構設計 154
7.2.3PHP運維常見問題及解決之道 156
7.3 PHP進程部署和配置、代碼發布 157
7.3.1 PHP進程的部署 157
7.3.2 PHP配置文件變更 161
7.3.3 PHP配置項 162
7.3.4PHP進程部署及配置文件管理實踐 164
7.3.5 PHP代碼發布 165
7.3.6PHP代碼發布實踐:代碼發布係統 167
7.4 PHP性能分析 170
7.4.1 性能問題概述 170
7.4.2 PHP性能問題 171
7.4.3 性能分析方法 172
7.4.4PHP性能分析實踐:性能分析係統 181
7.5 PHP故障處理與監控 182
7.5.1 PHP故障分類及處理思路 183
7.5.2 業務監控和故障發現 184
7.5.3 PHP故障消除的方法 186
7.5.4 故障分析案例 187
7.6 小結 189
第8章應用係統運行分析 190
8.1 分析模型 191
8.1.1 數據采集 191
8.1.2 數據模型 194
8.2 運行分析平颱建設 199
8.2.1 數據采集接口 199
8.2.2 數據分析模塊 200
8.2.3 推廣 200
8.3 呼叫中心係統運行分析示例 201
8.3.1 確定分析方案 201
8.3.2 問題分析案例介紹 202
8.4 小結 203
第9章虛擬化中存儲配置典型場景:啓動風暴 204
9.1 oVirt虛擬化平颱配置介紹 205
9.1.1 存儲配置背景知識 205
9.1.2 模闆與實例同一存儲 206
9.1.3 模闆與實例分離存儲 207
9.1.4無狀態實例的硬盤與快照分離存儲 207
9.2 啓動風暴相關係列實驗 208
9.2.1 模闆配置 208
9.2.2 實驗腳本 208
9.2.3WD 1TB機械硬盤啓動Windows XP實驗 210
9.2.4Intel 480GB SSD啓動WindowsXP實驗 212
9.2.5 實驗結論 214
9.3私有雲中處理啓動風暴的常用方法 214
9.3.1 啓動排隊 214
9.3.2 存儲分層選擇 215
9.3.3其他提升桌麵雲存儲性能的方式 217
9.4 小結 219
第10章私有雲桌麵網絡組建 220
10.1 桌麵雲常用網絡 220
10.1.1 NAT網絡 220
10.1.2 橋接網絡 223
10.1.3 VLAN網絡 226
10.1.4 Access模式 226
10.1.5 Trunk模式 229
10.1.6 Open vSwitch 231
10.2 oVirt/OpenStack的桌麵網絡應用 232
10.2.1 oVirt/OpenStack組網方式 232
10.2.2 應用場景舉例 237
10.3 小結 239
第11章淺談服務器交付的那些事兒 240
11.1 設備簽收的學問 240
11.2 服務器設置 241
11.3 Cobbler的流程與規劃 244
11.4 服務器安裝時遇到的各種坑 247
11.4.1DHCP客戶端獲取IP地址失敗 247
11.4.2 TFTP加載失敗 248
11.4.3 TFTP Client交互後 無響應 248
11.4.4 yum安裝失敗 249
11.4.5Linux內核無法識彆新硬件 250
11.4.6惡意PXE啓動導緻原有係統被誤裝 250
11.5 交接後的故事 250
11.6 小結 252
第12章 企業級Nginx Web服務優化實戰 254
12.1 Nginx基本安全優化 254
12.1.1調整參數隱藏Nginx軟件版本號信息 254
12.1.2 更改源碼隱藏Nginx軟件名及版本號 256
12.1.3更改Nginx服務的默認用戶 259
12.2 根據參數優化Nginx服務性能 260
12.2.1優化Nginx服務的worker進程個數 260
12.2.2優化綁定不同的Nginx進程到不同的CPU上 262
12.2.3 Nginx事件處理模型優化 265
12.2.4調整Nginx單個進程允許的客戶端最大連接數 266
12.2.5配置Nginx worker進程的最大打開文件數 267
12.2.6優化服務器域名的散列錶大小 267
12.2.7 開啓高效文件傳輸模式 269
12.2.8優化Nginx連接參數,調整連接超時時間 269
12.2.9上傳文件大小的限製(動態應用) 272
12.2.10 FastCGI相關參數調優(配閤PHP引擎動態服務) 273
12.2.11 配置Nginx gzip壓縮實現性能優化 277
12.2.12 配置Nginx expires緩存實現性能優化 279
12.3 Nginx日誌相關的優化與安全 283
12.3.1編寫腳本實現Nginx access日誌輪詢 283
12.3.2不記錄不需要的訪問日誌 284
12.3.3 訪問日誌的權限設置 284
12.4Nginx站點目錄及文件URL訪問控製 284
12.4.1根據擴展名限製程序和文件訪問 284
12.4.2禁止訪問指定目錄下的所有文件和目錄 285
12.4.3 限製網站來源IP訪問 286
12.4.4配置Nginx,禁止非法域名解析訪問企業網站 287
12.5Nginx圖片及目錄防盜鏈解決方案 288
12.6 Nginx錯誤頁麵的優雅顯示 295
12.6.1生産環境中常見的HTTP狀態碼列錶 295
12.6.2為什麼要配置錯誤頁麵優雅顯示 295
12.7Nginx站點目錄文件及目錄權限優化 298
12.8 Nginx防爬蟲優化 300
12.9利用Nginx限製HTTP的請求方法 302
12.10 使用CDN做網站內容加速 302
12.10.1 什麼是CDN 302
12.10.2 CDN的特點 303
12.10.3 企業使用CDN的基本 要求 304
12.11 Nginx程序架構優化 304
12.12 使用普通用戶啓動Nginx(監牢模式) 305
12.12.1 為什麼要讓Nginx服務使用普通用戶 305
12.12.2 給Nginx服務降權的解決方案 305
12.12.3 給Nginx服務降權實戰 306
12.13 控製Nginx並發連接數量 308
12.14 控製客戶端請求Nginx的速率 312
12.15 小結 314
第13章 遊戲運維的思考 315
13.1 遊戲運維最關鍵的幾件事 315
13.1.1 安全 315
13.1.2 穩定 318
13.1.3 高效 322
13.1.4 成本節約 323
13.2 遊戲運維人的發展 32
· · · · · · (
收起)