《微服务运维实战(第1卷)》详细讲解微服务和容器在软件持续集成和部署中的应用。将微服务打包成不可变的容器,通过配置管理工具实现自动化测试和持续部署,同时保证零停机且随时能回滚。采用集中日志对集群进行记录和监控,轻松实现服务器扩展。作者通过讲解相关工具(Docker、Kubernetes、Ansible、Consul等)的用法,分享自己的工作经验,帮助读者构建高效、可靠、可快速恢复的软件系统。
目录
- 第1章 DevOps的理想 1
- 1.1 持续集成、交付和部署 2
- 架构 3
- 部署 4
- 编排 5
- 1.2 部署流水线的曙光 5
- 第2章 实现突破——持续部署、微服务和容器 7
- 2.1 持续集成 7
- 推送到代码库 9
- 静态分析 10
- 部署前测试 12
- 打包并部署到测试环境 13
- 部署后测试 13
- 2.2 持续交付和部署 15
- 微服务 18
- 容器 18
- 2.3 三个火枪手——持续部署、微服务和容器的协作 20
- 第3章 系统架构 23
- 3.1 单块应用 24
- 微服务 27
- 3.2 单块应用与微服务的比较 29
- 运维和部署的复杂性 30
- 规模 31
- 部署、回滚和故障隔离 32
- 承诺期限 32
- 3.3 微服务的最佳实践 41
- 容器 41
- 3.4 代理微服务或API网关 44
- 反向代理 44
- 极简主义方法 45
- 配置管理 45
- 跨职能团队 45
- API版本化 46
- 最后的思考 46
- 第4章 使用Vagrant和Docker搭建开发环境 49
- 4.1 结合微服务架构和容器技术 50
- Vagrant与Docker 52
- 4.2 开发环境搭建 55
- 开发环境使用 58
- 第5章 部署流水线的实现——初始阶段 63
- 5.1 启动持续部署虚拟机 63
- 5.2 部署流水线步骤 65
- 构建Docker容器 67
- 第6章 Docker世界中的配置管理 79
- 6.1 CFEngine 79
- Puppet 80
- Chef 80
- 最后几点思考 82
- 配置生产环境 83
- 设置Ansible Playbook 86
- 第7章 部署管道的实现——中间阶段 91
- 7.1 在生产服务器上部署容器 92
- 检查清单 97
- 第8章 发现服务——分布式服务的关键 99
- 8.1 服务注册表 101
- 服务注册 101
- 主动注册 102
- 注册服务 103
- 服务发现 103
- 服务发现工具 104
- 手动配置 106
- Zookeeper 106
- etcd 107
- 配置Registrator 130
- Consul Health Checks、Web UI和数据中心 138
- 8.2 服务发现工具的比较 141
- 第9章 代理服务 143
- 9.1 反向代理服务 144
- 代理服务对我们的项目有何帮助 146
- nginx 146
- nginx 146
- HAProxy 158
- 9.2 代理工具的比较 163
- 第10章 部署流水线的实现——后期阶段 167
- 10.1 启动容器 169
- 10.2 集成服务 170
- 10.3 运行部署后测试 171
- 10.4 将测试容器推送到镜像库 172
- 10.5 检查表 173
- 第11章 部署流水线的自动化实现 175
- 11.1 部署流水线的步骤 175
- Playbook和Role 178
- 部署前任务 179
- 部署任务 182
- 部署后任务 185
- 11.2 运行自动部署流水线 186
- 第12章 持续集成、交付和部署的工具 187
- 12.1 CI/CD工具对比 188
- CI/CD工具的简史 189
- 运行Jenkins作业 203
- 创建Jenkins Workflow作业 206
- 安装Jenkins Multibranch Workflow和Jenkinsfile 215
- 最后的想法 217
- 第13章 蓝绿部署 219
- 13.1 蓝绿部署的流程 220
- 13.2 手动执行蓝绿部署 223
- 部署蓝色版本 224
- 集成蓝色版本 226
- 部署绿色版本 228
- 集成绿色版本 230
- 移除蓝色版本 231
- 发现应部署哪个版本以及回滚 233
- 13.3 使用Jenkins workflow自动化蓝绿部署 239
- 蓝绿部署角色 240
- 运行蓝绿部署 245
- 第14章 服务集群和扩展 249
- 14.1 可扩展性 250
- 轴线扩展 252
- 集群 254
- Docker集群工具大比拼——Kubernetes、Docker Swarm和
- Mesos对比 256
- 搭建 258
- 运行容器 260
- 选择 262
- 14.2 Docker Swarm漫步 263
- 14.3 搭建Docker Swarm 268
- 使用Docker Swarm部署 274
- 使用Docker Swarm无链接部署 275
- 使用Docker Swarm和Docker Networking部署 276
- 使用Docker Swarm扩展服务 283
- 根据预留的CPU和内存调度容器 284
- 14.4 使用Docker Swarm和Ansible自动化部署 288
- 检验Swarm部署playbook 290
- 第15章 自我修复系统 297
- 15.1 自我修复等级和类型 298
- 应用程序级别的自我修复 299
- 系统级别的自我修复 300
- 硬件级别的自我修复 302
- 反应式自我修复 303
- 预防式自我修复 303
- 15.2 自我修复架构 305
- 15.3 Docker、Consul Watches和Jenkins组成的自我修复系统 311
- 搭建环境 311
- 15.4 自动设置Consul健康检查和watches来监测硬件 322
- 15.5 预设扩展和收缩的预防式自我修复 334
- 采用Docker重启策略的预防式自我修复 339
- 将On-Premise与云节点结合 341
- 15.6 自我修复系统(到目前为止)总结 342
- 第16章 集中日志和监控 343
- 16.1 集中日志的需求 344
- 16.2 向ElasticSearch发送日志条目 347
- 解析文件条目 354
- 发送日志条目到集中式LogStash 358
- 发送Docker日志条目到集中式LogStash实例 363
- 16.3 基于软件数据的自修复系统 375
- 硬件状态日志 381
- 基于硬件数据的自修复系统 388
- 最后的想法 388
- 第17章 结语 391
- 附录A Docker Flow 393
- A.1 背景 394
- 标准搭建环境 394
- 问题 396
- Docker Flow漫谈 398
- 零停机事件部署新版本 404
-
索引 415