Day01 OpenStack入门介绍

Day01 OpenStack入门介绍:

本章介绍了什么是OpenStack,及OpenStack云操作系统的组件,以及各组件的交互,达到初级的入门,以快速了解openstack这一开源的云操作系统。

简介

介绍OpenStack

一二十年前,很多大型的计算机硬件公司都通过自己生产制造专门的处理器来保持竞争优势。但随着成本的上升,能制造出足够数量的芯片来保持盈利的公司越来越少。于是,专门生产芯片的厂商出现了,它们可以大规模生产通用处理器,并且大大降低了成本。从一开始的只有少数计算机芯片厂商“鼓吹”的基于英特尔x86 指令集的标准化台式机和服务器平台,到最后形成了采用通用硬件的客户-服务器的市场格局。

在 21 世纪初的互联网风潮下,互联网快速发展,从而出现了大量大规模使用通用硬件的数据中心。虽然通用硬件设备强大且便宜,但它的架构就跟我们看到的台式机一样,不是按中心化管理的思想来设计的。没有现成的工具可以用来像管理资源池一样管理这些通用硬件设备。更糟糕的是,在那时,这些服务器缺少硬件管理的能力(辅助管理卡),看起来跟台式机一样。不像大型机和大型对称多处理结构(symmetric multiprocessing,SMP)的机器,这些通用服务器跟台式机一样,需要通过软件管理层来协调其他独立的资源。

在这个阶段,公共或者私有的组织在自己内部开发出很多管理框架来管理公共资源。图1-1展示了跨越多个数据中心的相互连接的资源池。通过管理框架,这些公共资源可以基于其可用性或者用户需求来灵活使用。不知道谁创造了这个术语,这种通过管理框架来灵活使用通用硬件设备的计算方式,可以说是拥有了资源“云”。



在此阶段,有许多个商用或者云管理软件,OpenStack是最为流行的一个。OpenStack提供了一个通用的平台来控制云计算里面的服务器(计算)、存储、网络,甚至应用资源。OpenStack可以通过基于Web的界面、命令行工具(CLI)和应用程序接口(API)来进行管理。这个管理平台不仅可以管理这些资源,更方便的是,它不需要你去选择特定的硬件或软件厂商。厂商的特定组件可以轻松地被替换成通用的组件,OpenStack为IT业界各类从业人员创造了价值。

OpenStack是什么

那么OpenStack到底是什么呢?OpenStack 官方网站这样描述这个框架:“创建私有云和公有云的开源软件。”接着是:“OpenStack软件是一个大规模云操作系统。”如果读者有服务器虚拟化的经验,也许读者会很快地得出这样不正确的结论:OpenStack 只是提供虚拟机的另外一种方式。虽然虚拟机是OpenStack 框架可以提供的一种服务,但这并不意味着虚拟机是OpenStack 的全部。

图 1-2 展示了OpenStack 通过其几个资源组件协调来提供公有云服务和私有云服务。如图所示,OpenStack 没有取代资源提供者,它只是通过框架内部的控制点来简单地管理这些资源。

一个有经验的系统管理员也许会非常怀疑OpenStack 是一个“云操作系统”的描述。OpenStack不像管理员通过启动盘引导启动几百台传统操作系统服务器那样,直接在裸设备上引导启动。相反,它通过对资源的管理,在云计算环境里共享操作系统的特性。



在OpenStack云平台上用户可以:

  • 充分利用物理服务器、虚拟服务器、网络和存储系统资源;
  • 通过租户、配额和用户角色高效管理云资源;
  • 提供一个对底层实现透明的通用资源控制接口。

乍看之下,OpenStack 确实不像是一个传统操作系统,但“云”同样不像传统计算机。我们必须回过头来重新考虑一个操作系统的根本作用。

最初,操作系统乃至硬件层面抽象语言(汇编语言)、程序都是用二进制机器码来编写的。然后传统操作系统出现了,允许用户不仅可以编写应用程序代码,还可以管理硬件功能。现在管理员可以使用通用的接口管理硬件实例,开发者可以为通用操作系统写代码,用户只需要学习一个用户交互接口即可。这样可有效地对底层硬件透明化,只需要操作系统是一样的。在计算机进化演变过程中,操作系统的发展和新操作系统的出现,给系统工程和管理领域带来了风险。

图1-3 展示了现代计算系统的各个抽象的层次。



毫无疑问,过去的一些开发者不想因为使用操作系统而失去了对硬件的直接控制,正如有些管理员不想因为服务器虚拟化而失去对底层硬件和操作系统的控制。在每次转变过程中,从机器码到汇编,再到虚拟层,我们一直没有失去对底层的控制;每次都是通过抽象手段简单标准化而已。我们仍然拥有高度优化的硬件,我们仍然拥有操作系统,只不过更常见的是我们拥有这些层面之间的硬件虚拟化层。

新的抽象层被广泛接受,通常是因为对标准实现优化的好处大于在这些层面上做(虚拟化)转换。也就是说,当整体计算资源的使用率能通过牺牲原生性能来得到很好的提升,那这一个层面的抽象就会被接受。这个现象可以通过中央处理器(CPU)的例子来清晰展现,这几十年,中央处理器都遵守相同的指令集,但它们内部的架构却发生了翻天覆地的变化。

大多数人想到中央处理器时,都没想到硬件层面的虚拟化和执行形式的变化,但事实就是这样。很多在x86 处理器上执行的指令可以被处理器内部虚拟化,一些复杂的指令可以通过一系列更简单、更快速的指令来执行。即使是使用裸设备,即使是在处理器层面,也是应用到了某种形式的虚拟化。现在,与其关注失去了控制,不如想象一下,通过使用一个共同的框架来管理、监控和部署基础设施和应用的私有和公有云。只有向前迈出转变的步伐,才会真正领会OpenStack。

关联OpenStack及其控制的计算资源

前面介绍了大段OpenStack是什么,那么它是如何工作的呢?也许,理解OpenStack是怎样工作的最简单的方式是把这个框架与企业环境内的常见技术关联起来。

在本小节中,你将会了解OpenStack是如何与它控制的基础资源(计算、存储、网络等)关联起来的。如你所见,OpenStack通常不提供实际意义上的资源,它只是简单控制这些低层次的资源。图1-4 展示了OpenStack 是如何管理资源的提供者的,它们轮流被虚拟机使用。



OpenStack 和 hypervisor

hypervisor 或者虚拟机监控器(Virtual Machine Monitor,VMM)是一种为虚拟机进行物理硬件仿真的管理软件。OpenStack 不是一个hypervisor,但它确实控制着hypervisor 的操作。OpenStack框架支持多种hypervisor,包括XenServer/XCP、KVM、QEMU、LXC、ESXi、Hyper-V、BareMetal和其他可通过下列网址查看hypervisor 的支持列表。读者可能对VMware ESX、VMware ESXi 和Microsoft Hyper-V 比较熟悉,因为这些是当前企业虚拟化市场主流的hypervisor。因为许可限制、成本和其他因素,OpenStack 社区对这些商业hypervisor 的支持要少于开源的hypervisor。

图 1-5 展示了OpenStack 如何管理物理硬件上被hypervisor 虚拟化的资源。在一个OpenStack集群内,OpenStack 协调多个hypervisor 资源和虚拟机的管理。



无论部署规模多大,大多数的个人和组织采用的hypervisor 是XenServer 或者KVM,它们也是支持最多功能的hypervisor。XenServer 是思杰(Citrix)公司的产品,从严格意义上来说,它是开源的hypervisor,但商业支持通过思杰公司提供。KVM 已经是Linux 内核的一部分,因此,很多Linux 发行版的维护者提供KVM 的商业支持,包括红帽(Red Hat)、Ubuntu、SUSE 等。

OpenStack和网络服务

OpenStack 不是一个虚拟交换机,但它确实管理多个物理、虚拟的网络设备和虚拟覆盖网络(overlaynetwork)。不像OpenStack 控制虚拟机控制器那样受限于hypervisor 提供的服务,OpenStack 直接提供网络服务,如DHCP、路由等。但与hypervisor 管理类似,OpenStack 对底层厂商技术透明,可以是商业或者开源的技术。

更重要的是,后端技术的改变,如从一种网络/厂商切换到另一种网络/厂商,并不需要客户端配置进行改动。对于涉及网络的大量专有的硬件、软件和用户接口,经常从一个厂商或者技术转换到另一个并非易事。通过OpenStack,这些接口都被OpenStackAPI 抽象化了,如图1-6 所示。OpenStack 可以管理多种类型的网络技术(实现机制),包括由Arista Networks、Cisco Nexus、Linuxbridging 和Open vSwitch(OVS)等提供的技术。



我们将使用OpenStack 和OVS 提供的网络服务。OVS 是OpenStack 部署中常被选择的
一种,用户可以简单地在自己的环境里获得和复制,不需要特定硬件环境。除了网络实现机制,还有很多被OpenStack 支持的网络类型(VLAN 和各种隧道技术等),

OpenStack 和存储

OpenStack 不是一个存储阵列,至少应该不是你通常认为的存储那种形式。OpenStack 没有从物理上提供被虚拟机使用的存储。

如果你曾经使用过文件共享(NFS 和CIFS 等),就会用过“基于文件”的存储。这种存储的类型很容易被人使用和被计算机访问,但它通常是另外一种存储类型的抽象:块存储。你可以
认为操作系统或者文件系统是块存储的主要用户。

还有另外一种系统管理员可能不熟悉的存储类型:基于对象的存储。这种类型的存储通常是通过软件API(如GET /obj=xxx)接口进行访问。基于对象的存储是文件或块存储的更高层面的抽象,但没有后两者的限制。基于对象的存储可以很容易地在多个参与节点之间进行分布和复制。不像块存储那样需要被虚拟机快速访问,分布式的对象存储允许更大的延迟,将不能用作虚拟机的卷(volume,挂载到一个实例上的块设备)。通常做法是在创建时就指明使用对象存储来存放卷和镜像(包含操作系统)的备份。

下面首先介绍OpenStack 是如何管理块存储的,然后介绍对象存储的相关内容。

1.块存储

OpenStack 现在没有为最终用户管理基于文件的存储。由下图可以看出,OpenStack 管理块(虚拟机)存储与管理hypervisor 和网络类似。

下图从基础虚拟机资源管理展望的角度展示了其全貌。OpenStack 可以管理很多厂商提供的存储解决方案,包括来自Ceph、戴尔(Dell)、EMC、惠普(HP)、IBM 和NetApp 等厂商的方案。与hypervisor 和网络组件一样,OpenStack 提供灵活切换存储厂商和技术的能力,并且不需要改变客户端的配置。



2.对象存储

虽然 OpenStack 不是一个用于块存储(用来启动虚拟机)的存储阵列,但它天生拥有提供对象存储的能力。与在物理硬件上运行Linux 的支持版本不同,OpenStack 提供分布式对象存储集群时并不需要其他软件。这种存储类型可以用来存放卷备份,也通常用来存放大量可以被分割成二进制对象的数据。下图展示了一个基本的对象服务器部署,当然这些都包含在OpenStack 环境中。

对象存储不是必须在同一地点。事实上,节点(代理节点和存储节点)可以在多个不同的地点,互为冗余。



对象存储传统的用法是存储那些被应用访问的数据,如被用户的应用程序使用的一个文档或文件。在OpenStack 环境中,对象存储有几种用法。例如,使用对象存储作为虚拟机镜像的仓库。这样并不是说虚拟机直接使用了这些存储,它们只是通过这个存储系统维护的数据被提供出来。这样做是合理的,因为这个提供过程不需要对随机数据的低延时访问。对象存储还会用来备份一个现有的虚拟机的快照,用于长期保存备份。

组件

OpenStack 组件介绍

前面我们介绍了OpenStack 基本的功能,本节我们将会分析组成OpenStack 框架的基本组件。下图列举了多个OpenStack 组件或核心项目。虽然还有更多现处在不同开发阶段的项目,
但下图中所列的是OpenStack 的基本组件。最新的OpenStack 服务路线图可以在OpenStack 路线图网页(www.openstack.org/software/roadmap/)中找到。



上图所示的是OpenStack的核心组件,为必须品,其余的组件可依照自己的需求选加。OpenStack的简介到这里就完了,接下来将会实战进行一次OpenStack的手动搭建,以便掌握OpenStack的部署步骤。

在此感谢参考书籍《OpenStack实战,V.K.Cody Bumgardner》,文中图片大部分来源此书,感谢原作者!!!

文章目录
  1. 1. 简介
    1. 1.1. 介绍OpenStack
    2. 1.2. OpenStack是什么
    3. 1.3. 关联OpenStack及其控制的计算资源
      1. 1.3.1. OpenStack 和 hypervisor
      2. 1.3.2. OpenStack和网络服务
      3. 1.3.3. OpenStack 和存储
  2. 2. 组件
    1. 2.1. OpenStack 组件介绍
dn-lbstatics.qbox.me