精通OpenStack(原书第2版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-31 16:31:09

点击下载

作者:(德)奥马尔·海德希尔(Omar Khedher)

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

精通OpenStack(原书第2版)

精通OpenStack(原书第2版)试读:

前言

今天,随着新功能和子项目的增加,OpenStack已成为一个不断扩展的大型开源项目。随着数以百计大型企业采用并不断为OpenStack生态系统做出贡献,OpenStack必将成为下一代私有云解决方案。随着新项目的不断集成,OpenStack提供的服务范围也在不断增加。新项目的不断集成,要归功于OpenStack模块化架构和其核心组件出色的稳定性。事实证明,OpenStack是一个成熟的私有云平台,可提供基础架构即服务(IaaS)功能。随着新项目的不断出现,OpenStack生态系统正朝着平台即服务(PaaS)的方向发展。

为何要考虑采用OpenStack呢?目前,已有诸多用例和实践表明,基于OpenStack的基础架构可以满足企业各种业务需求和开发需要。此外,还要考虑的是,如何在私有云构建过程中统一、标准化企业基础架构设施,OpenStack将是最合适的选择。模块化云平台最基本的设计目标就是为底层基础架构的管理提供更大的灵活性。将传统数据中心转向私有云架构,可充分利用自动化运维的强大功能,并提高服务交付的响应能力。在OpenStack私有云的配置部署中,你会发现启用新功能组件是一件非常容易的事情。作为由插拔式组件构成的云计算软件,OpenStack的模块化架构展现了其强大的云管理平台功能。此外,OpenStack的另一个优势是其每个服务都提供了REST API。OpenStack的这些特征体现了其对自动化思维的完全拥抱,并且OpenStack极易与系统中的已有功能进行集成。此外,OpenStack为企业解决传统IT架构面临的问题和供应商锁定窘境提供了可选的最佳途径。在最新版本中,OpenStack提供了更多的模块和插件来支持第三方软件服务,包括计算、存储和网络组件。

在第2版中,我们将重新组织本书的内容结构和学习方式,并涵盖OpenStack最新版本中的新特性。为了便于理解,我们将重新回顾OpenStack的组件和设计模式,并继续探索、研究和学习OpenStack。另外,我们的新版本也在不断更新OpenStack核心服务架构的新功能,这些新功能涵盖了计算隔离、容器化、新的网络服务模型,包括软件定义网络(SDN)以及新孵化出来的OpenStack存储项目。在本书中,我们始终以开篇部署的OpenStack私有云为主线,并以最佳实践形式分享部署运维经验。与第1版不同,在新版本中,我们通过以容器方式运行的系统管理工具自动化部署OpenStack,从而构建一个模拟真实生产环境的实验环境。这一切都将让你更深入地了解OpenStack生态系统中的新特性,以及如何采用OpenStack来满足业务需求。

本书的最后部分还提供了对OpenStack生产就绪环境的补充,包括运维管理、故障排除、监控和基准测试工具集。主要内容

第1章回顾了OpenStack核心服务架构,并重点介绍了每个架构设计的更新功能。本章以OpenStack初始逻辑设计开始,以物理模型设计结束,并在物理模型设计中介绍了存储、计算和网络服务的评估方法。本章内容将帮助你进行合理的硬件选型,以便部署、构建基于生产环境的OpenStack私有云。

第2章介绍了DevOps的发展趋势以及如何利用DevOps工具来部署和管理OpenStack私有云。本章主要介绍了DevOps工具Ansible,并使用Ansible作为系统管理工具对OpenStack进行自动化部署和管理。为了增强OpenStack基础架构管理和运维,本章还简要介绍了基础架构即代码(IaC)的概念。为了更好地隔离OpenStack服务,本章采用基于容器的方式部署OpenStack,最终模拟出一个真实的OpenStack生产环境。

第3章主要对运行在云控制器节点中的各种服务更新功能进行介绍,并对OpenStack服务的高可用和容错设计做初步讨论,这些讨论主要涉及OpenStack的核心组件、数据库以及消息队列系统。本章还针对不同的OpenStack核心组件和基础服务进行了Ansible角色和playbook分解。

第4章涵盖了OpenStack中的计算服务,并介绍了Nova最新支持的各种Hypervisor。Docker作为快速发展的容器技术,OpenStack对其提供了很多支持,因此本章对OpenStack的Docker支持项目Magnum进行了详细介绍。此外,本章还介绍了针对大规模OpenStack集群而引入的各种新概念,包括计算和主机隔离、可用区、区域以及Nova中的Cell。同时,本章花了较大篇幅对与实例生命周期相关的OpenStack调度器进行了介绍。最后,本章详细介绍了计算服务的Ansible playbook,以及如何通过playbook在现有OpenStack环境中新增计算节点。OpenStack集群中的几种备份方案也在本章中进行了讨论。

第5章扩大了对OpenStack支持的不同存储类型和备选方案的介绍,同时介绍了OpenStack最新版本中有关对象和块存储的更新功能。Manilla是OpenStack最新支持的一个文件系统共享存储项目,本章对其在OpenStack生态系统中的架构层次进行了详细介绍。最后,本章还介绍了与块和对象存储(也包括Ceph)相关的角色和Ansible playbook。

第6章重点介绍OpenStack当前网络服务的实现原理,包括网络新功能、更新后的Neutron插件,以及OpenStack最新版本中不同的隧道网络实现方式。本章描述了基于Neutron的不同网络实现方案,详细介绍了各种网络组件和术语,从而简化了OpenStack中虚拟网络的管理。此外,本章还重点介绍了如何简化虚拟网络和路由器的复杂配置。最后,在本章的结尾部分介绍了防火墙即服务(FWaaS)和VPN即服务(VPNaaS)。

第7章介绍了OpenStack中网络相关的高级话题。本章以专项形式重点介绍软件定义网络(SDN)和网络功能虚拟化(NFV)的概念,并讨论它们在OpenStack中的集成应用。在本章的结尾部分还探讨了OpenStack中负载均衡即服务的新实现方法。

第8章重点介绍OpenStack云平台的操作管理和使用方法。本章是对运维管理人员如何管理用户、项目以及定义底层资源使用方式的指导。另外,本章还介绍了如何使用OpenStack编排服务Heat来帮助用户自动化编排所需资源。同时,还介绍了基础架构即代码的概念,以及其对现代基础架构需求的实现。Heat已作为OpenStack定义模板资源的内置工具,本章除对它进行介绍外,为了扩展各种工具的使用,还对支持多云环境编排的新型工具Terraform进行了介绍。

第9章重点介绍了OpenStack中每个组件的各种高可用设计模式,包括如何设置OpenStack高可用集群中Active和Passive服务。本章不仅利用外部强大工具实现了消息队列、数据库和其他服务的高可用性,还介绍了包括网络服务在内的OpenStack原生服务的高可用设计。

第10章探讨了OpenStack中计量数据收集服务的新特性。本章详细介绍了OpenStack最新版本中计量数据收集服务的构成,包括警报、事件和指标。此外,本章还介绍了如何使用Nagios等外部流行工具来对云平台进行监控。在本章的后半部分,我们介绍了如何使用不同的故障排除工具和方法来诊断OpenStack集群中的常见问题。

第11章重点介绍了OpenStack中的日志文件,以及在解决OpenStack故障时如何使用日志进行深入排查。通过本章的内容,读者将学会如何使用当前流行的管道日志工具,如ELK(ElasticSearch、LogStash和Kibana)堆栈,高效地解析OpenStack服务中的日志文件。另外,本章还介绍了ELK堆栈架构中最新的稳定版本。同时,本章还对如何使用有效的ELK查询来定位、分析问题的根本原因做出了详细说明。

第12章重点介绍了OpenStack学习使用过程中相对高级的主题,即OpenStack基准测试和性能调优。通过本章介绍的专为OpenStack测试而开发的性能测试工具Rally,你将能够更深入地理解OpenStack云平台的内部运行机理,而这对于云平台容量及其架构的调优非常关键。此外,本章还介绍了对OpenStack数据平面进行测试评估的工具Shaker,并介绍了如何使用Shaker工具对网络带宽进行基准测试。需要的背景知识

本书假定读者有基本的Linux操作系统和云计算概念。新版本基于OpenStack中的最近更新功能丰富了大量内容,另外,熟悉OpenStack生态系统也非常重要。同时,读者需要具备对网络术语、系统管理工具和架构设计模式等基本知识的掌握和理解。与第1版不同,在第2版中,我们使用Ansible作为OpenStack基础架构管理的主要工具。本书使用的是OpenStack的Ansible官方项目,项目地址为:https://github.com/openstack/openstack-ansible。鉴于Ansible的使用,如果能够很好地理解YAML语法,对于阅读本书将有很大帮助。

你可以使用任何工具来搭建测试环境,例如Oracle的VirtualBox、Vagrant或VMware工作站版本。读者可以使用github中OpenStack-Ansible项目的All-In-One(OSA,一体化)方式来构建实验环境。本书建议在物理硬件上安装OpenStack以搭建生产就绪的环境。因此,在你的环境中,需要物理网络基础架构。另外,如果正确地配置了虚拟网络环境,也可以在虚拟环境中运行OpenStack以进行测试。

本书用到的软件列表如下。

·操作系统:CentOS 7或者Ubuntu 14.04。

·OpenStack:Mitaka或者更新的发行版。

·VirtualBox:4.5版或者更新的版本。

·Vagrant:1.7版或者更新的版本。

·Ansible服务器:2.2版或者更新的版本。

如果准备运行OpenStack开发环境,下面是最低的硬件需求:

·一台支持CPU硬件虚拟化的物理机。

·8核CPU。

·12GB内存。

·60GB空余磁盘空间。

·两张网卡。

下载OpenStack和其他工具所需的软件包需要访问Internet。另外,有关安装最新版OpenStack或更新旧版本软件包的详细说明,请参阅http://docs.openstack.org中给出的指南。面向的读者

本书主要面向希望部署基于OpenStack私有云的云计算工程师、架构师和DevOps工程师。本书也适用于那些热衷于OpenStack新特性、新功能,以及希望扩展自身知识,并将OpenStack生态系统中的新功能和新项目追加至现有生产环境中的云计算从业人士。本书并未提供有关安装、部署和运行OpenStack服务的详细步骤,因此,读者可专注于OpenStack各种高级特性和方法的理解。在这一版本中,我们提供了部署和运行OpenStack环境的更多选择,因此读者可以按照本书每章中的示例进行实际操作。下载示例代码

本书的示例代码可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。关于作者和审校者About the Authors&the Reviewer

Omar Khedher是一名系统、网络工程师,已从事云计算事业多年,参与了多个基于OpenStack的私有云项目,具有丰富的项目实战经验,同时他还负责有关AWS公有云的多个项目。

凭借在虚拟化、存储和网络方面的丰富经验,Omar在位于柏林的领先广告技术公司Fyber担任云系统工程师。他是团队中的技术骨干,曾负责过多个项目,包括使用最新的开源工具和DevOps理念构建云并将基础架构迁移到云上。

Omar还是Packt出版的第1版《Mastering OpenStack》和《OpenStack Sahara Essentials》的作者。此外,他还基于最近所做的云性能提升方面的研究发表了若干学术论文。

Chandan Dutta Chowdhury是瞻博网络公司的技术带头人,从事OpenStack Neutron插件方面的研究工作。他在Linux解决方案部署实施方面拥有超过11年的工作经验。过去,他一直致力于基于Linux集群和部署解决方案的研究开发。他还负责瞻博网络公司的私有云建设和维护工作。

他在OpenStack东京峰会上发表了专题演讲,并在会上提出了添加防火墙日志和其他Neutron增强功能的想法。他还是奥斯汀峰会的演讲者,在会上他谈到了对Nova调度程序的改进。他喜欢探索技术和撰写博客(https://chandanduttachowdhury.wordpress.com)。

审校者Mohamed Jarraya分别于2000年和1997年获得LAAS-CNRS、Paul Sabatier大学计算机科学博士和硕士学位。Mohamed从突尼斯的ENIT获得了计算机科学工程文凭。他目前是沙特阿拉伯沙特电子大学计算与信息学院的助理教授。他的研究兴趣包括云计算、性能评估、计算系统建模与安全。第1章OpenStack参考架构设计

云计算改变了企业IT服务的运行方式。基于不同的资源使用方式,云计算解决方案可分为私有云、公有云、混合云和社区云。很多组织机构已经迫切地感受到,不论使用哪种云解决方案,都需要在基础架构中引入编排引擎,以便更好地拥抱弹性和扩展性,以及获取极佳的用户体验。当下,OpenStack这个私有云领域热门的编排解决方案,已让成千上万的企业进入了下一个数据中心时代。在撰写本书时,OpenStack已经部署在许多大中型企业基础架构中,在各种生产环境中运行着不同类型的工作负载。由于多数IT巨头的支持以及遍布全球的庞大开发者社区的共同努力,OpenStack的成熟度在不断提升。OpenStack每个新版本都会带来很多出色的新功能。对很多企业而言,拥抱OpenStack无疑是最佳选择,因为OpenStack不仅可以更好地承载业务负载,还为企业带来了灵活的基础架构设施。

在本书第2版中,我们将继续介绍OpenStack最新发行版本中的各种新特性,并讨论OpenStack在提供极佳云体验方面存在的巨大潜力。

部署OpenStack仍然是一个极具挑战的事情。在部署之前,需要我们很好地理解与OpenStack有关的自动化、编排和灵活性等概念和知识点。如果对OpenStack有一个恰当而合适的期望,那么你会发现挑战将变成机会,值得你投入精力去努力。

在基础架构需求收集完成后,正式启动OpenStack项目之前,你需要一个完整的设计方案和基于不同基础架构设备的部署计划。

日本兵法家宫本武藏(Miyamoto Musashi)在Start Publishing LLC出版的《五轮书》(The Book of Five Rings)中写道:“在策略上,以近在咫尺的心态看待遥远的事物,而以宏观视角来考虑身旁事物,是非常重要的。”

我们的OpenStack之旅将从以下几方面的内容开始:

·回顾OpenStack组件,熟悉OpenStack生态系统逻辑架构体系。

·为恰当的环境选择适当的OpenStack核心服务,以便学习如何设计OpenStack。

·介绍为扩大OpenStack生态系统而在最新稳定版本中引入的新项目。

·为大规模部署环境设计OpenStack初始架构。

·通过梳理初次部署中的最佳实践,规划未来可能的增长所需的扩容。1.1 OpenStack引领新一代数据中心

云计算提供了各种类型的基础设施服务,例如软件即服务(SaaS)、平台即服务(PaaS)和基础设施即服务(IaaS)。公有云提供了敏捷、速度和自助服务。大多数公司都自建有昂贵的IT系统,多年来一直在持续开发和部署这些系统,然而它们是孤立的,且经常需要进行人为干预。在很多时候,企业IT系统一直在为匹配公有云服务的敏捷和速度而苦苦挣扎。在当今的敏捷服务交付环境中,传统数据中心及其孤立的基础架构并不具备可持续性。事实上,当今的企业数据中心必须专注于快速、灵活和自动化地提供服务,才可能成为高效的下一代数据中心。

软件定义基础架构的重大转变,使得运维管理人员在几分钟内即可提供完全自动化的基础架构。下一代数据中心将基础架构简化为单一、大型、灵活、可扩展和自动化的单元,最终结果是得到了可编程、可扩展和多租户感知的基础架构。这也正是OpenStack的发展方向:为下一代数据中心操作系统赋能。事实上,很多大型跨国企业(如VMware、思科、瞻博网络、IBM、Red Hat、Rackspace、PayPal和eBay)都已感受到OpenStack无处不在的影响。如今,它们中的多家企业都在其生产环境中运行着基于OpenStack的大规模可扩展私有云。如果想要成为云计算行业里的创新企业,那么在IT基础架构中采用OpenStack将是转向下一代数据中心并获取宝贵云计算经验的最佳选择。要了解更多有关许多公司成功案例的信息,请访问https://www.openstack.org/user-stories。1.2 OpenStack逻辑架构介绍

在深入研究OpenStack架构之前,我们首先需要了解OpenStack的基础知识,并理解OpenStack每个核心组件的基本概念及其用法。

为了更好地理解OpenStack的工作原理,对OpenStack组件进行简单的剖析是非常有必要的。在下文中,我们将介绍各种OpenStack服务,这些服务协同工作以向终端用户提供各种云计算功能体验。虽然不同的OpenStack服务用来满足不同的需求,但是它们的设计都遵循共同的思想,可归纳如下:

·大多数OpenStack服务都采用Python语言进行开发,这极大地提升了开发速度。

·所有OpenStack服务都提供REST API。这些API是OpenStack服务的主要外部访问接口,由其他服务或最终用户使用。

·OpenStack服务本身由不同组件实现。服务组件通过消息队列相互通信。消息队列具有很多优点,例如在多个工作守护进程之间实现请求排队、松散耦合和负载均衡。

基于这种通用设计思想,我们现在来对OpenStack各核心组件进行仔细分析。对每个组件,我们要问的第一个问题将是:这个组件是干什么的?1.2.1 认证管理服务Keystone

从架构角度来看,Keystone提供了OpenStack体系中最简单的服务。它是OpenStack的核心组件之一,提供身份认证服务,包括OpenStack中租户的身份验证和授权。不同OpenStack服务之间的通信都必须经过Keystone认证,以确保授权的用户或服务能够访问所请求的OpenStack服务对象。Keystone集成了许多身份验证机制,如基于用户名/密码和令牌/身份的验证系统。此外,可以将其与现有后端集成,例如轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)和插拔式验证模块(Pluggable Authentication Module,PAM)。Keystone还提供服务目录(service catalog)作为所有OpenStack服务的注册中心。

随着Keystone的发展,借助中心化的和联邦的身份解决方案,很多新功能在最新的OpenStack发行版本中得以实现。这使得用户可使用已有的、中心化的后端身份验证登录机制,同时可将身份验证机制与Keystone解耦。

联邦身份验证解决方案在OpenStack Juno版本中已变得更加稳定,这种方案使Keystone成为一个服务供应商(Service Provider,SP),并使用可信的身份提供者(Provider ofidentity,IdP)、SAML断言中的用户身份信息或OpenID Connect声明。IdP可以由LDAP、活动目录(Active Directory)或SQL支持。1.2.2 对象存储服务Swift

Swift是OpenStack用户可以使用的一种存储服务。它通过REST API提供对象存储功能。与传统存储解决方案(如文件共享存储或基于块的存储)相比,对象存储采用对象方式来处理所存储的数据,并从对象存储中存储和检索对象。我们来抽象地概况一下对象存储。为了存储数据,对象存储将数据拆分为较小的块并将其存储在独立容器中。这些保存数据的容器分布在存储集群节点上,并拥有冗余副本,以提供高可用性、自动恢复能力和水平可伸缩性。

稍后我们会讨论Swift对象存储的架构。简单来说,对象存储有以下几个优点:

去中心化,无单点故障(Single Point of Failure,SPOF)。

具有自愈能力,这意味着发生故障时能自动恢复。

通过水平扩展可以将存储空间扩展到PB级以上。

具有高性能,通过在多个存储节点上分散负载实现。

支持廉价硬件,这些硬件可用于冗余存储集群。1.2.3 块存储服务Cinder

你可能会好奇,OpenStack中是否还有另外的存储服务。事实上,通过Cinder服务,OpenStack提供了持久性块存储服务。它的主要功能是为虚拟机提供块级存储。Cinder为虚拟机提供了可用作存储磁盘的裸卷。

Cinder提供的一些特性如下。

·卷管理:允许创建或删除卷。

·快照管理:允许创建或删除卷的快照。

·将卷挂载到实例,或将卷从实例上分离。

·克隆卷。

·从快照创建卷。

·从镜像创建卷,以及从卷创建镜像。

需要记住的是,像Keystone服务一样,Cinder支持多个供应商(如IBM、NetApp、Nexenta和VMware)的存储产品驱动插件,从而可以使用不同存储供应商的存储设备作为Cinder后端存储。

Cinder已被证明是一种理想的解决方案,在架构层面上,Cinder服务替代了Folsom版本之前的nova-volume。更重要的是,Cinder已经组织并创建了具有多种不同特征的基于块的存储设备的列表。但是,我们必须明确考虑商业存储的限制,例如冗余和自动伸缩。

在OpenStackGrizzly版本中,Cinder实现了一个新功能,允许为Cinder卷创建备份(backup)。一个常见的用例是将Swift作为备份存储解决方案。在接下来的几个版本中,Cinder增加了更多备份存储,例如NFS、Ceph、GlusterFS、POSIX文件系统和IBM备份解决方案Tivoli Storage Manager。这种出色的备份可扩展功能由Cinder备份驱动插件所定义,在每个新版本中都会实现更加丰富的驱动插件。在OpenStack Mitaka版本中,Cinder进一步丰富了其备份方案,引入了一种新的备份驱动插件,能够将卷备份保存到谷歌云平台(Google Cloud Platform,GCP)上,这样它就将两种不同类型的云环境连接起来了。这一解决方案使得OpenStack实现了混合云备份解决方案,为持久数据提供了灾难恢复策略。这么做安全吗?从Kilo版本开始,这个问题已得到圆满解决,因为在开始任何备份操作之前,Cinder卷都会被加密。1.2.4 文件共享存储服务Manila

除了上一节中讨论的块和对象存储之外,从Juno版本开始,OpenStack还提供了一个名为Manila的基于文件共享的存储服务。它实现了远程文件系统存储。在使用时,它类似于我们在Linux上使用的网络文件系统(Network File System,NFS)或SAMBA存储服务,而Cinder服务则类似于存储区域网络(Storage Area Network,SAN)服务。实际上,可以使用NFS和SAMBA或通用网络文件系统(Common Internet File System,CIFS)作为Manila服务的后端驱动插件。Manila服务能在共享服务器上编排文件共享(file share)。

有关存储服务的更多细节将在第5章中讨论。

OpenStack中的每个存储解决方案都是针对特定目的而设计的,并针对不同的目标进行实现。在做出任何架构设计决策之前,了解OpenStack中现有存储选项之间的差异至关重要,如表1-1所示。表1-1 OpenStack不同存储服务功能对比1.2.5 镜像注册服务Glance

Glance服务提供了镜像和元数据的注册服务,OpenStack用户可通过镜像来启动虚拟机。Glance支持各种镜像格式,用户可以根据虚拟化引擎选择使用,Glance支持KVM/Qemu、XEN、VMware、Docker等镜像。

如果你是OpenStack新用户,你可能会问,Glance和Swift有什么不同?两者都有存储功能。它们之间的区别是什么?为什么我需要集成这两个方案呢?

Swift是一个存储系统,而Glance是镜像注册服务(image registry)。两者之间的区别在于,Glance保持对虚拟机镜像和有关镜像元数据的跟踪。元数据可以是内核、磁盘镜像、磁盘格式等信息,Glance通过REST API向OpenStack用户提供此信息。Glance可以使用各种后端来存储镜像,默认使用文件目录,但在大规模生产环境中,可以使用其他方案进行镜像存储,如NFS或者Swift。

相比之下,Swift是一个纯粹的存储系统。它专门为对象存储而设计,你可以在其中保存虚拟磁盘、镜像、备份归档等数据。

Glance的目的是提供镜像注册机制。从架构层次来看,Glance的目标是专注于通过镜像服务API来存储和查询镜像信息。Glance的典型用例是允许客户端(可以是用户或外部服务)注册新的虚拟磁盘镜像,而存储系统则专注于提供可高度扩展和具备冗余的数据存储。在这个层面上,作为技术运维人员,你所面临的挑战是提供合适的存储解决方案,以兼顾成本和性能要求,这将在本书的后续章节中讨论。1.2.6 计算服务Nova

或许你已经知道,Nova是OpenStack中原始和核心的组件。从架构层面来看,它也被公认为是OpenStack最复杂的组件之一。Nova在OpenStack中提供计算服务,并管理虚拟机以响应OpenStack用户提出的服务请求。

Nova项目的作用是与大量其他OpenStack服务和内部组件进行交互,Nova必须与各个服务组件相互协作,以响应用户运行虚拟机的请求。

接下来,我们将对Nova服务进行剖析。从架构层面来看,Nova本质上是一个分布式应用程序,用于在不同组件之间进行调度编排以执行任务。

1.nova-api

nova-api组件接受并响应终端用户的计算服务API调用请求。终端用户或其他组件与OpenStack nova-api接口通信,以通过OpenStack API或EC2 API创建实例。nova-api启动大多数编排活动,例如运行实例或执行某些特定策略。

2.nova-compute

nova-compute组件本质上是一个守护进程,其通过虚拟化引擎的API接口(XenServer的XenAPI、Libvirt的KVM和VMware的VMware API)创建和终止虚拟机(Virtual Machine,VM)实例。

3.nova-network

nova-network组件从队列中获取网络任务,然后执行这些任务来操作网络(例如设置桥接接口或更改IP表规则)。Neutron可替代nova-network服务。

4.nova-scheduler

nova-scheduler组件从队列中获取VM实例的请求,并确定它应该在哪里运行(具体来说应该运行在哪台计算节点主机上)。在应用架构级别,术语调度(scheduling)或调度程序(scheduler)是指在既定基础架构中,通过系统性搜索算法来找到最佳放置点以提升其性能。

5.nova-conductor

nova-conductor服务向计算节点提供数据库访问。其出发点是阻止从计算节点直接访问数据库,从而在某个计算节点受到威胁时可增强数据库安全性。

仔细观察OpenStack通用组件,我们会发现Nova会与几个服务进行交互,如用于身份验证的Keystone、用于镜像注册的Glance和实现Web接口界面的Horizon。其中一个关键的交互是与Glance服务的交互,Nova API进程会将任何与镜像查询有关的请求转发至Glance,而nova-compute会下载镜像以启动实例。Nova还提供控制台服务(console service),允许终端用户通过代理(如nova-console、nova-novncproxy和nova-consoleauth)访问虚拟机实例控制台。1.2.7 网络服务Neutron

Neutron为OpenStack服务(如Nova)管理的接口设备提供真正的网络即服务(Network as a Service,NaaS)功能。Neutron具备下述特性:

·允许用户创建自己的网络,然后将虚拟机接口关联到网络上。

·可插拔的后端架构设计使得用户可以利用各种通用商业设备或供应商特定的设备。

·提供扩展功能,允许集成其他网络服务。

Neutron还有很多新功能在不断成熟和发展的过程中。其中的一些新功能用于实现路由器、虚拟交换机和SDN网络控制器。Neutron包含以下核心资源:

·端口(port):Neutron中的端口可看成是与虚拟交换机的一种连接方式。这些连接将实例和网络连接在一起。当实例连接到子网时,已定义了MAC和IP地址的接口将被插入子网中。

·网络(network):Neutron将网络定义为隔离的第2层网段。运维人员将网络视为由Linux桥接工具、Open vSwitch或其他虚拟交换机软件实现的逻辑交换机。与物理网络不同,OpenStack中的运维人员和用户都可以定义网络。

·子网(subnet):Neutron中的一个子网代表与某个网络相关联的一个IP地址段。该段的IP地址将被分配给端口。

Neutron还提供了额外的扩展资源,以下是一些常用的扩展:

·路由器(router):路由器提供网络之间的网关。

·私有IP(private IP):Neutron定义了如下两种类型的网络。

·租户网络(tenant network):租户网络使用私有IP地址。私有IP地址在实例中可见,这允许租户在实例之间进行通信,同时保持与其他租户流量的隔离。私有IP地址对Internet不可见。

·外部网络(external network):外部网络是可见的,可从Internet上路由。它们必须使用可路由的子网段。

·浮动IP(floating IP):浮动IP是外部网络上分配的IP地址,Neutron把它映射到实例的私有IP。浮动IP地址分配给实例,以便它们能够连接到外部网络并访问Internet。Neutron通过使用网络地址转换(Network Address Translation,NAT)实现浮动IP到实例私有IP的映射。

Neutron还提供了其他高级服务来实现OpenStack网络相关的功能,如下所示:

·负载均衡即服务(Load Balancing as a Service,LBaaS),用于在多个计算实例之间分配流量。

·防火墙即服务(Firewall as a Service,FWaaS),用于保护第3层和第4层网络边界访问。

·虚拟专用网络即服务(Virtual Private Network as a Service,VPNaaS),用于在实例或主机之间构建安全隧道。可以参考最新的Mitaka版本文档,了解有关OpenStack网络的详细信息,请访问http://docs.openstack.org/mitaka/networking-guide/。

Neutron架构中的三个主要组件是:

·Neutron服务器(Neutron server):它接受API请求并将它们分配到适当的Neutron插件以便采取进一步响应。

·Neutron插件(Neutron plugin):它负责编排后端设备,例如插入或拔出端口、创建网络和子网或分配IP地址。

·Neutron代理(Neutron agent):Neutron代理在计算节点和网络节点上运行。代理程序从Neutron服务器上的插件接收命令,并使更改在各个计算或网络节点上生效。不同类型的Neutron代理实现不同的功能。例如,Open vSwitch代理通过在Open vSwitch(OVS)网桥上插入和拔出端口来实现L2连接,它们在计算和网络节点上运行,而L3代理仅在网络节点上运行并提供路由和NAT服务。代理和插件因特定云供应商所采用的技术而异,采用的网络技术可能是虚拟或物理Cisco交换机、NEC、OpenFlow、OpenSwitch和Linux桥接等。

Neutron是一种管理OpenStack实例之间网络连接的服务,它确保网络不会成为云部署中的瓶颈或限制因素,并为用户提供真正的网络自助服务,这类自助服务也包括网络配置。

Neutron的另一个优势在于它能够实现不同供应商网络解决方案的集成,并提供一种灵活的网络扩展方式。Neutron旨在提供插件和扩展机制,为网络管理员提供了通过Neutron API启用不同网络技术的选择。有关这一点的更多细节将在第6章和第7章中进行介绍。请记住,Neutron允许用户管理和创建网络,以及将服务器和节点连接到各种网络。

Neutron的可扩展性优势将在后续软件定义网络(Software Defined Network,SDN)和网络功能虚拟化(Network Function Virtualization,NFV)主题中继续讨论,这些技术对于寻求高级网络和多租户的很多网络管理员而言是非常具有吸引力的。1.2.8 计量服务Telemetry

Telemetry在OpenStack中提供计量服务。在OpenStack共享的多租户环境中,计量租户的资源使用率是非常重要的。

Ceilometer是Telemetry的主要组件之一,它负责收集与资源相关的数据。资源可以是OpenStack云中的任何实体,例如虚拟机、磁盘、网络和路由器等。资源与计量指标关联在一起。与租户相关的资源使用数据通过计量指标定义的单位进行采样,并存储到相应的数据库中。Ceilometer内置了资源使用数据的汇总功能。

Ceilometer从各种数据源收集数据,例如消息总线、轮询资源和集中代理程序等。

Liberty版本发行后,OpenStack中Telemetry服务在设计上出现了变化,即报警(Alarming)服务从Ceilometer项目中被剥离出去,并重新孵化了一个名为Aodh的新项目。Telemetry的报警服务专门用于管理报警,并根据收集到的计量数据和预定事件触发报警。

采用时序数据库Gnoochi,Telemetry服务得到了很多增强,它可应对大规模指标和事件存储带来的挑战,并可提高其性能。第10章中将会更详细地介绍Telemetry服务和系统监控。1.2.9 编排服务Heat

在Havana版本中,OpenStack首次发行了编排项目Heat。Heat最初是针对部分OpenStack资源的编排进行开发的,包括计算、镜像、块存储和网络服务。Heat通过编排不同的云资源,改善OpenStack中的资源管理方式。它是通过创建堆栈来编排资源的,最终用户只需点击执行按钮即可运行应用程序。使用简单的模板引擎文本文件——在OpenStack中称为HOT模板(Heat Orchestration Template),用户即可立即创建所需资源并运行应用程序。在最新的OpenStack版本中,Heat成熟度和支持的资源目录在不断增加,因此Heat正在成为一个极具吸引力的OpenStack项目。基于Heat项目,社区已孵化了另外的OpenStack项目,如Sahara(大数据即服务),Sahara即是使用Heat引擎来编排底层资源堆栈创建的项目。Heat正成长为OpenStack中的一个成熟组件,并可以与一些系统配置管理工具集成,如Chef,从而实现全栈自动化和配置设置。

Heat模板文件使用的是YAML或JSON格式,因此代码行的缩进很重要!OpenStack中的编排项目将在第8章中详细介绍。1.2.10 仪表盘服务Horizon

Horizon是OpenStack中的Web控制面板项目,它将OpenStack生态系统中的全部组件整合在一起进行展示。

Horizon为OpenStack服务提供了Web前端。目前,它实现了所有OpenStack服务以及一些孵化项目的可视化。Horizon被设计为无状态和无数据的Web应用程序,它只不过是将用户请求转化为对OpenStack内部服务的API调用,并将OpenStack的调用结果返回给Horizon进行显示。除了会话信息之外,Horizon不会保留任何额外数据。Horizon是一种参考架构设计,云管理员可根据需求对其进行定制和扩展。部分公有云的Web界面正是基于Horizon构建的,其中比较著名的就是惠普公有云,核心思想就是通过Horizon的扩展模块来进行构建。

Horizon由一系列面板模块(panel)构成,这些面板模块定义了每个服务的交互。根据特定需求,用户可以启用或禁用这些模块。除了具备灵活性的功能,Horizon还具有层叠样式表(Cascading Style Sheet,CSS)风格。1.2.11 消息队列

消息队列(Message Queue,MQ)提供了一个中心化的消息交换器,用于在不同服务组件之间传递消息。MQ是不同守护进程之间共享信息的地方,这些进程以异步方式实现消息互通。队列系统的主要优势就是它可以缓冲请求,并向消息订阅者提供单播和基于组的通信服务。1.2.12 数据库

数据库存储了云基础架构中大多数的构建时和运行时状态,包括可供使用的实例类型、正在使用的实例、可用网络和项目等。数据库提供了以上信息的持久存储,以便保留云基础架构的状态。数据库是所有OpenStack组件进行信息共享的重要组件。1.3 资源准备与虚拟机创建1.3.1 准备虚拟机资源

下面,我们通过一系列步骤将前面介绍的全部核心服务串联到一起,进而了解OpenStack的工作原理。(1)第一步要执行的操作是身份验证。这是Keystone要做的事情。Keystone根据用户名和密码等凭据对用户进行身份验证。(2)Keystone提供服务目录,其中包含有关OpenStack服务和API端点的信息。(3)可以使用Openstack CLI获取服务目录:服务目录是一种JSON结构,它列出了授权令牌请求上全部可用资源。(4)通常,通过身份验证后,即可与API节点通信。OpenStack生态系统中有不同的API(OpenStack API和EC2 API)。图1-1显示了OpenStack工作原理的抽象视图。图1-1 OpenStack高级视图(5)OpenStack架构设计中的另一个关键点是调度器。调度器由基于工作守护进程构建的OpenStack服务实现。工作守护进程管理各个节点上的实例启动,并跟踪运行实例物理节点上的可用资源。OpenStack服务中的调度器会查看物理节点上的资源状态(由工作守护程序提供),并从候选节点中选取一个最佳节点用于启动虚拟机。这种设计架构的一个实现就是nova-scheduler。nova-scheduler将选择合适的计算节点来运行虚拟机,而Neutron L3调度程序将决定在哪个L3网络节点上运行虚拟路由器。OpenStack Nova中的调度过程可以执行不同的算法,例如简单算法(simple)、机会算法(chance)和可用区算法(zone)。一种高级实现方法是利用权重计算(weighting)和过滤器(filter)对服务器进行排序。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载