第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-Specific 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