前言
系统架构师之路
自2006年接触Linux系统以来,我从Linux系统工程师一步步晋升为项目实施工程师、高级Linux系统工程师、运维架构师,直至今日的高级运维开发工程师、系统架构师,这一路走来,深感开源技术和Linux集群的强大。其中印象最为深刻的还是担任项目实施工程师、高级Linux系统工程师期间,因为要设计和实施网站(尤其是电子商务网站)架构,负责开发语言和开发框架的选型,感觉能力提升特别快,成长十分迅速。
在担任运维架构师的这段工作时间里,我主要负责维护公司的电子商务网站。有些平台核心网站的并发量并不是太大,但比较重要,所以公司都要求部署Linux集群,有时指定要部署LVS或HAProxy负载均衡器。在实际设计和安装的过程中,我发现LVS/HAProxy的负载均衡确实非常强大,可以与硬件级的F5负载均衡器相媲美。很快我就被Linux集群这门艺术迷住了,工作之余自己也研究了Nginx/HAProxy+Keepalived(动静分离)这种负载均衡高可用架构,并且在许多项目中成功实施,客户反映效果不错,所以我也在很多开源社区推广Linux集群技术。
现阶段我的职务是高级运维开发工程师、系统架构师,主要负责设计、实施及维护公司的电子商务网站以及产品核心功能的代码开发。相对于CDN分布式系统而言,网站应用没有节点冗余,所以对Linux集群技术的要求更高。前期我将所有网站应用都做了双机高可用,即LVS/HAProxy+Keepalived和Nginx+Keepalived,还有DRBD+Heartbeat+NFS文件高可用,MySQL数据库用的是MHA一主多从架构。其间,随着特殊业务的需求越来越多(比如定点抢红包活动),我也在网站的架构设计中引入了RabbitMQ消息队列集群。后期基于商业推广,网站流量、UV及并发日益增大,新机器上线也日益频繁,所以我采用了Fabric和Ansbile自动化运维来管理线上机器,帮助运维同事避免重复劳动。另外,由于电子商务网站会牵涉支付问题,所以对安全性的要求也非常高,我们平时都会从网络安全(包括硬件防火墙、Linux系统防火墙和WAF应用防火墙)、系统安全、代码安全和数据库安全等方面着手,尽力避免一切影响网站安全的行为。工作虽然辛苦,但看着自己设计的网站顺利运行,心里还是很有成就感的,这也是我目前工作的主要动力。
撰写本书的目的
从事系统集成、运维开发、架构设计方面的工作已经有十余年,我曾经有幸担任过RHCE讲师,到武汉各高校推广红帽Linux系统。在教学过程中我发现,很多学生在进入企业后都无法胜任自己的工作,更谈不上正确地规划自己的职业道路了。一方面是因为企业的生产环境具有一定的复杂性和危险性,另一方面市场上入门书居多,缺乏能真正指导读者解决实际问题的书籍。例如,很多书都只是给出了比较基础的操作及理论,而相对于线上环境,根本没有涉及安全操作以避免误操作的内容,更没有PV、UV和并发以及数据库压力和高并发环境下的消息队列或任务队列的设计等相关话题。
我写这本书,一方面是想对自己这些年的工作经验和心得进行一次系统的梳理和总结;另一方面是想将自己的经验分享给大家,希望帮助大家少走弯路,希望书中的项目实践(包括Linux传统集群技术及云原生下的负载均衡技术、MySQL的高可用方案及Python自动化运维工具的使用)和线上环境的Python脚本,有助于读者迅速进入工作状态。书中提供的Python程序均来自真实项目,可以直接借用。关于Linux集群的项目实践和MySQL的高可用方案,大家也可以根据实际项目的需求直接用于公司的网站架构。希望大家能通过本书掌握Linux集群的精髓,领会Linux集群的魅力,通过Python程序实现自动化运维和编程,从而轻松愉快地工作。
读者对象
本书的读者对象如下:
·系统工程师或运维工程师
·DevOps工程师
·网络管理员或企业网管
·系统开发工程师
·运维架构师
如何阅读本书
本书是对实际工作经验的总结,涉及大量的知识点和专业术语,建议经验还不是很丰富的读者先了解第1~2章的内容,如果大家在学习过程中根据这两章的讲解进行操作,定会达到事半功倍的效果。
系统工程师和运维工程师可以重点关注第4~7章的内容,这些都是与运维工作息息相关的,建议大家多花些精力和时间,从线上环境去考虑学习。
DevOps工程师可以重点关注第2~8章的内容,想在企业运维开发工作中开发高效的运维工具并不是一件很容易的事情,建议大家多学习,拓宽自己的知识面。
运维架构师可以重点关注第4~5章和第7~8章的内容,这些都跟系统/网站架构技术息息相关,而且基本上都出自真实项目经验,具备一定的参考意义。
对于开发人员来说,由于已具备很强的编程开发能力,可以重点关注第2章和第3章之外的章节,以提升自己的技术。
致谢
感谢我的家人,她们在生活上对我无微不至地照顾,让我更有精力和动力去工作和创作。
感谢好友刘天斯和老男孩的支持和鼓励,闲暇之余和你们一起交流开源技术和发展趋势,也是一种享受。
感谢朋友胡安伟。他为本书提供了许多精美的插图,并就Linux集群技术相关内容提出了许多宝贵的意见。
感谢现公司的领导给予我足够的信任和支持,让我在工作中去了解和熟悉大量关于云原生的开源技术并用于工作实践。
感谢机械工业出版社华章公司的编辑杨绣国女士,在你的信任、支持和帮助下,本书才能如此顺利地完成。
感谢朋友三宝,感谢他这么多年来对我的信任和支持,在我苦闷的时候陪我聊天。
感谢在工作和生活中给予我帮助的所有人,正是因为有了你们,才有了本书的问世。
关于勘误
尽管笔者花了大量的时间和精力去核对文稿和语法,但书中难免还会存在一些错误和纰漏,如果大家发现了问题,可以及时反馈给我,相关信息可发到笔者的邮箱yuhongchun027@gmail.com。尽管我无法保证能准确地回答每一个问题,但我肯定会努力为大家指出一个正确的方向。
如果大家对本书有任何疑问或想进行Linux集群的技术交流,可以访问我的个人博客,地址为http://yuhongchun.blog.51cto.com。另外,笔者在51CTO和ChinaUnix社区的用户名均为“抚琴煮酒”,大家也可以直接在社区与我交流。
余洪春(抚琴煮酒)
于武汉