本书是国内第一本系统介绍CloudStack的专业书籍。本书从历史发展、架构设计、安装配置、基本功能、开发入门等角度对CloudStack进行了全面的介绍。作为云计算IaaS平台,尽管CloudStack的安装非常简单,但其规划和安装对保证CloudStack系统稳定运行而言至关重要,很多用户正是在此部分遇到了大量问题,所以本书在安装部分下了较大笔墨,规划了一个简单、通用的场景,并对实际配置过程进行了详细介绍。本书以深入浅出的方式介绍了CloudStack,能够为计划使用IaaS将现有IT设施迁移到云上的公司、数据中心及系统集成行业的相关人员进行系统选型和对比提供帮助。对于那些对CloudStack没有深入了解及在安装和使用上遇到困难的技术工程师、售前及售后支持工程师、学生等人员,本书能够为他们学习正确的CloudStack的安装和使用步骤,以及对CloudStack进行全面、系统的认识提供帮助。
能够将CloudStack技术内容进行系统性整理并写书出版的,也只有中文社区用户组中少数经验丰富的成员能够共同撰写。
当中国用户组的社区开始组织本书的写作活动时,就已经有很多成员表示愿意购买本书,可以看到本书在市场上销售表现会有很好的预期。
序
从2008年创建Cloud.com的前身VMOps并致力开发CloudStack,到现在已经快6年了。在这6年中,以亚马逊AWS为代表的基础设施公有云的飞速发展有目共睹。在这样的大环境下,出现了数十种云平台软件。CloudStack并不是最早的基础设施云平台软件,其成功取决于如下因素:CloudStack早年面向运营商,积累了大量大规模部署的案例和经验;CloudStack属于最权威的开源组织Apache基金会,受到了研发人员和用户的真正推崇;CloudStack拥有最热忱的研发和用户社区。
一个开源项目的成功不能只靠少量厂商和核心研发人员,而本书的作者就是热衷于CloudStack技术的社区成员。我相信,这本书不仅能传播云计算技术,更能让CloudStack社区在中国运作得更好,从而进一步推动CloudStack在全球的发展。
云计算作为IT行业变革的产物才刚刚起步。CloudStack的发展是一个不断应用、不断学习、不断改进的过程。随着对CloudStack理解的加深,我们会意识到CloudStack还有许多地方有待改进。大规模云平台的运作是否可以变得更简单?小规模研发云设施的步骤是否可以变得更简捷?在数据中心的设备出现故障时,云平台是否可以不受影响?如何配置云平台才能让基础设施性能最高、价格最低?读完这本书后,希望读者能进一步实践,并思考这些问题。更希望读者能加入CloudStack社区,和社区中的朋友们一起讨论,一起学习。这是开源软件和开源社区的最大好处:只要你愿意发问,你不仅可以知其然,更可以知其所
以然。
我从CloudStack软件和CloudStack社区学到了很多有价值的实践知识,相信你也一定会有收获。
Citrix Cloudplatform Group CTO 梁 胜
2014年7月8日
前言
云计算是一个被热炒多年但仍然热门的词,是一个大家张口闭口都在说但大部分人仍然云里雾里的词。IaaS(Infrastructure-as-a-Service)、PaaS(Platform-as-a-Service)、SaaS(Software-as-a-Service)的概念被提出后,各种各样的“aaS”也相继被提出,使云计算变得更让人摸不着头脑。但就是这样一个看似玄虚的词,正在我们未曾关注的地方发生着深刻的变化,真真切切地改变着我们的工作和生活。
在4年前,作为一个只知道名词而不知道何为云计算的小“菜鸟”,我义无反顾地投身于这个大潮中,Open Xen、桉树平台(Eucalyptus)及Ceph的整合让我形成了对IaaS平台认识的启蒙。那个阶段,在学习过程中,我想:如果做这样的东西就算是做IaaS平台的话,会不会对不起“IaaS”这么玄虚的字眼?很快,公司决定改变发展方向,直接使用CloudStack作为IaaS平台。
初一上手,CloudStack原有的商业产品基因、简单易用的安装和操作及美观易懂的界面就深深吸引了我。虽说那时的我也和正在读这本书的各位朋友一样,在安装和使用中遇到了各种问题,但其实这些都不是CloudStack的错,错在我们对使用一个IaaS平台的技术储备不足。在学习和使用CloudStack的过程中,我翻阅各种相关资料,向其他高手请教,学着分析日志——通过不同项目的实践,终于对CloudStack有了比较全面的认识。但至今,在工作中,我仍然感觉自己对这个平台所包含的技术及知识的了解尚浅,我仍然需要不断学习。
作为一个IaaS平台,CloudStack不再是一个简单的单机软件,而是为了管理超大规模的硬件设备而生的。它兼容各种虚拟化管理软件(Hypervisor),支持各种存储类型,通过软件及虚拟机实现了很多网络功能,尽可能将流程自动化并对用户提供服务。所以,要想玩转CloudStack,需要积累相当全面的背景知识,主要包括以下部分。
*了解Linux操作系统的配置,才能正确安装CloudStack软件。
*CloudStack可以安装在KVM、VMware、XenServer及硬件服务器上,未来还会对Hyper-V、LXC等更多的虚拟化技术提供支持,这就要求我们要对每种虚拟化管理软件的使用有一定的了解。
*CloudStack是一个基础设施的管理平台,对硬件设备(包括服务器、存储和网络设备)的使用和管理有一定的要求。在规划和运维一套大型云平台系统时,硬件设备的参数往往会对整个系统的性能起着相当重要的影响。
*在运维CloudStack系统时,与网络相关的知识最为重要。IaaS管理平台不再是单机软件,也就意味着它对物理设备有大量需求。虚拟设备都需要通过网络进行连接,而生产业务上的各种功能需求大部分也都是通过网络上的设计来实现的。所以,一个好的网络设计起着事半功倍的效果,可以更好地保证系统运行的稳定性及应对未来变化的扩展性。
*系统运维能力,以及系统出现问题后解决问题的能力,也都成为运维CloudStack系统所必需的技能。
在刚刚接触CloudStack的时候,我们往往不会具备这么全面的知识,但这并不可怕。多在网上查找相关资料,多在社区里请教高手,多在邮件组里查找别人提出的问题及解决方案或者自行提问,都是非常好的学习方式。
本书内容
本书基于CloudStack 4.0.2版本编写,这是目前比较稳定的、拥有广大用户基础的一个版本,它出现的错误较少,适合新入门的朋友学习。希望借由我们的经验,通过深入浅出的介绍,带领各位新手入门。
第1章对CloudStack的来龙去脉,以及CloudStack社区进行了相关介绍,包括如何更好地使用CloudStack社区的宝贵知识财富、Apache的许可证对CloudStack的使用有哪些界定等。
第2章介绍了CloudStack的基本架构,以帮助读者对CloudStack形成整体认识。
第3章介绍了CloudStack的网络架构,理解此部分,对实际规划系统有很大的帮助。
第4章和第5章是本书的重点,通过介绍一个简单、通用的CloudStack环境的规划及安装配置,帮助读者学习如何安装一套CloudStack系统并管理不同的虚拟化管理软件。建议读者在学习过程中严格按照步骤及规划进行操作和配置,从而尽可能保证系统的正常运行。我们的实践经验是:在一开始对CloudStack并不了解的时候,不严格按照步骤进行操作最容易出现问题。所以,在成功安装一套可以正常运行的CloudStack系统后,才能更好地理解CloudStack,并且能获得一定的成就感和信心。此后,再通过自己的理解去规划和安装自己想要的CloudStack系统,就会对CloudStack有更全面的了解。
第6章介绍了CloudStack的各项基本功能,包括虚拟机的生命周期管理、如何上传模板及ISO文件、虚拟机实例的访问方式、磁盘卷和快照的管理、服务方案的管理、域和账户的管理、项目功能的使用。因为本书定位为入门级,所以就不介绍更多的高级功能了。
第7章介绍了CloudStack开发的相关入门知识,包括如何获取代码、如何编译和调试代码等,并对API进行了简单的介绍。
致谢
本书能够完成,离不开本书各位作者的努力。在此感谢共同编写本书的各位作者:刘宇超、李学辉、白清杰、魏伟、曹伟、王磊、杨康泉、谭运华、袁帅、马营,也感谢梁顺斌、王耀峰为本书做出的贡献。虽然这些作者都是第一次写书,但还是尽最大努力将CloudStack的相关知识及经验介绍给各位读者。
另外,还要感谢各位作者的家人。没有他们的大力支持,我们是不可能在业余时间安心地花费大量时间写作本书的。
感谢支持本书的各位读者,希望书中的内容可以帮助大家更好地理解和使用CloudStack。
本书在编写过程中难免会有疏漏和错误之处,欢迎大家批评、指正。
中国CloudStack社区编写小组
2014年7月1日