---------------------------跟老男孩学Linux运维:高性能Web集群实践(上)---------------------------
为什么要写这本书
不知不觉接触Linux(之前用的是Solaris)已经有18个年头了,在这18年的运维职业生涯中,我走过了相当多的弯路,特别是头两年相当迷茫、彷徨,最要命的是无论怎么努力学习和坚持,就是感觉自己没有入门。那时,好的Linux学习书籍寥寥无几,工作中也无人指导,更没有什么像样的培训机构,所以服务器一出故障,我就会无所适从,好多次都是在痛苦的挣扎中度过的,好多次都想要放弃学习Linux。
后来我慢慢地积累了一些经验,有了自己的运维心得。在运维技术有了质的飞跃之后,我开始酝酿一套Linux培训体系课程,最初的目的就是希望大家不要走我走过的弯路,因为这条路充满了荆棘,一不小心就可能走不出来。
经过一段时间的酝酿,我把我的想法写成一份项目策划书,发给了公司老板,希望公司能够开展IT培训相关的业务,并由我负责这块业务。老板首肯了我的策划书,给了我鼓励,但是接下来没有任何实际行动,可能是觉得时机不够成熟。
老板无动于衷,但是我的心却被策划书给拽走了,于是我就开始了我的兼职IT培训生涯,这就是“老男孩IT教育”的前身。在多年的培训教学过程中我发现,很多小伙伴因为条件的限制无法来北京现场学习,虽然我录制了大量的网络视频,但还是有非常多的朋友希望老男孩能够把课堂内容整理成书,方便他们深入学习。看到小伙伴们的热切期盼,我心动了,觉得真的该为大家做些什么,于是我开始计划把课堂内容整理成书,让全国的小伙伴都能够从中受益。
但是由于培训课程的排期很紧,平时我还要在企业里工作,而且写书和讲课也是不同的路数,因此写书计划一直被搁浅,直至遇到了机械工业出版社的杨绣国编辑,因为她的执着、包容和鼓励,使得我有足够的信心和动力完成写作,并且还在策划Linux运维实战相关的更多图书,它们后续会一一和大家见面。
现今,全球进入了互联网+时代,越来越多的传统企业都在考虑通过网络提供产品和服务,包括互联网+教育、互联网+金融、互联网+出租车、互联网+保险等。而互联网(包括移动互联网在内)几乎都是由Linux技术支撑的,掌握Linux运维技术已经成为每一个IT技术人员的必经之路,本书涉及的中小规模网站集群架构就是构建在Linux系统上的高性能高并发企业级网站集群架构的解决方案!
读者对象
Linux系统管理员和运维工程师
互联网网站开发及数据库管理人员
网络管理员和项目实施工程师
Linux相关售前售后技术工程师
开设Linux相关课程的大中专院校
对Linux感兴趣的人群
. 如何阅读本书
本书基于CentOS7.6针对中小规模网站集群的搭建、部署进行了全新的详细讲解,全书共分为12章,内容介绍如下:
第1章,主要讲解企业级CentOS7.6操作系统的安装,学完了本章,读者可以掌握操作系统搭建知识和基本企业级优化,为搭建中小规模集群奠定基础。
第2章,主要讲解Web集群架构的基础概念知识、架构模型、架构搭建规划、架构优化等,为搭建中小规模集群进一步奠定基础。
第3章,主要讲解集群后端服务Rsync数据备份与复制的应用和实践,这是企业集群后端必备的数据备份工具。
第4章,主要讲解企业级NFS网络文件共享服务,这是中小型网站集群后端的共享存储服务,简单易用,需要读者好好掌握。
第5章,主要讲解网站数据实时复制应用与实践,这部分内容一般用于用户上传的数据的实时复制,是企业后端NFS等简单共享存储离不开的服务,数据实时复制到新的服务器上才能保证不丢失。因此,本章也是比较重要的章节。
第6章,主要讲解SSHD远程连接工具的企业应用实践,这一章的内容比较基础,但是其中的免密钥应用很重要,例如,数据库的高可用工具MHA就涉及本章的知识。
第7章,主要讲解Ansiable批量管理工具的应用与实践,它是集群架构用于批量管理的重要工具,值得读者好好掌握。
第8章,主要讲解HTTP及Web服务的核心基础知识,让读者详细掌握网站服务的背后原理,为集群的搭建奠定坚实基础。
第9章,主要讲解Nginx静态Web服务应用实践,让读者掌握Web服务的搭建细节,学完本章后,读者会获益匪浅。
第10章,主要讲解企业级LNMP环境部署实践,学完本章以后,读者就可以在公网上部署自己的博客网站了。
第11章,主要讲解Nginx反向代理与动静分离架构实践,学完本章,读者就能搭建由多台Web服务器组成的集群环境了,并且可以分离提供动态和静态服务,大型网站的架构雏形由此完成。
第12章,主要讲解Keepalived高可用集群应用实践,主要解决Nginx反向代理服务高可用问题,本章结束,一套中小规模集群就搭建完毕了,读者可以看到整个中小规模集群的全貌。
老男孩后续书籍会继续以本书为基础进行丰富,搭建更大规模的集群,敬请期待。
勘误和支持
由于作者的水平有限,加之编写的时间仓促,书中难免会有一些错误和不妥之处,恳请读者批评指正。你可以将书中的错误发布在专门为本书准备的博客评论处http://oldboy.blog.51cto.com/2561410/1713128,或者到我的微博http://weibo.com/oldboy8上留言。同时不管你遇到何种问题,都可以加入我为本书提供的两个QQ交流群339128815和226199808,我将尽力为你提供最满意的解答。书中所用的各种工具及程序文件也都将发布在上述QQ群及我的博客中。如果你有更多的宝贵意见,也欢迎你发送邮件至我的邮箱oldboy@oldboyedu.com,很期待听到你的真挚反馈。
致谢
感谢李泳谊、王洪志,感谢你们在百忙之中为本书供图!
感谢王硕导师及每一个运维班级的班长及班干部,感谢你们替我分担批改作业、答疑、就业指导和管理工作。
感谢“老男孩IT教育”的每一位学员—你们的长期支持使得“老男孩IT教育”蓬勃发展,也让我有较多时间持续写作。感谢你们的支持。
感谢我的所有同事,正是他们辛勤努力的工作,使得我有时间完成此书。
感谢中网志腾的郭威和实利通和的王斐及梁露,感谢你们提供的多台DELL物理服务器,使得本书得以高效顺利的完成!
感谢森华易腾的陆锦云女士及其同事,感谢你们提供IDC机房带宽支持,使得本书得以顺利完成!
感谢机械工业出版社华章公司的杨绣国编辑,感谢你的包容和鼓励,始终支持我写作,正是你的鼓励和帮助引导我顺利完成全部书稿。
最后要感谢我的家人,感谢你们给予我的信心和力量!
谨以此书,献给支持“老男孩IT教育”的每一位朋友、学员,以及众多热爱Linux运维技术的朋友。
老男孩
中国,北京昌平沙河,2019年8月
---------------------------跟老男孩学Linux运维:Shell编程实战---------------------------
为什么要写这本书
目前全球正处于互联网+的时代,越来越多的传统企业都在通过互联网提供产品和服务,比如,互联网+教育、互联网+金融、互联网+电商、互联网+出租车、互联网+保险等,可以看到,几乎所有的产品、服务都能在网上找到。而支撑互联网的幕后英雄其实就是Linux(包括移动互联网在内),掌握Linux运维技术已经成为每一个IT技术人员的必备技能!
互联网+的时代下企业的网站流量呈爆炸式增长,如果你是运维人员,很可能要面对几十台、几百台、上千台甚至上万台的服务器设备,而对于企业来说,如何提高IT运维的管理效率、降低成本也成了最大问题。要解决这个问题,必须在Linux运维工作中,做好运维服务的标准化、规范化、流程化和自动化,而这里面的前三项其实是在为最后一项“IT运维自动化”做铺垫。
要实现IT运维自动化就需要学会编程语言,目前Linux系统下最流行的运维自动化语言就是Shell和Python(Python相关图书,作者正在写作中)。在这两者之中,Shell又几乎是所有IT企业都必须使用的运维自动化编程语言,特别是在运维工作中的服务监控、业务快速部署、服务启动停止、数据备份及处理、日志分析等环节里,Shell必不可少。当然Python也是一门很好的自动化编程语言,它和Shell是互补的,Shell更适合系统底层,而Python则更适合处理复杂的业务逻辑,以及开发复杂的运维软件工具,实现通过Web访问等。
在长期的运维工作以及深度教学中,老男孩发现很多Linux入门人员很害怕Shell编程,觉得Shell不好掌握,甚至是已经工作的企业运维人员对Shell编程也是一知半解,不能熟练运用。而市面上的Shell图书大多如出一辙,理论多,实战少。因此在众多学员和网友的关注和提议下,老男孩决定写一本比较与众不同的偏重实战的Shell编程书籍,相信本书一定会让众多读者受益,提升个人在企业工作中的效率,达到加薪升职的目的。
本书是老男孩Linux运维实战系列的第二本书,第一本是《跟老男孩学习Linux运维:Web集群实践》(已由机械工业出版社出版),第三本是《跟老男孩学习Linux运维:三剑客命令实战》(预计书名),此书将在几个月后和大家见面。更多Linux运维实战系列的图书在持续写作中,敬请期待。
读者对象
热衷于IT运维自动化的人员
Linux系统管理员和运维工程师
互联网网站开发及数据库管理人员
网络管理员和项目实施工程师
Linux相关售前售后技术工程师
开设Linux相关课程的大中专院校
对Linux及Shell编程感兴趣的人员
如何阅读本书
本书是一本较完整的Shell编程实战型图书,并非大而全,但处处可以体现实战二字,大多内容取于企业实战,并结合老男孩十几年的运维工作和教学工作进行了梳理。本书从脉络上可分为五大部分:
第一部分为Shell编程基础篇(第1章~第4章),着重介绍新手如何学好Shell编程,涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。读者学完此部分,将会具备一个学好Shell编程的坚实基础。
第二部分为初中级的实战知识和技能篇(第5章~第8章),着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等相关的知识,并给出了企业实战技巧和案例。本部分是学好Shell编程的重中之重,读者必须掌握。
第三部分为Shell中高级实战知识和技能篇(第9章~第13章),着重讲解case条件语句、while循环和until型循环、for循环和select循环、条件与循环控制及状态返回值、Shell数组等知识,以及相应的实战技巧和案例。本部分同样是学好Shell编程的重中之重,读者必须掌握。
第四部分为高效Shell编程必备知识篇(第14章~第16章),着重讲解Shell脚本开发规范与编码习惯、Shell脚本的调试知识和技巧、Shell脚本开发环境的配置调整和优化等。
第五部分为Shell特殊应用及企业面试、实战案例篇(第17章~第19章),着重讲解Linux信号及trap命令的企业应用实践、Expect自动化交互式程序的应用实践,以及能体现全书所讲技术的面试题和企业实战案例,让真正的Shell全自动化运维成为可能。
最后一章补充讲解了大家易感困惑的子Shell知识及应用实践内容。
勘误和支持
由于作者所授的培训课程排期很紧,课程较多,全书内容基本上都是利用早晨和夜里的时间完成写作的。限于作者的水平和能力,加之编写的时间仓促,书中难免有疏漏和不当之处,恳请读者批评指正。你可以将书中的错误发布在专门为本书准备的博客地址评论处(http://oldboy.blog.51cto.com/2561410/1865956或微博http://weibo.com/oldboy8)。同时不管你遇到何种问题,都可以加入我为本书提供的QQ交流群204041129(验证信息:Shell书籍),我将尽力为你提供最满意的解答。书中所需的工具及源文件也将发布在的博客网站上(书中大部分章节结尾都给出了相关网址及二维码),我也会将相应功能的更新及时发布出来。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱oldboy@oldboyedu.com,很期待能够听到你们的真挚反馈。
致谢
感谢犹金毅、何清等为本书贡献第20章的重要底稿内容及对本书的写作给予的支持。
感谢孔令飞为本书第19章贡献有趣的girlLove案例内容及对本书的写作给予的支持。
感谢老男孩IT教育的每一位在校学员,是你们自觉努力的学习,使得我有较多的时间持续写作,特别是运维30-31期150位学员参与了本书的校稿。感谢你们对老男孩老师的支持。
感谢老男孩IT教育里每一个班级的助教、班主任、班长及班干部,感谢你们替我分担老男孩IT教育众多学员的答疑、辅导、批改作业及班级管理工作。
感谢我的同事——老男孩教育Python学院的Alex老师、武老师,云计算与自动化架构班的赵班长老师,Linux+Python高薪运维班的李泳谊、张耀等老师,以及其他未提及名字的众多老师,正是你们辛勤努力的工作,让我得以有时间完成此书。
一如既往地感谢中网志腾的郭威总经理和数码创天的王斐总经理及梁露女士,感谢你们提供优质的DELL服务器资源,使得本书得以高效顺利地完成!
感谢森华易腾的陆锦云女士及其同事,感谢你们提供的优质IDC机房带宽支持,使得本书得以顺利完成!
感谢机械工业出版社华章公司的编辑杨绣国,感谢你的支持、包容和鼓励,正是你的鼓励和帮助引导我顺利完成全部书稿。
感谢没有提及名字的所有学生、网友以及关注老男孩的每一位友人、朋友。
最后要感谢我的父母、家人,正是你们的支持和体谅,让我有无限信心和力量去写作,并最终完成此书!
谨以此书,献给支持老男孩IT教育的每一位朋友、学员及众多热爱Linux运维技术的朋友。
老男孩老师
北京,2016年11月
---------------------------跟老男孩学Linux运维:Web集群实战---------------------------
为什么要写这本书
不知不觉接触Linux(之前用的是Solaris)已经有16个年头了,在这16年的运维职业生涯中,我走了相当多的弯路,特别是头两年,相当迷茫、彷徨,最要命的是无论怎么努力学习和坚持,就是感觉自己没有入门。那时,优秀的学习书籍寥寥无几,工作中也无人指导,更没有规范的培训机构,一遇到服务器故障就会无所适从,无数次都是在痛苦的挣扎中度过的,也有无数次想要放弃学习Linux。
后来我慢慢地积累了一些经验,有了自己的运维心得。在我的运维技术有了质的飞跃之后,我开始酝酿一套Linux培训体系课程,最初的目的就是希望大家不要重走我走过的弯路,因为这条路充满了荆棘,一不小心就可能走不出来了。
经过一段时间的酝酿,我将自己的想法写成一份项目策划书,发给了公司领导,希望公司能够开展IT培训相关的业务,而我可以负责这块业务。领导首肯了我的策划书,但是在接下来的日子没有任何行动,可能是觉得时机不够成熟吧。
但是我的心却被策划书给拽走了,于是开始了我的兼职IT培训生涯,这就是“老男孩IT教育”的前身。在多年的培训过程中我发现,很多小伙伴因为条件的限制无法到北京现场学习,虽然我们也录制了大量网络视频,但还是有网友非常希望老男孩能够把讲课的内容整理成书,以便深入学习。看到小伙伴们热切的期盼,我心动了,于是开始计划把讲课的内容整理成书,让全国的小伙伴都能够从中受益。
但是由于培训讲课的排期很紧,课程很多,平时还要在企业里工作,而且写书和讲课也是不同的路数,因此写书计划被一次次地搁浅,直至遇到了她——机械工业出版社华章公司的Lisa,正是因为她的执着、包容、鼓励,使得我有足够的信心和动力完成此书,并且即将策划与Linux运维实战相关的更多图书,这些书后续会一一与大家见面。
目前,全球进入了“互联网+”时代,越来越多的传统企业都在考虑通过网络提供产品和服务,包括互联网+教育、互联网+金融、互联网电商、互联网+出租车、互联网+保险等。而互联网的背后就是Linux技术的时代(包括移动互联网在内),掌握Linux运维技术已经成为每一个IT技术人员的必经之路,本书的中小规模网站集群架构实战就是构建在Linux系统上的高性能、高并发企业级网站集群架构上的解决方案!
读者对象
Linux系统管理员和运维工程师
互联网网站开发及数据库管理人员
网络管理员和项目实施工程师
Linux相关售前售后技术工程师
开设Linux相关课程的大中专院校
对Linux感兴趣的人群
如何阅读本书
本书针对中小规模网站集群的搭建、部署、优化进行了详细讲解,全书可分为三大部分,其中第一部分介绍与Linux相关的基础且重要的知识,第二部分针对当下流行的Web环境架构(LNMP)的搭建及企业级Web优化等进行了讲解,第三部分介绍Web集群后端的数据存储及Web集群前端的负载均衡和高可用。如果你是一名经验丰富的资深Linux用户,可以直接阅读第二部分内容;如果你是一名Linux初学者,请务必从第1章的基础知识开始学习。
第一部分为基础篇(第1~4章),简单地介绍了Linux的历史沿革、Linux的企业级选型、学习环境的搭建、Linux的企业级系统安装、Linux系统的基础优化,以及远程连接Linux及客户端SSH的设置等,最后比较深入地讲解了HTTP协议和WWW服务相关知识,为读者搭建企业级Web集群环境做好了准备。
第二部分为Web服务篇(第5~8章),着重讲解了Linux、Nginx、MySQL、PHP(LNMP)等当下流行的Web环境架构的搭建、开源blog网站产品的安装部署、Web优化等知识。为读者搭建企业级完整的网站Web集群架构做好了准备。
第三部分为集群篇(第9~15章),着重讲解了Web集群后端的MySQL数据库、Web集群共享存储NFS、Nginx反向代理负载均衡、Keepalived高可用、Memcached缓存及session共享、Nagios企业级监控等技术实战,最后为读者规划了一个中等规模的网站集群架构解决方案。
勘误和支持
由于作者的水平有限,加之编写的时间仓促,书中难免会出现一些错误或者不准确的地方,不妥之处在所难免,恳请读者批评指正。你可以将书中的错误发布到我专门为本书准备的博客地址处:http://oldboy.blog.51cto.com/2561410/1713128,或者在我的微博(http://weibo.com/oldboy8)上留言。同时如果你遇到任何问题,可以加入我为本书提供的两个QQ交流群(339128815和226199808),我将尽量为读者提供最满意的解答。书中所需的各种工具及程序文件也都将发布在上述QQ群及我的博客网站上,我也会将本书的勘误等及时更新。如果你有更多的宝贵意见,也欢迎你发送邮件至我的邮箱(oldboy@oldboyedu.com),我很期待能够听到你们的真挚反馈。
致谢
首先要感谢伟大的Linux系统开发者Linus Torvalds,是他开创了一款影响我一生的软件。
感谢李泳谊、王洪志,感谢你们在百忙之中为本书供图!
感谢王硕导师及每一个运维课程班级的班长及班干部,感谢你们替我分担老男孩IT教育众多学员的批改作业、答疑、就业指导和管理工作。
感谢老男孩IT教育的每一位学员——是你们的长期支持使得老男孩IT教育的业绩蒸蒸日上,让我有较多时间持续写作。感谢你们对老男孩IT教育的支持。
感谢我的同事Python自动化开发课程的Alex(李杰)老师和武老师,高级架构师课程的赵班长老师,高薪运维就业课程的张耀助教老师,课程顾问歪歪老师、小雨老师、飞雪老师、环宇老师及其他未提及名字的老师,正是你们辛勤努力的工作,使得我有时间完成此书。
感谢中网志腾的郭威和实利通和的王斐和梁露,感谢你们提供给我的多台DELL物理服务器,使得本书得以高效顺利地完成!
感谢森华易腾的陆锦云女士及其同事,感谢你们提供IDC机房带宽资源并长期支持,使得本书得以顺利完成!
感谢机械工业出版社华章公司的编辑Lisa,感谢你的执着支持、包容和鼓励,在近一年的时间中始终支持我的写作,是你的鼓励和帮助引导我能顺利完成全部书稿。
最后要感谢我的父母、家人,感谢你们将我培养成人,并时时刻刻为我灌输着信心和力量!
谨以此书,献给支持老男孩IT教育的每一位朋友、学员,以及众多热爱Linux运维技术的朋友。
老男孩