运维前线:一线运维专家的运维方法、技巧与实践导读

前  言
为什么要写这本书
《运维前线:一线运维专家的运维方法、技巧与实践》(以下简称《运维前线》)是前线系列的一个子集,前线系列图书的出版理念是邀请多位业界专家,总结所在行业的最新理念或深度实践经验。前线系列图书不同于市面上的很多图书,这类书并不系统,有的只是一线专家的实战经验,人们常称之为“干货”。一篇文章、一家公司、一个案例、一个场景,独立成篇,在满足碎片化阅读的同时,也能让读者进行横向比较和深入思考。本系列图书不强调大而全,追求的是每篇文章都是精品,希望能给读者带来深度的启发和收获。
按照这个理念,之前著名产品经理兰军(笔名Blues)策划的《产品前线》,出版之后大获成功,随之而来的《运维前线》令我感觉到压力巨大。《运维前线》的出版犹如十月怀胎,中间充满波折,好几次我都以为要半途而废了,最后终于得以出版,在此要特别感谢机械工业出版社华章公司著名出版人杨福川,是他的坚持和鼓励让我总能在迷茫中看到希望。我和福川有共同的理念,希望把《运维前线》做成精品,如果有哪点不符合要求,那么我们宁愿耗时长一些,多打磨打磨,很庆幸能与福川一起合作。
本书共有14位作者,包含了在腾讯、YY语音、UC、京东、盛大游戏、金山西山居、猎豹移动、广发银行、优维科技等多家公司工作的实践经验,基本覆盖了互联网和传统行业运维的各个领域,估计这是迄今为止第一本由这么多资深运维专家联合写成的图书,也是第一本分享了众多一线运维专家亲身实践的图书。本书的出版也充分体现了互联网开放合作的精神。
看到本书的目录时,我激动不已,即使书中的内容我已经看了好多遍,但是在回顾目录的时候,我依然感到这是一本非常有吸引力的书,是一本每名运维工程师都应该案头常备的书!
本书特色
当前IT领域的概念层出不穷,云计算、物联网、移动互联网、大数据、人工智能、VR,所有的这一切都基于IT系统,IT系统正在向规模更大、更复杂、更高级的方向演进,一切IT资源都掌握在运维手里,通过运维来操作。这个时代对运维的要求越来越高,运维如果稍有不慎,就会造成重大的损失,所以随着IT系统的发展,运维的重要性也越来越高。
根据量子力学理论,世界由基本粒子组成,因此世界是不连续的,这个理论在运维知识体系的建立上同样适用。仔细回想一下自己运维体系的建立,就是逐个攻克和掌握知识点,再进一步通过实践不断加深的过程。《运维前线》也是这样,其中的每一篇文章都能够协助读者更快地掌握一个或多个知识点,相信通过运维前线系列的逐步出版,最终能够覆盖更多的运维知识点,为读者带来更多的实践经验和理念。
作为运维前线系列的第一本书,本书覆盖了运维自动化、系统运维、云及虚拟化、Web运维、游戏运维、DBA运维等6个方面14个知识点,都是各位作者总结自己多年实践经验的干货,每一篇文章都很精彩,都值得读者仔细品味。
本书作者
本书第1章“自动化运维之深度解码”,来自订阅号“互联网运维杂谈”的作者、优维科技创始人王津银,人称“老王”。我在多个场合听过“老王”的分享,有40分钟的,也有长达3个小时的,令我惊讶的是,“老王”每次总能带来新的东西。这篇“自动化运维之深度解码”也是如此,凝结了老王许多最新的见解,值得深读。
胥峰是我在盛大游戏的前同事,从胥峰身上我学到了不少知识,比如解决问题的思路和方法,有时候碰到运维难题,也许换一个角度就能迎刃而解。
刘宇、尹会生、陈立军是我多年的同事。刘宇、会生已经出版了多本运维图书,他们都是非常资深的运维专家。刘宇无论演讲还是文章都逻辑清晰,丝丝入扣。会生和立军分享的都是我亲眼所见的、在工作中碰到的难题及解决方法。
张观石是欢聚时代(YY)互娱事业部业务运维负责人,有多年的将PHP运用到日常运维中的经验。观石将PHP用到了极致,即使不懂PHP,也可以通过本书一窥观石在运维方面的丰富经验。
马亮有多年的游戏运维经验,目前在腾讯云专注做游戏云的架构设计,对游戏运维有深刻的理解。
本书的作者还有冉宏元(老男孩)、余洪春(抚琴煮酒)、吴传玉、彭华盛、蒋迪、赵旻、赵海军。虽然我与他们未曾谋面,但是彼此都是熟悉的网友,他们的文章我都曾仔细拜读并多次请教过,其中的运维思想让我深深折服,非常期待能有机会向他们当面请教。
读者对象
本书面向所有的运维工程师,无论是资深运维,还是刚入行的运维,相信都能从本书中获益。本书的读者对象包括如下几类:
系统运维工程师
安全工程师
数据库运维工程师
业务运维工程师
网络运维工程师
运维系统开发工程师及架构师
云计算/虚拟化运维工程师
其他对运维感兴趣的读者
勘误和支持
由于作者的水平有限,编写时间比较仓促,书中难免会出现一些错误或不准确的地方,恳请读者批评指正。如果您有更多宝贵的意见,欢迎关注我的订阅号“云技术实践”,然后在后台将您的宝贵意见发送给我。本书的勘误也会通过订阅号进行发布,关注订阅号请扫描下面的二维码:

“运维前线”是一个系列,欢迎在平时工作中积累了实战经验的广大运维工程师继续参与“运维前线”的写作,带来更多的干货分享!
期待能够得到你们的真挚反馈,在运维之路上互勉共进。
致谢
从开始构思到《运维前线》的出版,本书的创作过程犹如十月怀胎,期间也获得了无数的支持与肯定。借此机会,向所有为此奉献力量的人表示深深的感谢。
感谢参与本书写作的14位行业专家,他们在百忙之中伏案写作,将自己的经验共享给广大读者。能够和你们合作,我深感荣幸,经过将近一年时间的沟通和交流,你们的专业和执着深深地打动了我,同时也让我学到了不少东西。
感谢机械工业出版社华章公司的首席策划杨福川,编辑高婧雅、孙海亮。在近一年的时间中,你们的敬业精神不断地鼓舞着我前进,你们的鼓励、帮助和坚持引导了本书的完成。
这里,我还要特别感谢七牛云。七牛云是我见过的最具技术气质的云服务企业,肩负“帮助开发者缩短从想法到产品的距离”的使命,立志打造以数据为核心的场景化PaaS服务。七牛云主张技术共享并热衷于技术的传播,发起架构师实践日,推出各类创业扶持计划,这些都是七牛云正在做的事。
特别致谢
本书在成书过程中,得到了一批热心志愿者的协助,他们是陈家豪、曹学朋、邓荣兴、刘海文、李斯朗、韩海林,尤其刘海文做了大量的义务工作,在此特别感谢!

肖 力
志愿者的话
能在力哥组织的这本书中担任助理,我感到非常荣幸。本书出自一群经验老到并乐于分享的运维前辈之手,是一本案头必备的好书。

刘海文


目  录
推荐序
前 言
第1章 自动化运维之深度解码  
1.1 概述  
1.2 运维自动化的三重境界  
1.3 运维自动化的困境和价值 
1.4 运维自动化的多维解读
1.5 运维自动化的方法论  
1.6 运维自动化系统的实现 
1.7 运维自动化系统的API参考实现  
1.8 运维自动化依赖的团队模型  
1.9 小结  
第2章 利用Facter和Django快速构建CMDB  
2.1 CMDB简介  
2.2 开源CMDB介绍  
2.3 Puppet及Facter介绍  
2.4 如何利用Python获取Facts  
2.5 使用Django快速构建CMDB系统  
2.6 高级进阶  
2.7 小结  
第3章 数据中心搬迁中的x86自动化运维  
3.1 数据中心搬迁准备  
3.2 利用VMware脚本简化虚拟化层的搬迁  
3.3 利用批处理与Shell脚本简化逻辑节点的搬迁
3.4 小结 
第4章 集中配置管理工具Puppet  88
4.1 如何同步puppet-agent端上的常用服务  89
4.2 如何在puppet-agent端上自动安装常用的软件包  90
4.3 如何自动同步puppet-agent端的yum源  90
4.4 如何根据不同名字的节点机器推送不同的文件  92
4.5 如何根据节点机器名来选择性地执行Shell程序  95
4.6 如何快速同步puppet-server端的www目录文件  97
4.7 如何利用ERB模板自动配置Apache虚拟主机  102
4.8 如何利用ERB模板自动配置Nginx虚拟主机  105
4.9 小结  110
第5章 深度实践iptables  111
5.1 禁用连接追踪  111
5.1.1 排查连接追踪导致的故障  111
5.1.2 分析连接追踪的原理  113
5.1.3 禁用连接追踪的方法  114
5.1.4 确认禁用连接追踪的效果  117
5.2 慎重禁用ICMP协议  117
5.2.1 禁用ICMP协议导致的一则故障案例  117
5.2.2 MTU发现的原理  119
5.2.3 解决问题的方法  121
5.3 网络地址转换在实践中的案例  121
5.3.1 源地址NAT  121
5.3.2 目的地址NAT  122
5.4 深入理解iptables的各种表和各种链  123
5.5 小结  125
第6章 使用systemd管理Linux系统服务  126
6.1 systemd和sysVinit之间的关系  126
6.1.1 sysVinit方式下系统的启动 特点  127
6.1.2 systemd方式下系统的启动 特点  127
6.2 systemd的原理和启动顺序  128
6.2.1 sysVinit的启动顺序  128
6.2.2 systemd的启动顺序  130
6.3 systemd的进程控制命令  135
6.3.1 systemctl命令  136
6.3.2 hostnamectl命令  136
6.3.3 localectl命令  137
6.3.4 loginctl命令  137
6.3.5 timedatectl命令  138
6.4 systemd服务管理  138
6.4.1 编写Nginx的sysVinit启动脚本  138
6.4.2 编写Nginx的systemd启动脚本  140
6.4.3 systemd的其他功能  142
6.5 优化  146
6.5.1 使用systemd-analyze优化启动时间  146
6.5.2 使用systemd journal功能  148
6.6 小结  148
第7章 PHP运维实践  149
7.1 PHP再认识  150
7.1.1 PHP进程的工作方式  150
7.1.2 PHP代码的编译和部署  151
7.1.3 PHP内部实现和生命周期  151
7.1.4 PHP在互联网技术栈的位置  152
7.2 PHP开发、架构、运维问题及解决思路  153
7.2.1 运维对PHP研发提要求  153
7.2.2 运维参与PHP项目架构设计  154
7.2.3 PHP运维常见问题及解决之道  156
7.3 PHP进程部署和配置、代码发布  157
7.3.1 PHP进程的部署  157
7.3.2 PHP配置文件变更  161
7.3.3 PHP配置项  162
7.3.4 PHP进程部署及配置文件管理实践  164
7.3.5 PHP代码发布  165
7.3.6 PHP代码发布实践:代码发布系统  167
7.4 PHP性能分析  170
7.4.1 性能问题概述  170
7.4.2 PHP性能问题  171
7.4.3 性能分析方法  172
7.4.4 PHP性能分析实践:性能分析系统  181
7.5 PHP故障处理与监控  182
7.5.1 PHP故障分类及处理思路  183
7.5.2 业务监控和故障发现  184
7.5.3 PHP故障消除的方法  186
7.5.4 故障分析案例  187
7.6 小结  189
第8章 应用系统运行分析  190
8.1 分析模型  191
8.1.1 数据采集  191
8.1.2 数据模型  194
8.2 运行分析平台建设  199
8.2.1 数据采集接口  199
8.2.2 数据分析模块  200
8.2.3 推广  200
8.3 呼叫中心系统运行分析示例  201
8.3.1 确定分析方案  201
8.3.2 问题分析案例介绍  202
8.4 小结  203
第9章 虚拟化中存储配置典型场景:启动风暴  204
9.1 oVirt虚拟化平台配置介绍  205
9.1.1 存储配置背景知识  205
9.1.2 模板与实例同一存储  206
9.1.3 模板与实例分离存储  207
9.1.4 无状态实例的硬盘与快照分离存储  207
9.2 启动风暴相关系列实验  208
9.2.1 模板配置  208
9.2.2 实验脚本  208
9.2.3 WD 1TB机械硬盘启动Windows XP实验  210
9.2.4 Intel 480GB SSD启动WindowsXP实验  212
9.2.5 实验结论  214
9.3 私有云中处理启动风暴的常用方法  214
9.3.1 启动排队  214
9.3.2 存储分层选择  215
9.3.3 其他提升桌面云存储性能的方式  217
9.4 小结  219
第10章 私有云桌面网络组建  220
10.1 桌面云常用网络  220
10.1.1 NAT网络  220
10.1.2 桥接网络  223
10.1.3 VLAN网络  226
10.1.4 Access模式  226
10.1.5 Trunk模式  229
10.1.6 Open vSwitch  231
10.2  oVirt/OpenStack的桌面网络应用  232
10.2.1 oVirt/OpenStack组网方式  232
10.2.2 应用场景举例  237
10.3 小结  239
第11章 浅谈服务器交付的那些事儿  240
11.1 设备签收的学问  240
11.2 服务器设置  241
11.3 Cobbler的流程与规划  244
11.4 服务器安装时遇到的各种坑  247
11.4.1 DHCP客户端获取IP地址失败  247
11.4.2 TFTP加载失败  248
11.4.3 TFTP Client交互后 无响应  248
11.4.4 yum安装失败  249
11.4.5 Linux内核无法识别新硬件  250
11.4.6 恶意PXE启动导致原有系统被误装  250
11.5 交接后的故事  250
11.6 小结  252
第12章 企业级Nginx Web服务优化实战  254
12.1 Nginx基本安全优化  254
12.1.1 调整参数隐藏Nginx软件版本号信息  254
12.1.2 更改源码隐藏Nginx软件名及版本号  256
12.1.3 更改Nginx服务的默认用户  259
12.2  根据参数优化Nginx服务性能  260
12.2.1 优化Nginx服务的worker进程个数  260
12.2.2 优化绑定不同的Nginx进程到不同的CPU上  262
12.2.3 Nginx事件处理模型优化  265
12.2.4 调整Nginx单个进程允许的客户端最大连接数  266
12.2.5 配置Nginx worker进程的最大打开文件数  267
12.2.6 优化服务器域名的散列表大小  267
12.2.7 开启高效文件传输模式  269
12.2.8 优化Nginx连接参数,调整连接超时时间  269
12.2.9 上传文件大小的限制(动态应用)  272
12.2.10 FastCGI相关参数调优(配合PHP引擎动态服务)  273
12.2.11 配置Nginx gzip压缩实现性能优化  277
12.2.12 配置Nginx expires缓存实现性能优化  279
12.3 Nginx日志相关的优化与安全  283
12.3.1 编写脚本实现Nginx access日志轮询  283
12.3.2 不记录不需要的访问日志  284
12.3.3 访问日志的权限设置  284
12.4 Nginx站点目录及文件URL访问控制  284
12.4.1 根据扩展名限制程序和文件访问  284
12.4.2 禁止访问指定目录下的所有文件和目录  285
12.4.3 限制网站来源IP访问  286
12.4.4 配置Nginx,禁止非法域名解析访问企业网站  287
12.5 Nginx图片及目录防盗链解决方案  288
12.6 Nginx错误页面的优雅显示  295
12.6.1 生产环境中常见的HTTP状态码列表  295
12.6.2 为什么要配置错误页面优雅显示  295
12.7 Nginx站点目录文件及目录权限优化  298
12.8 Nginx防爬虫优化  300
12.9 利用Nginx限制HTTP的请求方法  302
12.10 使用CDN做网站内容加速  302
12.10.1 什么是CDN  302
12.10.2 CDN的特点  303
12.10.3 企业使用CDN的基本 要求  304
12.11 Nginx程序架构优化  304
12.12 使用普通用户启动Nginx(监牢模式)  305
12.12.1 为什么要让Nginx服务使用普通用户  305
12.12.2 给Nginx服务降权的解决方案  305
12.12.3 给Nginx服务降权实战  306
12.13 控制Nginx并发连接数量  308
12.14 控制客户端请求Nginx的速率  312
12.15 小结  314
第13章 游戏运维的思考  315
13.1 游戏运维最关键的几件事  315
13.1.1 安全  315
13.1.2 稳定  318
13.1.3 高效  322
13.1.4 成本节约  323
13.2 游戏运维人的发展  325
13.3 小结  326
第14章 数据库平台建设实战  327
14.1 规范建立  327
14.1.1 安装规范  328
14.1.2 配置规范  329
14.1.3 账号、权限规范  335
14.1.4 目录规范  336
14.1.5 其他规范  337
14.2 架构设计  339
14.2.1 架构图  339
14.2.2 各个模块介绍  340
14.3 功能介绍与实践  341
14.3.1 操作部分  341
14.3.2 日志部分  349
14.3.3 资产部分  351
14.3.4 信息展示  353
14.3.5 入口(LVS/Redir)  354
14.4 后期功能展望  357
14.5 小结  357
附录A 求职者与面试官  358

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Avalonia跨平台入门第十一篇之自定义Window

在前面分享的几篇中咱已经玩耍了Popup、ListBox多选、Grid动态分、RadioButton模板、控件的拖放效果、控件的置顶和置底、控件的锁定;今天趁着周末接着去摸索自定义Window样式,毕竟自带的样式不太让人满意;最终实现的效果如下图:前台Window样式:后台Window代码:咱也基于AvalonS…

开发文档收集

http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html_single/ http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html_single 转载于:https://www.cnblogs.com/happyday56/p/4709045.html

ie8下修改input的type属性报错

摘要: 现在有一个需求如图所示,当用户勾选显示明文复选框时,要以明文显示用户输入的密码,去掉勾选时要变回密文,刚开始想到的就是修改输入框的type来决定显示明文还是密文,使用jQuery的attr来做试验&#x…

LeetCode之Count and Say

1、题目 The count-and-say sequence is the sequence of integers with the first five terms as following: 1. 1 2. 11 3. 21 4. 1211 5. 1112211 is read off as "one 1" or 11.11 is read off as "two 1s" or 21.21 is read off …

《SAP入门经典(第4版•修订版)》——2.5 4种视角相互结合

本节书摘来自异步社区《SAP入门经典(第4版•修订版)》一书中的第2章,第2.5节,作者:【美】George Anderson著,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.5 4种视角相互结合 SAP入门经典&#x…

dotNet Core使用SignalR实现websocket

前言:最近有一个公司项目做一个排队叫号系统,系统功能不复杂,所以后端就我一人,难点在于消息推送到安卓屏上,最近有点时间,把我工作中使用的技术分享出来!整个技术架构:前端使用vue uniapp,后端…

JPA和hibernate的关系

实际上,JPA的标准的定制是hibernate作者参与定制的,所以JPA是hibernate的一个总成,可以这么理解转载于:https://www.cnblogs.com/cyh2009/p/4709465.html

nagios监控mysql(check_mysql)及内存使用率(check_mem)

一、监控本地(localhost)内存1、上传监控脚本 check_mem 到/usr/local/nagios/libexec# chown -R nagios.nagios check_mem # chmod x check_mem2、修改commands配置# vim /usr/local/nagios/etc/objects/commands.cfg define command{command_name …

Android之jni编译报错comparsion between signed and unsigned integer expressions解决办法

1、问题 jni编译报错comparsion between signed and unsigned integer expressions 2、原因 在for循环里面,不能用无符号32整形数据作为判断条件 2、解决办法 先把无符号32整形数据强转为整型数据,然后再去作为条件

《手机测试Robotium实战教程》——导读

本节书摘来自异步社区《手机测试Robotium实战教程》一书中的导读,作者 杨志伟,更多章节内容可以访问云栖社区“异步社区”公众号查看 目 录前 言第1章 自动化测试简介 1.1节何为自动化测试1.2节自动化测试和手动测试的对比1.3节移动端自动化测试工具的选…

linux内核的冒险md来源释义# 14raid5非条块读

linux内核的冒险md来源释义# 14raid5非条块读转载请注明出处:http://blog.csdn.net/liumangxiong假设是非条块内读。那么就至少涉及到两个条块的读,这就须要分别从这两个条块内读出数据。然后再凑成整个结果返回给上层。接下来我们将看到怎样…

为record类型自定义Equals方法

前言record类型,这是一种新引用类型,而不是类或结构。record与类不同,区别在于record类型使用基于值的相等性。例如:public record DemoRecord(int id);public class DemoClass {public DemoClass(int id){this.id id;}public in…

解决IDEA修改已有项目为maven项目时目录结构被改变的问题

Idea可以在项目根目录上右键选择“添加框架支持”&#xff0c;选择maven&#xff0c;为项目添加Maven支持。 但这样会导致原有项目的目录结构被破坏。 更好的方法是在根目录添加pom.xml文件 在<build>标签内添加 <sourceDirectory>标签&#xff0c;并填入源码根目…

C语言之获取32字节随机数的字符串

1、问题 获取32字节随机数的字符串 2、代码实现 #include <stdio.h> #include <time.h> #include <stdlib.h>#define SIZE 32void get_rand(char *p, int length) { char value[10] "0123456789";srand(time(NULL));for (int i 0; i < leng…

排序——选择排序

选择排序 作者&#xff1a;上品物语 知识点&#xff1a; 原理示意图算法特点复杂度1.1 原理 首先&#xff0c;找到数组中最小的那个元素&#xff0c;其次&#xff0c;将它和数组的第一个元素交换位置&#xff08;如果第一个元素就是最小元素&#xff0c;那么它就和自己交换&…

《Java线程与并发编程实践》—— 2.3 谨防活跃性问题

本节书摘来异步社区《Java线程与并发编程实践》一书中的第2章&#xff0c;第2.3节&#xff0c;作者&#xff1a; 【美】Jeff Friesen&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.3 谨防活跃性问题 活跃性这个词代表着某件正确的事情最终会发生。活跃…

.Net/C#分库分表高性能O(1)瀑布流分页

框架介绍依照惯例首先介绍本期主角:ShardingCore 一款ef-core下高性能、轻量级针对分表分库读写分离的解决方案&#xff0c;具有零依赖、零学习成本、零业务代码入侵dotnet下唯一一款全自动分表,多字段分表框架,拥有高性能,零依赖、零学习成本、零业务代码入侵,并且支持读写分离…

centos静默安装oracle关于报错UnsatisfiedLinkError exception loading native library:njni10

静默安装oracle时&#xff0c;日志文件中打印出如下语句 提示Oracle NetConfiguration Assistant failed&#xff0c;原因是找不到libaio.so.1 这是缺少依赖 执行指令 yum -y install libaio* libaio-devel* 删除home文件夹&#xff0c;再次执行 ./runInstaller -silent…

Ant—使用Ant构建一个简单的Java工程(两)

博客《Ant—使用Ant构建一个简单的Java项目&#xff08;一&#xff09;》演示了使用Ant工具构建简单的Java项目&#xff0c;接着这个样例来进一步学习Ant&#xff1a;上面样例须要运行多条ant命令才干运行Test类中的main函数&#xff0c;能不能简化须要运行命令呢&#xff1f;答…

C++之函数指针实现函数回调

1、问题 C++很多地方需要函数指针回调,但是我理解还是不够深刻,今天再写了测试例子,方便后面更深入理解和记忆。 2、代码实现 A.h 文件实现 // // A.h // TestC++ // // Created by 1111 on 17/8/17. // Copyright © 2017年 sangfor. All rights reserved. //#…