首页>参考读物>计算机科学与技术>软件与程序设计

DevOps和自动化运维实践
作者 : 余洪春 著
出版日期 : 2018-10-17
ISBN : 978-7-111-61002-1
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 412
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

全书共分8章:第1章主要是讲的是DevOps与自动化运维在运维中的意义和存在的必要性;第2章,生产环境下的Shell脚本,考虑到很多朋友都是Java开发,所以这部分内容讲得比较全面,而且全部Shell脚本均取自线上环境;第3章讲的是Python在DevOps与自动化运维中的应用,介绍得也较为全面,Python的基础方面基本上也涉及了,最后也加上了生产环境下的Pythone脚本;第4章讲的搭建自动化分布式虚拟环境的Vagrant,建议大家熟练的掌握它,这样方便测试后面的自动化运维工具;第5章讲解的是自动化运维工具pssh和Farbic;第6章,是关于分布式自动化运维工具Ansible,现在自动化运维是运维的流行趋势,而Ansible正是这方面的翘楚,熟悉掌握Ansible的使用能增加职业技能点;第7章讲解的是自动化配置管理工具Salt,大家可以对比下它与Ansible的区别,将其应用于自己的业务中;第8章讲解的是自动化运维中的后续思考。

图书特色

高级DevOps、系统架构师十余年工作总结,基于一线运维工作提炼,从生产环境下的Python和Shell脚本、Python自动化运维、Docker、Jenkins这些流行的DevOps技术方向多角度讲解,以实践案例指导读者掌握DevOps与自动化运维的技巧和难点。
姊妹篇《构建高可用Linux服务器》被《程序员》杂志和51CTO权威媒体评为“十大最具技术影响力的图书”和“最受读者喜爱的原创IT图书”。
DevOps
和自动化运维实践
余洪春?著
The Practice of DevOps and Automation Operations

图书前言

我的系统架构师之路
从2006年接触Linux系统并从事Linux系统管理员的工作以来,我担任过Linux系统工程师、项目实施工程师/高级Linux系统工程师、运维架构师,到如今的高级系统开发工程师、系统架构师,这一路走来,我深感开源技术和Linux系统的强大及魅力。
现阶段我的职务是高级运维开发工程师(DevOps)、系统架构师,主要工作是负责公司的CDN业务系统的运维自动化及公司APP产品的CI/CD工作及自动化部署工作。CDN系统相对于其他领域而言,海量机器的自动化运维工作是一件比较复杂的事情,关于这项工作,我们可以通过Python自动化配置管理管理工具,例如Ansible和SaltStack来进行二次开发,结合公司的CMDB系统,提供稳定的后端API,方便前端人员或资产人员进行调用,这样大家都可以利用界面来完成自动化运维工作。至今为止,令我印象最为深刻的还是公司的APP项目,该项目现在全部部署在云平台(国内云平台)并且Docker容器化了,从前端到后端包括大数据接口,全部采用容器化的项目方式部署上线,整个自动化流程跟传统的自动化方式大相径庭。尤其是现在公司正在使用的Kubernetes,整个架构设计非常复杂,学习成本也是非常高的,但带来的容器的自动化管理也是非常便利的。目前,无论是国外的AWS、Google还是国内的阿里云和腾讯云等主流公有云均提供Kubernetes的容器服务,可以说Kubernetes在当前容器行业是热门的,而Docker技术正是Kubernetes的基石,建议大家尽快熟练Docker的使用方法。
撰写本书的目的
云计算和容器技术是当前的流行技术和发展趋势,云计算和容器技术的流行对于传统的运维知识体系其实也是一种冲击,传统运维工程师的工作性质也在不断地发生变化,要掌握很多新的技能和知识。大家经常会在工作中看到DevOps这个词。DevOps为什么会这么火?这跟最近几年的云计算和容器技术的快速普及有很大关系 :云计算平台上(包括Kubernets)的各种资源,从服务器到网络,再到负载均衡都是由API创建和操作的,这就意味着所有的资源都可以由“软件定义”,这给各种自动化运维工具提供了一个非常好的基础环境。而在传统的互联网行业,例如笔者目前正在从事的CDN领域,由于机器数量众多、网络环境错综复杂,也需要由DevOps人员来设计工具,提供后端的自动化运维API,结合公司的CMDB资产管理系统,提供自动化运维功能,简化运维的操作流程及步骤,提高工作效率。
工作之余,许多读者朋友们也在向我咨询工作中的困惑,比如从事系统运维工作3~5年以后就不知道如何继续学习和规划自己的职业生涯了。我想通过此书,跟大家分享一下这么多年的工作经验和心得(尤其是近几年流行的DevOps技术),解决大家工作中的困惑。通过此书的项目实践和线上环境案例,让大家能迅速了解Linux运维人员的工作职责和方向,迅速进入工作状态,快速成长,希望大家通过阅读本书,能够掌握Linux系统集群和自动化运维及网站架构设计的精髓,轻松而愉快地工作,提升自己的职业技能,这是我非常高兴看到的,也是我编写本书的初衷。
读者对象
本书的读者对象如下所示:
系统管理员或系统工程师
中高级运维工程师
运维开发工程师
开发工程师
如何阅读本书
本书的内容是对实际工作经验的总结,涉及大量的DevOps及自动化运维知识点和专业术语,建议这方面经验还不是很丰富的读者先了解第1章的内容,这章比较基础,如果大家在学习过程中根据这章的讲解进行操作,定会达到事半功倍的效果。
系统管理员和系统工程师们可以通篇阅读本书,并重点关注第1章、第2章和第4章,其他章节的内容可以选择性地阅读,借此来拓宽知识面,确定学习方向。
对于运维工程师而言,除了第3章的内容不要求掌握以外,其他章节的内容均可以做深层次的阅读、实践和思考,书中提到的很多自动化案例,读者可以尝试结合自己公司的实际情况来进行应用。
对于运维开发工程师来说,上述章节描述的内容都与运维开发工作息息相关,建议大家多花些精力和时间,抱着一切从线上环境去考虑的态度去学习和思考,实践后多思考一下原理性的内容。
对于开发工程师来说,由于其只需对运维系统知识体系有一个大概的了解,重点可以放在本书的第1~3章。如果想了解自动化运维相关知识体系,建议熟悉本书的第6~8章。
大家可以根据自己的职业发展和工作需要选择不同的阅读顺序和侧重点,同时也可以对其他相关的知识点有一定的了解。
致谢
感谢我的家人,她们在生活上对我无微不至的照顾,让我更有精力和动力去工作和创作。
感觉好友刘天斯、老男孩的支持和鼓励,闲暇之余和你们一起交流开源技术和发展趋势,也是一种享受。
感谢朋友曹林华,与我一起花了大量时间调研并且实践电子商务系统中关于秒杀系统的架构及设计。
感谢机械工业出版社华章分社的编辑杨福川和杨绣国,在你们的信任、支持和帮助下,这本书才能如此顺利地出版。
感谢朋友冯松林,感谢他这么多年来对我的信任和支持,在我苦闷的时候陪我聊天,自始至终对我予以支持和信任。
感谢生活中的朋友们—曹江华、何小玲、郑桦、徐江春、张薇(排名不分顺序),工作之余能一起闲聊和打牌,也是非常开心和快乐的事情。
感谢在工作和生活中给予我帮助的所有人,感谢你们,正是因为有了你们,才有了本书的问世。
关于勘误
尽管我花了大量时间和精力去核对文件和语法,但书中难免还会存在一些错误和纰漏,如果大家发现问题,希望可以反馈给我,相关信息可发到我的邮箱 yuhongchun027@gmail.com。尽管我无法保证每一个问题都会有正确的答案,但我肯定会努力回答并且指出一个正确的方向。
如果大家对本书有任何疑问或想进行Linux的技术交流,可以访问我的个人博客与我交流,博客地址为http://yuhongchun.blog.51cto.com。另外,我在51CTO和CU社区的用户名均为抚琴煮酒,大家也可以直接通过此用户名在社区与我交流。

余洪春(抚琴煮酒)
2018年2月于武汉

上架指导

计算机\程序设计

封底文字

本书的内容是对实际工作经验的总结,涉及大量的DevOps及自动化运维知识点和专业术语,全书共分8章:第1章主要介绍DevOps与自动化运维在运维中的意义和存在的必要性,主要涉及在工作中运用DevOps(包括自动化运维)时应该掌握的知识点、工具和语言以及需要了解的网站系统架构设计和高并发场景的相关知识介绍;第2章介绍生产环境下的Shell脚本,考虑到很多朋友都从事Java开发,所以这部分内容讲得比较全面,而且全部Shell脚本均取自线上环境;第3章介绍Python在DevOps与自动化运维中的应用,涉及Python的基础知识,以及生产环境下的Python脚本;第4章介绍搭建自动化分布式虚拟环境的Vagrant,建议大家熟练掌握,以便测试后面的自动化运维工具;第5章介绍自动化运维工具Farbic,它是基于Python开发的轻量级自动化维工具,是开发者最常用的自动化运维工具之一;第6章介绍了分布式自动化运维工具Ansible,现在自动化运维是运维的流行趋势,而Ansible正是这方面的翘楚,熟练掌握Ansible能增加职业技能点;第7章介绍了自动化配置管理工具SaltStack,大家可以对比一下它与Ansible的区别,将其灵活地应用于自己的业务中;第8章介绍对自动化运维的后续思考,包括自动化运维系统应该实现的子系统、自动化运维经历的阶段,并且与大家分享了如何使用Docker搭建Jenkins分布式系统。

作者简介

余洪春 著:暂无简介

推荐序

Foreword 1 推荐序一
随着互联网业务的高速发展,工作内容更细分化、专业化,所以工作职责也逐渐分出开发(Dev)和运维(Ops)两个完全独立的角色。DevOps 就是为了解决开发团队与运维团队之间存在已久的冲突及矛盾:开发团队责怪运维团队的机器出了问题,运维团队则把问题归咎于开发团队的代码上。
运维人员看重的是保障系统的稳定性、可靠性和安全性,而开发人员则想着如何尽快发布新的版本,增加新的功能,这两者本身就是一种矛盾和冲突,尽管他们的共同目标都是为用户提供软件产品或服务。
那么,如何才能更好地实现 DevOps 工具和文化就变得愈发重要。
洪春恰巧是一位一直在一线奋斗的技术人员,他将结合自己多年的理论与实战经验,教大家如何快速上手实现 DevOps 。
本书以实现DevOps 为主线,涵盖了实现过程中的核心要素:Shell 应用、Python 应用、基础环境搭建、自动化运维工具、自动化部署管理等。相信无论你是 DevOps 新兵还是老将,都能从书中汲取不少精华,受益良多。

沪江资深架构师 曹林华
2018年9月



推荐序二 Foreword 2
本书作者余洪春先生和我相识于ChinaUnix举办的一次技术交流活动—“千万级PV高性能高并发网站架构与设计交流”,当时他已经在宣传自己的第一本著作—《构建高可用Linux服务器》,该书凝聚并整合了他多年来在一线工作的经验,时至今日,该书仍是一本在国内非常经典的运维原创著作,现在已经更新到第四版。这种对技术不断进行完善的坚持及工匠精神让我深深折服。这次能受邀为本书写推荐序,让我倍感荣幸。
本书覆盖了DevOps中的许多方面,介绍了基于Python语言构建的主流自动化运维工具,包括Ansible、Saltstack、Docker和Jenkins等,这些都是DevOps工具元素周期表中最闪亮的内容,也是运维人员必备的技能。本书中分享的案例是余洪春多年实战经验的精华,具有非常高的参考价值及借鉴意义。
书中内容从互联网业务平台构建及自动运维的场景出发,以常见的业务服务为基础,给出了大量的实战案例,相信会给读者带来不少启发及思考。
更难能可贵的是,作者能从易于理解的角度出发,由浅入深地剖析自动化运维管理之道。这对于不同技术水平的读者来说,有助于其有效地阅读和吸收这些知识,也能根据实际需要各取所需。
最后,感谢余洪春先生给中国互联网从业者带来这么好的图书,我相信阅读本书的每一位读者都能从中获取提升的能量,为企业及行业做出自己的贡献。

腾讯高级工程师 刘天斯
2018年9月


Foreword 3 推荐序三
在全球“互联网+”的大背景下,互联网创业企业如雨后春笋般大量出现并得到了快速发展!很大程度上,对“互联网+”提供有力的支撑就是Linux运维架构师、云计算和大数据工程师,以及自动化开发工程师等。
但是,随着计算机技术的发展,企业对Linux运维人员的能力要求越来越高,这就使得很多想入门运维的新手不知所措,望而却步,甚至努力了很久却仍然徘徊在运维岗位的边缘;而有些已经从事运维工作的人也往往疲于奔命,没有时间和精力去学习企业所需的新知识和新技能,从而使得个人的职业发展前景大大受限。
本书就是在这样的背景下诞生并致力于为上述问题提供解决方案的,本书是余洪春先生10多年来一线工作经验的再结晶,此前余洪春先生已经出版过Linux集群方向的图书(《构建高可用Linux服务器》),本次出版的书是作者对运维行业的再回馈。
书中不仅涵盖企业运维人员需要的大规模集群场景下必备的运维自动化Shell和Python企业开发应用实践案例,还包括热门的自动化运维工具在企业中的应用,以及Docker和Jenkins实践等。
本书能够帮助运维人员掌握业内运维实战专家的网站集群的企业级应用经验的精髓,从而以较高的标准胜任各类企业运维的工作岗位,并提升自己的运维职业发展竞争力,值得一读!

老男孩Linux实战运维培训中心总裁
“跟老男孩学Linux运维”系列图书作者 老男孩
2018年9月

图书目录

推荐序一
推荐序二
推荐序三
前言
第1章 DevOps与自动化运维的意义 1
1.1 DevOps在企业中存在的意义 1
1.2 为什么企业需要自动化运维 4
1.3 Web编程相关体系知识点 5
1.3.1 为什么要前后端分离 5
1.3.2 什么是RESTful 7
1.3.3  Web后台认证机制 8
1.3.4 同步和异步、阻塞与非阻塞的区别 10
1.3.5 WebSocket双工通信 11
1.3.6 了解消息中间件 13
1.3.7 了解负载均衡高可用 18
1.4 从事DevOps工作应该掌握的语言 24
1.5 从事DevOps工作应该掌握的工具 25
1.6 了解网站系统架构设计和高并发场景 26
1.6.1 网站性能评估指标 26
1.6.2 细分五层解说网站架构 26
1.7 了解数据库集群主从复制的基本原理 34
1.8 Linux服务器的安全防护 37
1.8.1 DDoS攻击和运营商劫持 37
1.8.2 Linux服务器基础防护篇 38
1.8.3 Linux服务器高级防护篇 40
1.9 小结 41
第2章 Shell脚本在DevOps下的应用 42
2.1 Shell编程基础 42
2.1.1 Shell脚本的基本元素 43
2.1.2 Shell基础正则表达式 43
2.1.3 Shell特殊字符 46
2.1.4 变量和运算符 47
2.2 Shell中的控制流结构 61
2.3 sed的基础用法及实用举例 64
2.3.1 sed的基础语法格式 64
2.3.2 sed的用法举例说明 69
2.4 awk的基础用法及实用案例 72
2.5 Shell应用于DevOps开发中应掌握的系统知识点 77
2.6 生产环境下的Shell脚本 85
2.6.1 生产环境下的备份类脚本 86
2.6.2 生产环境下的统计类脚本 89
2.6.3 生产环境下的监控类脚本 92
2.6.4 生产环境下的运维开发类脚本 97
2.7 小结 102
第3章 Python在DevOps与自动化运维中的应用 103
3.1 Python语言的应用领域 103
3.2 选择Python的原因 105
3.3 Python的版本说明 106
3.4 Python基础学习工具 106
3.4.1 Python(x,y)简单介绍 107
3.4.2 IPython详细介绍 107
3.4.3 Sublime Text3简单介绍 113
3.5 Python基础知识进阶 120
3.5.1 正则表达式应用 120
3.5.2 Python程序构成 127
3.5.3 Python编码问题 129
3.5.4 使用Python解析JSON 131
3.5.5 Python异常处理与程序调试 133
3.5.6 Python函数 136
3.5.7 Python面向对象 147
3.5.8 Python多进程 159
3.5.9 Python多线程 161
3.6 Python经常用到的第三方类库 175
3.7 利用Flask设计后端Restful API 178
3.7.1 DevOps中为什么要使用RESTful API 178
3.7.2 RESTful API项目实战 182
3.8 工作中的Python脚本分享 184
3.9 小结 191
第4章 Vagrant在DevOps环境中的应用 192
4.1 Vagrant简单介绍 193
4.2 Vagrant安装 193
4.3 使用Vagrant配置本地开发环境 195
4.3.1 Vagrant的具体安装步骤 195
4.3.2  Vagrant配置文件详解 198
4.3.3 Vagrant常用命令详解 199
4.4 使用Vagrant搭建DevOps开发环境 200
4.5 使用Vagrant搭建分布式环境 203
4.6 小结 207
第5章 自动化部署管理工具Ansible 208
5.1 YAML介绍 209
5.2 Ansible的安装和配置 214
5.3 定义主机与组规则(Inventory) 218
5.4 Ansible常用模块介绍 220
5.5 playbook介绍 235
5.6 Ansible在AWS云平台中的应用 240
5.7 角色 241
5.8 Jinja2过滤器 248
5.9 Ansible速度优化 252
5.10 利用Ansible API提供自动化运维后端 262
5.10.1 runner API 262
5.10.2 playbook API 265
5.10.3 用Flask封装Ansible提供自动化运维后端 267
5.11 Ansible 2.2新增功能 273
5.12 小结 280
第6章 自动化配置管理工具SaltStack 281
6.1 Salt的相关知识点介绍 281
6.1.1 Salt的优势 281
6.1.2 Salt的安装 282
6.1.3 Salt的工作流程 287
6.1.4 Salt配置文件详解 288
6.1.5 Salt的命令格式 291
6.2 Salt的常用组件 291
6.2.1 Salt常用的操作目标 291
6.2.2 Salt常用模块 293
6.2.3 Granis组件 304
6.2.4 pillar组件 308
6.2.5 job管理 311
6.2.6 State介绍 312
6.3 Salt真实案例分享 314
6.3.1 base环境配置 315
6.3.2 prod环境配置 319
6.4 Salt多Master搭建 322
6.5 Salt API介绍 324
6.5.1 Python API介绍 324
6.5.2 Restful API介绍 326
6.6 小结 330
第7章 Docker和Jenkins在DevOps中的应用 331
7.1 Docker的基础安装 333
7.2 Docker的三大核心概念 336
7.3 Docker的基本架构 338
7.4 Docker网络实现原理 340
7.5 利用Dockerfile文件技巧打包Docker镜像 342
7.6 利用Docker-Compose编排和管理多容器 344
7.6.1 Docker-Compose的基本语法 345
7.6.2 Docker-Compose常用命令 352
7.6.3 使用Docker-Compose运行Python Web项目 354
7.6.4 使用Docker-Compose的过程中遇到的问题 355
7.7 利用Docker搭建Jenkins Master/Slave分布式环境 357
7.7.1 部署Jenkins Master/Slave分布式环境需要解决的问题 358
7.7.2 Jenkins Master/Slave的详细部署过程 360
7.7.3 Jenkins Master/Slave以集群形式运行任务 363
7.8 实际运行Jenkins时遇到的问题及使用心得 365
7.9 小结 368
第8章 自动化运维的后续思考 369
8.1 自动化运维系统中应该实现的系统 369
8.2 自动化运维经历的阶段 371
8.3 自动化运维的必备技能:定制RPM包 372
8.4 因地制宜地选择自动化运维方案 374
8.5 小结 375
附录A GitLab在DevOps工作中的实际应用 376
附录B 用Gunicorn部署高性能Python WSGI服务器 385
附录C Supervisor在DevOps工作中的应用 391
附录D 分布式队列管理Cerely
简介 397

教学资源推荐
作者: (美)Harold Abelson,Gerald Jay Sussman,Julie Sussman
作者: [美] 凯·霍斯特曼(Cay Horstmann) 兰斯·尼塞斯(Rance Necaise) 著
作者: Bruce Eckel
作者: [美]罗伯特·W. 塞巴斯塔(Robert W. Sebesta) 著
参考读物推荐
作者: [德] 彼得?普林茨(Peter Prinz),托尼?克劳福德(Tony Crawford)著
作者: [美]易格恩?阿格佛温(Eugene Agafonov)著
作者: 宋文鹏 梁然 韩丰 著