第 1 部分 你好,Mesos ................................................... 1
1 初識 Mesos .............................................................................. 3
1.1 遇見 Mesos ......................................................................................................... 4
1.1.1 理解它如何工作 .................................................................................... 5
1.1.2 虛擬機和容器的比較 ............................................................................ 7
1.1.3 知道何時及為何使用 Mesos................................................................. 9
1.2 為什么我們要重新思考數據中心 .................................................................. 10
1.2.1 資源劃分 .............................................................................................. 11
1.2.2 應用部署 .............................................................................................. 12
1.3 Mesos 分布式架構 ........................................................................................... 13
1.3.1 masters .................................................................................................. 13
1.3.2 slaves .................................................................................................... 14
1.3.3 frameworks ........................................................................................... 15
1.4 小結 .................................................................................................................. 15
2 使用 Mesos 管理數據中心資源 .................................................17
2.1 Spark 簡要介紹 ................................................................................................ 18
2.1.1 獨立集群上的 Spark............................................................................ 18
2.1.2 Mesos 上的 Spark ................................................................................ 19
2.2 在 Mesos 上運行 Spark job ............................................................................. 21
2.2.1 在集合中尋找素數 .............................................................................. 22
2.2.2 獲取與打包代碼 .................................................................................. 23
2.2.3 提交作業 .............................................................................................. 24
2.2.4 觀察輸出 .............................................................................................. 24
2.3 進一步探索 ...................................................................................................... 26
2.3.1 Mesos UI .............................................................................................. 26
2.3.2 Spark UI................................................................................................ 26
2.4 小結 .................................................................................................................. 28
第 2 部分 Mesos 核心.................................................... 31
3 安裝 Mesos ............................................................................33
3.1 部署 Mesos ....................................................................................................... 34
3.1.1 Mesos 集群組件................................................................................... 34
3.1.2 開發環境的注意事項 .......................................................................... 35
3.1.3 生產環境的注意事項 .......................................................................... 36
3.2 安裝 Mesos 和 ZooKeeper ............................................................................... 38
3.2.1 使用安裝包部署 .................................................................................. 38
3.2.2 從源文件編譯并安裝 .......................................................................... 40
3.3 配置 Mesos 和 ZooKeeper ............................................................................... 43
3.3.1 ZooKeeper 配置 ................................................................................... 43
3.3.2 Mesos 配置........................................................................................... 45
3.4 安裝并配置 Docker.......................................................................................... 50
3.4.1 安裝 Docker ......................................................................................... 51
3.4.2 配置 Docker ......................................................................................... 53
3.4.3 配置 Docker 專用的 Mesos slaves ...................................................... 54
3.5 升級 Mesos ....................................................................................................... 54
3.5.1 升級 Mesos masters ............................................................................. 55
3.5.2 升級 Mesos slaves ................................................................................ 55
3.6 小結 .................................................................................................................. 56
4 Mesos 原理 ............................................................................57
4.1 調度和分配數據中心資源 .............................................................................. 57
4.1.1 理解資源調度 ...................................................................................... 58
4.1.2 理解資源分配 ...................................................................................... 59
4.1.3 定制 Mesos slave 資源和屬性 ............................................................ 61
4.2 使用容器隔離資源 .......................................................................................... 62
4.2.1 隔離并監控 CPU、內存和磁盤 ......................................................... 63
4.2.2 網絡監控和限速 .................................................................................. 65
4.3 了解容錯和高可用 .......................................................................................... 68
4.3.1 容錯 ...................................................................................................... 70
4.3.2 高可用 .................................................................................................. 70
4.3.3 處理出錯和升級 .................................................................................. 70
4.4 小結 .................................................................................................................. 76
5 日志記錄和調試 .....................................................................77
5.1 理解和配置 Mesos 日志記錄 .......................................................................... 78
5.1.1 日志文件的路徑和解釋 ...................................................................... 78
5.1.2 配置日志記錄 ...................................................................................... 80
5.2 調試 Mesos 集群及其任務 .............................................................................. 81
5.2.1 使用 Mesos Web 接口 ......................................................................... 82
5.2.2 使用內置命令行工具 .......................................................................... 89
5.2.3 使用 Mesosphere 的 mesos-cli 工具 ................................................... 90
5.3 小結 .................................................................................................................. 92
6 生產環境中的 Mesos ...............................................................93
6.1 監控 Mesos 和 Zookeeper 集群....................................................................... 94
6.1.1 監控 Mesos master ............................................................................... 94
6.1.2 監控 Mesos slave ................................................................................. 96
6.1.3 監控 ZooKeeper ................................................................................... 97
6.2 修改 Mesos master 的法定數目 ...................................................................... 99
6.2.1 添加 master 節點 ............................................................................... 100
6.2.2 移除 master 節點 ............................................................................... 100
6.2.3 替換 master 節點 ............................................................................... 101
6.3 安全和權限控制的實施 ................................................................................ 101
6.3.1 Slave 和 framework 的身份認證....................................................... 102
6.3.2 用戶授權和訪問控制列表 ................................................................ 104
6.3.3 framework 速率限制.......................................................................... 107
6.4 小結 ................................................................................................................ 110
第 3 部分 運行 Mesos................................................... 113
7 使用 Marathon 部署應用 ....................................................... 115
7.1 了解 Marathon................................................................................................ 115
7.1.1 探索 Marathon 的 Web 接口和 API .................................................. 117
7.1.2 服務發現和路由 ................................................................................ 118
7.2 部署 Marathon 和 HAProxy .......................................................................... 121
7.2.1 安裝并配置 Marathon........................................................................ 121
7.2.2 安裝并配置 HAProxy........................................................................ 124
7.3 創建并伸縮應用 ............................................................................................ 127
7.3.1 部署簡單的應用 ................................................................................ 127
7.3.2 部署 Docker 容器 .............................................................................. 130
7.3.3 執行健康檢查和滾動應用更新 ........................................................ 131
7.4 創建應用組 .................................................................................................... 134
7.4.1 理解應用組的構成 ............................................................................ 134
7.4.2 部署應用組 ........................................................................................ 135
7.5 日志和調試 .................................................................................................... 137
7.5.1 配置 Marathon 日志........................................................................... 137
7.5.2 調試 Marathon 應用和任務............................................................... 138
7.6 小結 ................................................................................................................ 140
8 使用 Chronos 管理計劃任務 .................................................. 143
8.1 了解 Chronos.................................................................................................. 144
8.1.1 探索 Chronos 的 Web 接口和 API .................................................... 145
8.2 安裝并配置 Chronos...................................................................................... 147
8.2.1 先決條件的檢驗 ................................................................................ 147
8.2.2 安裝 Chronos...................................................................................... 148
8.2.3 配置 Chronos...................................................................................... 149
8.3 使用簡單的作業來工作 ................................................................................ 150
8.3.1 創建基于計劃的作業 ........................................................................ 150
8.3.2 使用 Docker 創建基于計劃的作業 .................................................. 153
8.4 使用復雜的作業來工作 ................................................................................ 155
8.4.1 組合基于計劃和基于依賴的作業 .................................................... 155
8.4.2 形象化作業的依賴關系 .................................................................... 158
8.5 監控 Chronos 作業的輸出和狀態................................................................. 159
8.5.1 作業失敗事件的通知和監控 ............................................................ 159
8.5.2 通過 Mesos 觀察作業的標準輸出和標準錯誤................................ 161
8.6 小結 ................................................................................................................ 162
9 使用 Aurora 部署應用和管理計劃任務 .................................... 165
9.1 Aurora 簡介 .................................................................................................... 166
9.1.1 Aurora 調度器 .................................................................................... 167
9.1.2 Thermos 執行器和觀察者 ................................................................. 167
9.1.3 Aurora 的用戶和管理員客戶端 ........................................................ 168
9.1.4 Aurora DSL(Domain-Speci?c Language,特定領域語言)........... 169
9.2 部署 Aurora .................................................................................................... 169
9.2.1 在開發環境嘗試 Aurora.................................................................... 170
9.2.2 構建和安裝 Aurora............................................................................ 171
9.2.3 配置 Aurora........................................................................................ 174
9.3 部署應用 ........................................................................................................ 178
9.3.1 部署一個簡單的應用 ........................................................................ 179
9.3.2 部署基于 Docker 的應用 .................................................................. 182
9.4 管理計劃任務 ................................................................................................ 184
9.4.1 創建 Cron 作業 .................................................................................. 184
9.4.2 創建基于 Docker 的 Cron 作業 ........................................................ 185
9.5 管理 Aurora .................................................................................................... 187
9.5.1 管理用戶和配額 ................................................................................ 187
9.5.2 執行維護 ............................................................................................ 189
9.6 小結 ................................................................................................................ 190
10 framework 開發 ................................................................ 191
10.1 framework 基礎............................................................................................ 192
10.1.1 編寫 framework 的時機和緣由....................................................... 194
10.1.2 調度器的實現 .................................................................................. 194
10.1.3 執行器的實現 .................................................................................. 197
10.2 調度器開發 .................................................................................................. 201
10.2.1 使用調度器 API............................................................................... 202
10.2.2 使用 SchedulerDriver....................................................................... 204
10.3 執行器開發 .................................................................................................. 205
10.3.1 使用執行器 API............................................................................... 205
10.3.2 使用執行器驅動程序 ...................................................................... 207
10.4 運行 framework............................................................................................ 208
10.4.1 在開發環境中部署 .......................................................................... 208
10.4.2 生產環境部署的注意事項 .............................................................. 210
10.5 小結 .............................................................................................................. 211
附錄 A 案例研究 :Mesosphere DCOS,企業版 Mesos 分布式集群.. 213
附錄 B Mesos 框架與工具的列表 ................................................. 225