內容簡介
本書是運維領域的“集大成”之作,精選了運維領域重要的6大主題:
(1)自動化運維
(2)系統運維
(3)雲與虛擬化
(4)Web運維
(5)遊戲運維
(6)資料庫運維
一共涵蓋14個重要的知識點。所有的知識點既有理論的指導,又有方法論的提煉;既有來自這些專家們共事過的企業的商業案例,又有針對企業常見問題的解決方案。
圖書目錄
第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.2 PHP開發、架構、運維問題及解決思路 153
7.2.1 運維對PHP研發提要求 153
7.2.2 運維參與PHP項目架構設計 154
7.2.3 PHP運維常見問題及解決之道 156
7.3 PHP進程部署和配置、代碼發布 157
7.3.1 PHP進程的部署 157
7.3.2 PHP配置檔案變更 161
7.3.3 PHP配置項 162
7.3.4 PHP進程部署及配置檔案管理實踐 164
7.3.5 PHP代碼發布 165
7.3.6 PHP代碼發布實踐:代碼發布系統 167
7.4 PHP性能分析 170
7.4.1 性能問題概述 170
7.4.2 PHP性能問題 171
7.4.3 性能分析方法 172
7.4.4 PHP性能分析實踐:性能分析系統 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.3 WD 1TB機械硬碟啟動Windows XP實驗 210
9.2.4 Intel 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.1 DHCP客戶端獲取IP位址失敗 247
11.4.2 TFTP載入失敗 248
11.4.3 TFTP Client互動後 無回響 248
11.4.4 yum安裝失敗 249
11.4.5 Linux核心無法識別新硬體 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.4 Nginx站點目錄及檔案URL訪問控制 284
12.4.1 根據擴展名限制程式和檔案訪問 284
12.4.2 禁止訪問指定目錄下的所有檔案和目錄 285
12.4.3 限制網站來源IP訪問 286
12.4.4 配置Nginx,禁止非法域名解析訪問企業網站 287
12.5 Nginx圖片及目錄防盜鏈解決方案 288
12.6 Nginx錯誤頁面的優雅顯示 295
12.6.1 生產環境中常見的HTTP狀態碼列表 295
12.6.2 為什麼要配置錯誤頁面優雅顯示 295
12.7 Nginx站點目錄檔案及目錄許可權最佳化 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 遊戲運維人的發展 325
13.3 小結 326
第14章 資料庫平台建設實戰 327
14.1 規範建立 327
14.1.1 安裝規範 328
14.1.2 配置規範 329
14.1.3 賬號、許可權規範 335
14.1.4 目錄規範 336
14.1.5 其他規範 337
14.2 架構設計 339
14.2.1 架構圖 339
14.2.2 各個模組介紹 340
14.3 功能介紹與實踐 341
14.3.1 操作部分 341
14.3.2 日誌部分 349
14.3.3 資產部分 351
14.3.4 信息展示 353
14.3.5 入口(LVS/Redir) 354
14.4 後期功能展望 357
14.5 小結 357
附錄A 求職者與面試官 358