书名:Linux虚拟化数据中心实战
ISBN:978-7-115-55521-2
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
编 著 何坤源
责任编辑 王峰松
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书共8章,采用循序渐进的方式,帮助读者掌握Linux虚拟化架构的部署和使用,包括开源虚拟化平台介绍,实验环境搭建,部署使用KVM虚拟化,部署使用oVirt平台、OpenStack、Docker和Hadoop,以及认识SDN架构等内容。
本书以实战操作为主,理论讲解为辅,通过讲解搭建各种物理环境的方法,详细介绍在生产环境中如何使用Linux部署虚拟化数据中心,可以迅速提高读者的实际动手能力和操作水平。
本书语言通俗易懂,具有很强的可操作性,不仅适合Linux虚拟化架构的管理人员阅读,还可供其他虚拟化平台的管理人员阅读参考。
何坤源,知名讲师,黑色数据网络实验室创始人,持有CCIE(RS/DC/SEC)、VCP-DCV(4/5/6)、H3CSE、ITIL等证书,目前担任多家企业、学校的IT咨询顾问,主讲VMware、oVirt等虚拟化课程。
早在2006年,作者就将工作重心转向虚拟化、数据中心以及灾难备份中心的建设,2008年创建Cisco路由交换远程实验室,2009年创建虚拟化远程实验室,2015年创建云计算远程实验室。到目前为止,作者已经参与了多个企业虚拟化建设和改造项目,在虚拟化的设计、设备选型、运营维护等方面积累了丰富的经验。
工作之余,作者注重经验的总结和分享,近几年来编写了《VMware vSphere 5.0虚拟化架构实战指南》《Linux KVM虚拟化架构实战指南》《VMware vSphere 6.0虚拟化架构实战指南》等图书,并有多种图书被各地的高校选作教材。
作为云计算、大数据等技术的底层应用,服务器虚拟化有着不可替代的作用。而在企业级虚拟化方面,以开源Linux为代表的虚拟化解决方案占有不少的市场份额。
客观地说,商业软件与开源软件各具特色。商业软件的购置成本是一笔很大的开销,而开源软件基本上不需要花费购置成本,但运维成本是必须考虑的。总的来说,两者的结合使用是发展趋势。从目前的态势来看,不存在谁取代谁的问题,两者包容并存会持续很长一段时间。
本书一共8章,采用循序渐进的方式,帮助读者掌握Linux虚拟化架构的部署。希望这本书能够让虚拟化架构的管理人员在虚拟化的部署中得到一定的参考和指引。
需要指出的是,本书在介绍一些网络技术和网络术语时,参考了官方文档以及百度百科和CSDN的一些文章,在此一并表示感谢。
由于本书涉及的知识较多,作者水平有限,书中难免有不妥和错漏之处,欢迎大家批评指正。有关本书的任何问题、意见和建议,可以发邮件到heky@vip.sina.com与作者联系,也可与本书编辑(wangfengsong@ptpress.com.cn)联系。
以下是作者的技术交流方式。
技术交流QQ:44222798。
技术交流QQ群:240222381。
技术交流微信:bdnetlab。
本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。
提供书中彩图文件。
要获得该配套资源,请在异步社区本书页面中单击,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮即可,如下图所示。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线投稿(直接访问www.epubit.com/ selfpublish/submission即可)。
如果您是学校、培训机构或企业用户,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,几年来提供了大量精品IT图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。
“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社 30 余年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。
异步社区
微信服务号
从2006年Amazon公司第一次把云计算进行商用开始,虚拟化平台已经发展了10多个年头。特别是最近几年,作为云计算核心的虚拟化平台开始在生产环境中被大量使用。到目前为止,虚拟化平台主要可以分为两大类:一类是VMware(早期版本使用Linux内核)、Microsoft等厂商提供的商业平台,另一类是主要基于Linux的Xen、KVM等开源平台。本章对开源虚拟化平台进行介绍。
本章要点
学习开源虚拟化平台前,需要了解什么是虚拟化以及为什么要使用虚拟化。以一台物理服务器为例,如果不使用虚拟化技术,这台物理服务器只能安装一个Windows或Linux操作系统(不讨论双操作系统);如果使用虚拟化技术,这台物理服务器可以安装多个操作系统并且同时运行,每个操作系统独立运行且互相不受影响,这就是虚拟化技术。
Xen虚拟化技术是英国剑桥大学计算机实验室开发的一个虚拟化开源项目,通过它可以在一套物理硬件上安全地运行多个虚拟机。Xen和操作系统平台结合得极为密切,占用的资源较少。
Xen以高性能、占用资源少著称,赢得了IBM、AMD、HP、Red Hat以及Novell等众多软、硬件厂商的高度认可和大力支持,已被国内外众多企、事业用户用来搭建高性能的虚拟化平台。
Xen采用独立计算体系结构(Intelligent Console Architecture,ICA)协议,通过一种叫作准虚拟化的技术获得高性能,甚至在某些对传统虚拟化技术“极度不友好”的架构(如x86)上,Xen也有上佳的表现。与传统通过软件模拟实现硬件的虚拟机不同,在Intel VT-x的支持下,3.0版本之前的Xen需要系统的来宾权限和Xen API进行连接。到目前为止,这种技术已经可以运用在NetBSD、GNU、Linux、FreeBSD以及Plan 9等操作系统上。
Xen虚拟机可以在不停止工作的情况下在多个物理主机之间实时迁移。在操作过程中,虚拟机在没有停止工作的情况下内存被反复地复制到目标机器上。虚拟机在最终目的开始执行之前,会有一次60~300ms的暂停以执行最终的同步,给人“无缝迁移”的感觉。类似的技术被用来暂停一台正在运行的虚拟机,并切换到另一台虚拟机,第一台虚拟机在切换后可以恢复工作。
Xen是一种基于x86架构、发展较快、性能较稳定、占用资源较少的开源虚拟化技术。Xen可以在一套物理硬件上安全地运行多个虚拟机,与Linux形成一个完美的开源组合。Novell SUSE Linux Enterprise Server最先采用了Xen虚拟化技术。Xen特别适用于服务器应用整合,可有效节省运营成本,提高设备利用率,最大化利用数据中心的IT基础架构。
在介绍Xen虚拟化类型之前,需要了解一下x86平台指令集的模式。x86平台指令集使用Ring 0、Ring 1、Ring 2、Ring 3共4种级别来管理和使用物理服务器硬件,如图1-1-1所示。其中操作系统内核使用Ring 0级别,驱动程序使用Ring 1、Ring 2级别,应用程序使用Ring 3级别。对于不使用虚拟化技术的操作系统来说,这样的机制没有任何问题。但如果使用虚拟化技术,如何让虚拟机越级使用x86平台指令集是需要解决的问题。
图1-1-1
为解决虚拟机越级使用x86平台指令集的问题,Xen虚拟化使用两种技术:半虚拟化(如图1-1-2所示)和全虚拟化(如图1-1-3所示)。
1)半虚拟化(Para Virtualization):半虚拟化也可以称为超虚拟化。使用这种虚拟化技术,虚拟机操作系统认为自己运行在Hypervisor上而不是运行在物理服务器上,Hypervisor对虚拟机操作的Ring 0级别的指令进行转换,模拟CPU给虚拟机使用(实际使用的是Ring 1级别),虚拟机不直接使用真实的CPU。在半虚拟化环境下,虚拟机操作系统感应到自己是虚拟机,因此需要安装半虚拟化驱动程序,数据直接发送给半虚拟化设备,经过特殊处理再发给物理硬件。
2)全虚拟化(Full Virtualization):全虚拟化也可以称为硬件虚拟化。需要注意,全虚拟化技术需要Intel VT和AMD-V的支持,相当于Intel VT和AMD-V创建了一个新的Ring 1级别单独给Hypervisor使用,但虚拟机操作系统认为自己直接运行在Ring 0级别上。在全虚拟化的环境下,虚拟机操作系统不知道自己是虚拟机,其数据的传输方式与在物理服务器上一致,但数据会被Hypervisor拦截再转发给物理硬件。
图1-1-2
图1-1-3
Xen虚拟化组件主要包括图1-1-4所示的几个部分。
图1-1-4
1)物理硬件:物理硬件层是最底层,包括物理服务器配置的CPU、内存、硬盘以及网卡等硬件资源。
2)Hypervisor:运行在物理硬件与虚拟机层之间的基本软件层,其本身也是一种特殊的操作系统,负责为运行在上层的虚拟机分配、调度各种硬件资源。
3)Domain 0虚拟机:Domain 0虚拟机是Xen虚拟化技术中特殊的虚拟机,具有访问物理资源的特权,简单来说,Xen虚拟化环境必须运行Domain 0虚拟机后,才能够安装运行其他虚拟机。
4)Domain U虚拟机:无特权Domain也称为Domain U,可以把除Domain 0虚拟机外的虚拟机称为Domain U虚拟机。Domain U虚拟机不能直接访问物理硬件,每个Domain U虚拟机拥有独立的虚拟硬件资源并独立存在,一个Domain U虚拟机出现问题不影响其他Domain U虚拟机。
Xen作为一种企业级虚拟化技术,其功能相对完善。在了解其基本原理后,再了解一下它的优缺点。
Xen构建于开源的虚拟机管理程序之上,是结合使用半虚拟化和硬件协助的虚拟化。Xen提供了复杂的工作负载平衡功能,可捕获CPU、内存、磁盘I/O以及网络I/O数据,它提供了两种优化模式:一种针对性能,另一种针对密度。
Xen拥有一种名为Citrix Storage Link的独特的存储集成功能。使用Citrix Storage Link,系统管理员可直接利用来自HP、Dell Equal Logic、NetApp、EMC 等公司的存储产品。
Xen包含多核处理器支持、实时迁移、物理服务器到虚拟机转换、虚拟机到虚拟机转换工具,具有集中化的多服务器管理、实时性能监控功能。
Xen会占用相对较大的空间,且依赖于Domain 0虚拟机中的 Linux。
Xen依靠第三方解决方案来管理硬件设备驱动程序、存储、备份、恢复,以及容错。
任何具有高I/O速率的操作或任何会“吞噬”资源的操作都会使Xen陷入困境,使其他虚拟机缺乏资源。
Xen缺少IEEE 802.1Q虚拟局域网 (VLAN) 中继,出于安全考虑,它没有提供目录服务集成、基于角色的访问控制、安全日志记录以及审计或管理操作。
基于内核的虚拟机(Kernel-based Virtual Machine,KVM),最初是由一个以色列的创业公司Qumranet开发的,作为他们的VDI产品的虚拟机,从Linux 2.6.20内核之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,相对于Xen其核心源代码很少。KVM目前在开源系统中被大规模使用。
为简化开发,KVM的开发人员并没有选择从底层开始新写一个Hypervisor,而是选择基于Linux Kernel,通过加载新的模块使Linux Kernel本身变成一个Hypervisor。
2006年10月,在完成基本功能、动态迁移以及主要的性能优化之后,Qumranet公司正式对外宣布了KVM的诞生。同年10月,KVM模块的源代码被正式接纳入Linux Kernel,成为Linux内核源代码的一部分。作为一个当时在功能和成熟度上都逊于Xen的项目,在这么短的时间内被Linux内核社区接纳,主要原因在于:当时虚拟化方兴未艾,Linux内核社区急于将虚拟化的支持包含在内,但是Xen取代内核由自身管理系统资源的架构引起了Linux内核开发人员的不满和抵触。
2008年9月4日,Linux发行版提供商Red Hat公司出人意料地出资上亿美元,收购了Qumranet公司,成为KVM开源项目的新东家。由于此次收购,Red Hat公司有了自己的虚拟机解决方案,于是开始在自己的产品中用KVM替换Xen。
2010年11月,Red Hat公司推出了Red Hat Enterprise Linux 6,在这个发行版中集成了最新的KVM,而去掉了在Red Hat Enterprise Linux 5中集成的Xen。
与Xen虚拟化架构相比较,KVM虚拟化架构非常简单,图1-2-1为KVM虚拟化架构示意。KVM直接通过加载相关模块将Linux Kernel转换为Hypervisor,KVM在安装完成后就可以通过QEMU将模拟硬件提供给虚拟机使用。
图1-2-1
KVM作为一种企业级虚拟化技术,功能相对完善。其基本的运行原理是在Linux中加载KVM模块。需要注意的是KVM虚拟化需要Intel VT和AMD-V的支持,KVM本身包含为处理器提供底层虚拟化的模块kvm-intel.ko、kvm-amd.ko,当在Linux上安装KVM后可以创建并运行虚拟机,一台虚拟机可以理解为一个Linux单一进程,通过管理工具对这个进程进行管理就相当于对虚拟机进行管理。在了解其基本原理后,再了解一下它的优缺点。
利用Linux的功能,与Linux操作系统紧密结合,构建在稳定的企业级平台之上,直接使用Linux进行进程调度、内存管理,广泛的硬件支持等。
KVM是开源项目,很多成熟的解决方案也是免费的。对于中小企业或者是小微企业来说,成熟并且免费的解决方案是企业的首选。
KVM虚拟化需要硬件支持,只能在具有虚拟化功能的CPU上才能运行。
针对企业级虚拟化需求,Red Hat公司发布的Red Hat Enterprise Virtualization(简称RHEV)是一套完整的服务器虚拟化管理产品。但这套产品不能直接使用,需要订阅Red Hat RHN服务才能下载使用。
oVirt是开源的分布式虚拟化解决方案,也可以理解为Red Hat Enterprise Virtualization的社区版本。oVirt虚拟化平台由libvirt、Gluster、PatternFly以及Ansible多个社区进行维护并发布新的版本,从使用上看,oVirt是适用于企业的免费开源虚拟化解决方案。
oVirt虚拟化架构由oVirt Engine、oVirt Node以及存储设备组成,能够统一对KVM虚拟机进行创建、删除、迁移以及快照等操作。
oVert Engine是oVirt虚拟化架构的管理端,负责控制、管理虚拟化平台,能够管理虚拟机、硬盘、网络等硬件资源,同时还可以进行高可用设置,创建虚拟机模板、快照等,这些都可通过oVirt Engine提供的Web界面来完成。
oVrit Node是oVirt虚拟化架构的主机端,是能够被oVirt Engine连接并管理的Hypervisor,在oVirt虚拟化架构中提供运算功能。oVirt Node有两种实现方式:一种方式是直接安装包含Hypervisor代码的微型操作系统,这是一个专为oVirt Node设计的微型操作系统,能够更加充分地使用物理服务器资源,这也是oVirt社区推荐的做法;另一种方式是在CentOS主机上安装Hypervisor软件,将已有的CentOS主机配置成oVirt Node。
oVirt虚拟化作为开源企业级免费虚拟化平台,其优缺点非常明显。
作为Red Hat Enterprise Virtualization的社区版本,其内核架构的稳定性非常不错,基于Web方式的管理容易操作,同时版本更新更快。
oVirt虚拟化是社区版本,意味着没有官方提供技术支持,只能通过社区获取有限的技术支持。oVirt虚拟化在企业中部署使用时,建议配备专业、成熟的运维团队。
OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合,由美国国家航空航天局和Rackspace合作研发并发起,是拥有Apache许可证的开源代码项目。
OpenStack 为私有云和公有云提供可扩展的、弹性的云计算服务。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。
OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面。它是一个正在开发中的云计算平台项目,根据成熟和重要程度的不同,被分解成多个组件。
计算组件,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务,负责虚拟机的创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。
对象存储组件,用于大规模可扩展系统,通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件。可为Glance提供镜像存储,为Cinder提供卷备份服务。
镜像组件,用于虚拟机镜像查找和检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK等),有创建镜像、上传镜像、删除镜像以及编辑镜像基本信息等功能。
身份认证组件,为OpenStack其他服务提供身份验证、服务规则以及服务令牌的功能,用于管理Domains、Projects、Users、Groups、Roles等。
网络组件,提供云计算的网络虚拟化技术,为OpenStack其他服务提供网络连接服务。为用户提供接口,可以定义Network、Subnet、Router,配置DHCP、DNS、负载均衡、L3服务,网络支持GRE、VLAN。插件架构支持许多厂商的产品和技术,如OpenvSwitch。
块存储组件,为运行实例提供稳定的数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷等。
UI组件,OpenStack中各种服务的Web管理门户,用于简化用户对服务的操作,如启动实例、分配IP地址、配置访问控制等。
测量组件,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费、监控以及其他服务提供数据支撑。
部署编排组件,提供了一种通过模板定义的协同部署方式,实现云基础设施软件运行环境(计算、存储以及网络资源)的自动化部署。
数据库组件,为用户在OpenStack的环境下提供可扩展、可靠的关系和非关系数据库引擎服务。
本章对基于开源Linux操作系统的虚拟化平台进行了介绍,包括Xen、KVM、oVirt以及OpenStack,同时分析了各自的优缺点,用户可以根据实际情况进行选择。
Xen虚拟化目前使用范围相对较小,KVM目前被作为主流虚拟化技术在企业中大量使用。作者推荐使用KVM和oVirt搭建开源虚拟化平台。另外,作者想提醒,相对于使用商业软件,虽然使用开源虚拟化平台前期不需要购买授权,但是需要专业的运维团队进行搭建和后期的运维,而建立专业的运维团队也是一笔不小的开支。