內容簡介
《PaaS實現與運維管理:基於Mesos +Docker+ELK的實戰指南》主要闡述了雲計算中PaaS平台的實現與運維管理,分為四大部分,分別是概念模型、基礎資源、平台實現與運維管理,共十五章。第一部分闡述了運維與開發之間的關係、這層關係存在的矛盾,以及PaaS是如何有效緩解其矛盾的;第二部分勾勒出了數據中心的計算、網路、存儲三大資源的主幹,避免讓人陷入上層的種種產品中;第三部分通過開源產品來構建一個完整的PaaS平台,包括資源管理、任務調度、計算單元打包、分散式協調、日誌集中等;第四部分對運維管理進行了實踐。
《PaaS實現與運維管理:基於Mesos +Docker+ELK的實戰指南》適合運維工程師、運維管理人員,以及希望在PaaS上運行分散式、可伸縮、高可用的後端開發工程師閱讀。
目錄
第一部分 概念模型
第1章 分散式PaaS平台介紹 2
1.1 什麼是PaaS 2
1.1.1 開發與運維之間的困局 2
1.1.2 DevOps的自動化 3
1.1.3 雲計算的IaaS 4
1.1.4 PaaS的到來 4
1.1.5 PaaS的約束與開放 4
1.1.6 PaaS解決的具體問題 5
1.2 什麼是分散式計算 6
1.2.1 分散式計算與PaaS 6
1.2.2 分散式平台的挑戰 7
第2章 PaaS模型與特徵 10
2.1 主流PaaS平台架構 10
2.1.1 谷歌GAE 10
2.1.2 AEB 11
2.1.3 Cloud Foundry 13
2.1.4 Heroku 14
2.2 PaaS與12-Factor 15
2.2.1 基準代碼(Codebase) 15
2.2.2 依賴(Dependency) 16
2.2.3 配置(Config) 17
2.2.4 後端服務(Backing Services) 18
2.2.5 構建(Build)、發布(Release)、運行(Run) 19
2.2.6 進程(Process) 20
2.2.7 連線埠綁定(Port Binding) 21
2.2.8 並發(Concurrency) 21
2.2.9 快捷性(Disposable) 22
2.2.10 開發/生產環境等價(Dev/Prod Parity) 23
2.2.11 日誌(Log) 24
2.2.12 管理進程(Admin Process) 25
2.3 PaaS與Reaction宣言 26
2.3.1 回響(Responsive) 26
2.3.2 韌性(Resilient) 26
2.3.3 彈性(Elastic) 27
2.3.4 訊息驅動(Message Driven) 28
第二部分 基礎原理
第3章 計算資源 30
3.1 圖靈機與馮·諾伊曼模型 30
3.2 伺服器的種類 34
3.3 一切都是二進制 37
3.3.1 整數表示法 38
3.3.2 文本表示法 39
3.3.3 音頻信息表示法 41
3.4 作業系統——計算機系統的指揮官 42
3.4.1 作業系統解決的問題 42
3.4.2 企業級作業系統 43
3.4.3 伺服器虛擬化 47
3.5 進程——資源聚合的抽象體 49
3.5.1 計算單元的構建 49
3.5.2 計算請求的拆解 51
第4章 網路資源 53
4.1 協定分層 53
4.1.1 OSI網路體系模型 54
4.1.2 OSI與TCP/IP協定簇 55
4.1.3 交換、選路與傳輸 56
4.2 網路物理設備 58
4.2.1 連線與接口 59
4.2.2 二層交換機 62
4.2.3 路由及三層交換 63
4.2.4 四~七層網路設備 64
4.2.5 現實網路構成 65
4.3 網路邏輯拓撲 65
4.4 對網路拓撲的考慮 66
4.5 對物理布線的考慮 67
4.6 網路虛擬化與SDN 70
第5章 存儲資源 73
5.1 俯瞰存儲系統 73
5.1.1 數據存儲功能分類 73
5.1.2 檔案存儲的三個層級 74
5.2 磁碟與磁碟陣列 77
5.2.1 硬碟的物理構造 77
5.2.2 磁碟陣列 79
5.2.3 SCSI協定 81
5.3 存儲、計算分離 82
5.3.1 磁碟櫃與盤陣 82
5.3.2 FC存儲網路 83
5.3.3 FC協定棧 86
5.3.4 FC定址過程 87
5.3.5 FC交換機與適配器 88
5.3.6 FCoE與iSCSI 89
5.4 存儲訪問類型 90
5.4.1 NAS與SAN 90
5.4.2 分散式存儲 92
第三部分 平台實現
第6章 平台功能與架構 96
6.1 平台運維需求 96
6.1.1 軟體配置 96
6.1.2 服務部署 97
6.1.3 服務發現 97
6.1.4 監控恢復 97
6.2 平台功能劃分 97
6.3 平台高階架構 100
6.4 企業套用遷移 102
6.4.1 企業套用很“厚重” 102
6.4.2 套用部署架構 102
6.4.3 企業套用調整 104
第7章 計算單元Docker 108
7.1 Docker介紹 108
7.1.1 Docker是什麼 108
7.1.2 Docker術語 109
7.1.3 Docker安裝 111
7.2 Docker容器命令 112
7.2.1 run命令 112
7.2.2 start命令 115
7.2.3 stop命令 116
7.2.4 restart命令 116
7.2.5 attach命令 116
7.2.6 ps命令 116
7.2.7 inspect命令 117
7.3 Docker鏡像命令 119
7.3.1 search、pull、push命令 120
7.3.2 commit命令 120
7.3.3 image、diff、rmi命令 121
7.3.4 save、load、export、import命令 121
7.4 Docker網路與連結 122
7.4.1 Docker網路模式 122
7.4.2 pipework管理網路 125
7.4.3 容器連結與數據卷 127
7.5 Dockerfile 129
7.5.1 基本指令集 130
7.5.2 環境指令集 131
7.5.3 數據指令集 132
7.5.4 ENTRYPOINT指令 132
第8章 分散式協調ZooKeeper 134
8.1 ZooKeeper介紹 134
8.1.1 ZooKeeper是什麼 134
8.1.2 ZooKeeper架構 135
8.1.3 數據模型 136
8.1.4 監聽與通知 139
8.1.5 API集合 139
8.1.6 會話 140
8.1.7 觀察者 141
8.2 ZooKeeper使用 141
8.2.1 快速安裝 141
8.2.2 基本操作 143
8.2.3 配置參數 145
8.2.4 動態重配置 149
8.2.5 監控 152
8.3 ZooKeeper進階 157
8.3.1 分組與權重 158
8.3.2 Paxos算法 159
8.3.3 ZAB協定 163
8.3.4 分散式協調場景 165
第9章 資源管理Mesos 167
9.1 Mesos介紹 167
9.1.1 資源管理需求 167
9.1.2 Mesos的起源 169
9.2 Mesos架構與工作流 169
9.2.1 Mesos架構組件 169
9.2.2 Mesos資源管理的工作流程 170
9.3 Mesos安裝配置 172
9.3.1 安裝預先準備 172
9.3.2 構建Mesos 173
9.3.3 啟動Mesos 174
9.3.4 高可用Mesos 178
9.3.5 Slave移除限速 182
9.4 Mesos運維 183
9.4.1 認證管理 183
9.4.2 監控管理 186
9.4.3 容器網路限速 192
9.4.4 Framework API限速 194
9.4.5 Restful接口 195
9.4.6 配置參數 196
9.5 Mesos資源分配 197
9.5.1 DRF算法 197
9.5.2 DRF權重 199
第10章 服務調度框架 Marathon 200
10.1 Marathon介紹 200
10.1.1 服務調度平台 200
10.1.2 Marathon實體模型 201
10.2 Marathon使用 203
10.2.1 安裝啟動 203
10.2.2 運行Shell程式 204
10.2.3 運行遠程資源 208
10.2.4 Artifact Store 209
10.3 Docker容器運行 211
10.3.1 前提準備條件 211
10.3.2 連線埠資源分配 212
10.3.3 容器連線埠分配 215
10.3.4 其他使用方法 216
10.4 Marathon管理 217
10.4.1 套用組 217
10.4.2 策略約束 219
10.4.3 健康檢查 221
10.4.4 套用部署 223
10.4.5 事件匯流排 227
10.4.6 命令行參數 229
10.5 服務發現 231
10.5.1 服務發現方法 231
10.5.2 Marathon方案 232
10.5.3 Mesos-DNS 235
10.5.4 Bamboo 239
10.6 Chronos作業調度 241
10.6.1 作業調度框架 241
10.6.2 安裝運行 241
10.6.3 作業示例 242
10.6.4 REST API 243
第11章 大數據調度框架Spark 245
11.1 Apache Spark介紹 245
11.1.1 Apache Spark是什麼 245
11.1.2 Lambda架構 246
11.1.3 Spark生態系統 247
11.2 Spark數據處理 248
11.2.1 Spark 運行模式 248
11.2.2 Spark Standalone模式 252
11.2.3 Spark on Mesos 255
11.2.4 Spark Streaming 257
第12章 日誌集中管理ELK 261
12.1 日誌集中 261
12.1.1 日誌集中介紹 261
12.1.2 日誌集中架構 262
12.1.3 日誌集中框架 264
12.2 Logstash 266
12.2.1 Logstash介紹 266
12.2.2 快速安裝 267
12.2.3 配置說明 269
12.2.4 部署架構 282
12.2.5 處理流程 285
12.2.6 input外掛程式 286
12.2.7 output外掛程式 292
12.2.8 filter外掛程式 296
12.2.9 codec外掛程式 299
12.3 Elasticsearch 300
12.3.1 基本概念 300
12.3.2 安裝與使用 304
12.3.3 REST API 305
12.3.4 集群設定 309
12.3.5 備份恢復 314
12.3.6 監控管理 315
12.4 Kibana 317
12.4.1 Kibana介紹 317
12.4.2 discover功能 319
12.4.3 visualize功能 324
12.4.4 Dashboard功能 327
第四部分 運維管理
第13章 配置管理 330
13.1 配置管理系統分析 331
13.1.1 服務模型進行分層 331
13.1.2 各IDC團隊發現CI 332
13.1.3 IDC管理團隊定義CI屬性 333
13.1.4 確定CI之間的關聯 336
13.2 配置管理系統設計 338
13.2.1 用戶界面設計 339
13.2.2 許可權控制、規則定義和OPENAPI 341
13.2.3 數據模型的設計 343
13.3 配置管理數據準確性的保證 345
13.3.1 識別CI的OWNER 345
13.3.2 識別CI的生命周期、關聯運維流程 346
13.3.3 數據有效性的審計 346
第14章 監控管理 348
14.1 運維監控管理的問題與價值 348
14.1.1 監控管理的無形價值 349
14.1.2 監控平台建立的基礎 350
14.1.3 監控管理的WANT原則 350
14.2 對運維監控平台的需求分析 352
14.2.1 一次監控過程,調度、規則、告警 352
14.2.2 數據圖形化:百分位裁剪、趨勢分析、常態分配 358
14.2.3 開源的借鑑與選擇:Zabbix和Nagios 361
14.2.4 商業與開源:最後的決策 372
14.3 JMX監控原理解析 373
14.3.1 JMX的體系結構 374
14.3.2 一個完整的JMX體系架構實例 376
14.3.3 通過JMX訪問WebLogic Server MBean 379
14.4 SNMP監控原理解析 383
14.4.1 SNMP協定解析:MIB庫與訊息類型 383
14.4.2 使用SNMP4J實現伺服器監控 386
14.4.3 Linux下的監控實現:NET-SNMP 390
14.4.4 MIB庫瀏覽工具:ManageEngine 391
第15章 運維管理 392
15.1 服務級別管理,IT與業務的一致性 392
15.1.1 客戶滿意度與期望 393
15.1.2 服務目錄——IT服務的菜譜 396
15.1.3 從巨觀到可操作性的服務 397
15.2 變更管理,使服務有效傳遞 399
15.2.1 變更控制的角色、階段 399
15.2.2 變更管理的六個原則 401
15.2.3 變更分類與風險定級 402
15.2.4 表單、步驟、模板與日曆 405
15.3 事件管理 409
15.3.1 分類管理與評價體系 409
15.3.2 任務分發、協同與時效 411
15.3.3 內部上報要求 412
15.3.4 重大事件處理 413
15.4 人員管理:開放與分享 415
15.4.1 企業社交管理 415
15.4.2 目標管理,做好績效 417
15.4.3 知識管理,人員成長 417
15.4.4 時間管理,個人效率 420
15.5 PaaS下的運維發展之路 421