前言

为什么写这本书

OpenStack在云计算和IT基础架构领域的影响力已毋庸置疑,从OpenStack社区成立至今,短短几年时间里,其贡献者和用户已遍及全球各个地区和行业,OpenStack已然成为开源领域云计算的事实标准。近年来,国内OpenStack初创企业不断涌现,华人企业和工程师在OpenStack社区中的影响力和贡献占比不断上升,以华为、中兴为主的传统IT企业在OpenStack社区不断提升自己的影响力,并在社区的董事决策中占有一席之地。此外,99Cloud、United Stack、Easy Stack、UMCloud、AWCloud等OpenStack创业公司对Open-Stack的贡献也处于全球领先的位置,可以说在国内云计算大潮的推动下,OpenStack正在不断渗透并重构各个行业的IT架构。纵观2016年,可将其看成是OpenStack在国内企业用户中真正落地的元年,以国网、电信、移动和中海油等为主的大型国有企事业单位,以银联、邮蓄、兴业数金和众多地方商业银行为主的金融企业,以上交、西交、东南大学和人民在线、山西农业云、湖北楚天云等为主的科研政企单位,以及上汽集团、复兴医药等工业制造业都在部署或正式上线OpenStack私有云,当然还有更早便在使用OpenStack的诸多互联网企业。OpenStack作为开放、包容的基础架构云平台,在国外更有像AT&T、CERN、PayPal、BMW、eBay和Walmart等重量级的大型用户,以及IBM、HPE、Dell、Cisco、RedHat、Intel和Oracle等IT巨头的参与。从全球目前的云计算环境发展趋势而言,企业借助OpenStack构建私有云已成为多数用户云化并重构数据中心的首要选择。

自2010年OpenStack的Austin版本发布以来,历经7年的时间,OpenStack社区已发行了第15个版本Ocata,其稳定性和功能在不断增强。同时,在Liberty版本中引入“大帐篷”概念后,OpenStack以极为开放、包容的姿态不断整合已有或新生的IT技术,尤其是对Ceph存储和Docker容器技术的成功整合,真正显示出其在云计算大潮下中流砥柱的地位和集成引擎的强大一面。尽管在这几年的发展过程中也饱受指责、批评和诟病,同时还受到Docker后来居上甚至取而代之的威胁,但是OpenStack依然一路高歌向前,并以拥抱一切竞争对手的姿态不断完善和巩固自己的主导地位。时至今日,可以毫不夸张地说,在云计算领域,没有OpenStack实现不了的功能,也没有OpenStack整合不了的技术,或者说在开源领域,OpenStack已成为了云计算的代名词。

OpenStack虽然如此火爆,但是想要实现面向生产环境的OpenStack高可用云计算环境却并非易事,尤其对于高度依赖传统IT架构的企业而言,服务高可用一直是企业部署和使用OpenStack难以跨越的鸿沟,而这也成为了OpenStack真正落地并走向普通企业用户需要解决的“最后一公里”。OpenStack以开源共享的方式为用户走向云计算提供了便捷之道,但是其内部组件之复杂、涉及技术栈之多、版本更新之快以及部署维护之困难往往也超出很多用户的预期。围绕这些问题,OpenStack社区孵化了很多新项目以期解决被诟病最多的入门困难、部署困难和维护困难等问题。但是为了实现OpenStack的自动化部署,这些项目无一不又重新引入了新的理论技术,并从其他维度增加了用户使用OpenStack的学习和维护成本,而且这些项目并没有很好地解决企业用户最为关心的OpenStack服务高可用问题。以上种种,归其原因,在于社区曾明确OpenStack的高可用应交由用户的基础架构软件而非上层OpenStack项目来实现。因此,对于OpenStack企业用户而言,在OpenStack社区上游功能交付和终端用户部署实施之间一直横亘着一个难题,即如何在使用OpenStack的过程中通过集成高可用基础架构软件,实现保证业务连续性的OpenStack高可用集群。

虽然目前各个OpenStack厂商都有自己的OpenStack高可用解决方案,但是采用厂商定制商业方案似乎有违使用OpenStack的初衷,而且市面上的OpenStack书籍多以Open-Stack理论讲解和功能部署为主,却没有一本专门面向OpenStack高可用实施部署的中文书籍(虽然在OpenStack官方网站和其他互联网站点中也能找到OpenStack高可用建设的相关资料,但是这些资料或者藏头露尾,或者零散不全,且以英文资料居多)。秉承共享精神,为了给国内社区用户,尤其是新入门的OpenStack用户提供一套完整的OpenStack高可用部署参考方案,同时对OpenStack进行由底层基础架构软件至上层OpenStack核心组件的原理分析与高可用部署的一站式讲解,我们决定编写一本关于OpenStack高可用集群原理、部署与运维的书籍,对以OpenStack为核心的技术栈进行全面剖析,即从理论知识准备到高可用实战操作,再到后期的高可用集群运维进行透彻的分析和介绍,同时围绕OpenStack生态圈,对Ceph和Docker与OpenStack的集成应用进行实战讲解。希望本书能够为企业用户在OpenStack的应用部署中提供微薄之力。

本书的主要内容和特色

本书分为上下两册,理论与实战结合,全面讲解了OpenStack的技术知识点。上册讲解了OpenStack相关的基础架构软件,如集群管理软件Pacemaker、负载均衡及高可用软件HAProxy和Keepalived、缓存系统Memcached和Redis、数据库MariaDB和MongoDB以及消息队列系统RabbitMQ等基础软件的理论知识,也可以了解到OpenStack三大核心组件——计算(Nova)、存储(Cinder/Ceph)和网络(Neutron)的架构原理及使用方式。

下册从实战角度讲解了如何对OpenStack的基础架构软件和核心组件项目进行高可用集群部署,然后介绍了如何在实际应用中对OpenStack高可用集群进行运维分析与故障解决。

整体而言,本书从项目实施的角度,按照“理论基础—实战部署—后期运维”的方式进行循序渐进的讲解,围绕OpenStack生态圈,不仅介绍了OpenStack的组件项目,还对其依赖的基础架构软件进行了完整介绍,同时对当前较为热门的Ceph和Docker在OpenStack中的集成应用也进行了分析和实战演示。

本书面向的读者

书中以Linux系统运维为基础,通过Pacemaker集群软件为各项服务提供高可用性,涉及负载均衡、数据库、缓存系统、消息队列和云计算领域的存储、网络以及计算资源虚拟化等诸多知识点,是一本整合了OpenStack生态圈的技术书籍,非常适合OpenStack入门初学者、运维工程师和Open-Stack高可用架构工程师及Ceph存储管理员等从业人员阅读。

此外,本书也适合高校在读本科生或研究生用作OpenStack研究、部署和实践的参考书。通过对本书的学习,读者将可以从OpenStack入门级别走上高可用OpenStack生产项目实施和运维工程师的台阶。

如何阅读本书

阅读本书之前,读者应该具备一定的KVM虚拟化知识、SAN网络或分布式存储知识以及Linux系统运维、集群管理和高可用相关方面的基础知识。由于篇幅较多,本书分为上、下两册,按照:架构篇(第1~2章)、原理篇(第3~10章)、部署篇(第11~12章)、运维篇(第13~14章)以及扩展篇(第15章)的结构进行编排,读者如果仅关注于某个阶段的参考学习,可直接参考目录结构进入相关章节。按章节顺序,本书讲述了如下内容。

第1章描述了云计算建设的必要性,同时对用户在公有云与私有云之间的决策提供建设性的参考,并对企业实施云计算的进阶路线提供指引和参考架构,此外还对传统IT架构和云计算环境下的高可用架构设计进行了介绍。

第2章对OpenStack高可用架构的功能组件和集群核心服务项目进行了介绍,还对Redhat和Mariantis两大OpenStack领导厂商的高可用架构进行了详细介绍,并与其他OpenStack厂商的高可用架构进行了对比分析。

第3章介绍了OpenStack高可用架构中的集群资源管理器Pacemaker的原理、架构和使用方法。

第4章介绍了OpenStack高可用架构中的集群负载均衡与高可用软件HAProxy和Keepalived的原理、架构和使用方法。

第5章介绍了OpenStack高可用集群中的消息队列系统RabbitMQ的原理、架构和高可用配置与使用方法。

第6章介绍了OpenStack高可用集群中的缓存系统Memcached和Redis的原理及使用方法。

第7章介绍了OpenStack高可用集群中的关系型数据库MariaDB和非关系型数据库MongoDB,同时对这两种数据库的高可用配置与使用方法进行了详细介绍。

第8章介绍了OpenStack高可用集群中核心服务之一的计算服务Nova项目,对Nova的架构原理、使用配置以及服务高可用均进行了详细介绍。

第9章介绍了OpenStack高可用集群中核心服务之一的网络服务Neutron项目,对Neutron的插件式架构、高可用配置以及不同的Neutron网络模式及其使用方法进行了详细介绍。

第10章介绍了OpenStack高可用集群中核心服务之一的块存储服务Cinder和Ceph分布式存储集群,对Cinder块存储的架构、配置和多后端存储及其使用进行了详细介绍,同时对Ceph在OpenStack中的集成使用进行了实战演示。

第11章介绍了OpenStack基础架构组件的高可用部署,以实战部署的方式讲解了如何通过Pacemaker集群部署高可用的OpenStack基础服务组件。

第12章介绍了OpenStack核心服务组件的高可用部署,以实战部署的方式讲解了如何通过Pacemaker集群部署高可用的OpenStack核心服务组件。

第13章介绍了如何运维基于Pacemaker的OpenStack高可用集群,并对Neutron网络和Nova计算服务的高可用性进行了详细分析。

第14章介绍了Ceph分布式存储集群的运行维护经验,并提供了如何配置和自定义使用Ceph集群的参考。

第15章介绍了如何通过Docker容器与OpenStack集成项目Kolla进行OpenStack的容器化部署,同时对OpenStack的Kolla项目进行了详细介绍。

勘误和资源

在本书的写作过程中,笔者参考了很多OpenStack官方社区的资料和历届OpenStack峰会的讨论文档与视频,同时也参考了很多开源软件的官方资料和技术专家的经验分享,诚恳希望能为OpenStack爱好者与从业者呈现一本涵盖基础理论与高可用实战部署和运维的参考书籍。但是由于OpenStack社区版本变化之快,使得任何OpenStack相关书籍都难以跟上每年两次的OpenStack发行版本,加之笔者水平有限,书中难免存在技术延后和谬误观点,若书中有任何不妥之处,恳请读者批评指正。读者可将意见发送至邮箱ynwssjx@126.com或者通过微信公众号“OpenStackGeek”进行反馈,我们将实时跟进OpenStack社区的发展变化,并吸取读者的宝贵意见。另外,本书涉及的OpenStack高可用集群部署源代码已全部上传至GitHub,读者可以从网站https://github.com/ynwssjx/Open-Stack-HA-Deployment下载查看并参考实现。

致谢

开源共享是人类历史上最伟大的精神之一,在此向Linux创始人和开源精神领袖Linus Torvalds致敬,向OpenStack项目发起者NASA和Rackspace致敬,向OpenStack社区所有参与者和无私的代码贡献者致敬。

本书的编写历时半年有余,在工作和生活极为繁忙的阶段,笔者仍然坚持每日查阅资料和整理文章,期间得到了招商银行很多同事和领导的关心,同时也得到了很多IBM前同事和领导的支持,在此一并谢过。正是你们的关心和支持,才使得我在繁忙的工作之余仍然怀着一颗敬畏之心进行写作。

在本书的策划和写作期间,机械工业出版社华章分社的杨福川先生和李艺女士给予了极大的关心和帮助,在此感谢杨福川先生对本书的策划和李艺女士对全文的审阅校对,正是你们的辛勤付出才有了本书的问世。

另外,还要感谢我的妻子杨彩凤女士在写作期间对我生活上的照顾与理解,在多少个深夜与凌晨,正是你的理解与支持让我能全身心地投入写作中。在此也要感谢我的父母,感谢你们的默默养育和辛勤付出。在本书的写作期间,奶奶的仙逝是我最大的悲恸,谨以此书慰藉奶奶的在天之灵,您一世的慈祥我将永远铭记。

最后,感谢所有为本书的编写提供了帮助、支持与鼓励的朋友们,感谢陈沙克、刘世民、吴业亮等无私分享博文的技术爱好者,感谢所有为OpenStack社区无私奉献的企业和志愿者。相信在开源精神的共鸣下,OpenStack一定会变得更好!