第 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