OpenStack 是面向 Iaas 服务的,即基础架构云平台。该平台的可以比喻成一个生产虚拟化基础架构的车间。这个车间主要生产 a. 虚拟机实例,b. 虚拟存储块,c. 虚拟网段等云服务组件,而每种服务组件都有相应的“车间主任”进行管理、调度和分配,这里的“车间主任”就是 OpenStack 云平台的管理模块,下面对 OpenStack 的管理模块进行介绍:
Identify(Keystone)
为OpenStack其它几个模块提供认证服务,整个keystone其实就是在数据库中建立用户(user)、角色(role)、Tenant、服务(service)、endpoint以及其相互对应关系。Tenant在之前的版本中叫做Project,Tenant是一个独立的资源容器。每个Tenant都可以定义独立的VLAN, volumes, instances, images, keys, users等。服务指的是OpenStack所提供的那几种服务(network, volume, image, identify, compute, swift)。endpoint是指各服务的内部、外部及管理接口址(REST API)。这个模块可以看做是云系统车间的安全部门。
Compute(Nova)
这个模块很重要,可以说是 OpenStack 的核心模块之一,以至于在 OpenStack 的初期版本里大部分的云系统管理功能都是由该模块负责管理的,只不过后来为了减轻该“车间主任”的压力,也便于功能分配管理,才把虚拟存储、网络等部分分离出来,而使该模块主要负责云虚拟机实例(Compute 或 Instance) 的生成、监测、终止等管理功能。
它由nova-compute模块通过libvirt、XenAPI等管理hypervisor,从而管理虚机,此外它还通过nova-api服务向外提供如EC2兼容、管控功能等的接口,通过nova-scheduler模块提供虚机调研逻辑等;这些模块间的通信全部通过消息队列完成。
Image(Glance)
提供云虚拟机上的服务镜像(Image)功能,该模块可看成车间里的模具生产部门,该模具最基本的使用方式就是在为云虚拟机实例提供安装操作系统的模式,比如 RedHat Linux、Ubuntu、Windows 等。同时云服务使用者也可以在已经生成和个性化安装后的云虚拟机实例来生成自定义的镜像。这样以后就可以根据该自定义镜像直接生成所需的虚拟机实例。
Network(Neutron)
提供 OpenStack 虚拟网络服务,也是 OpenStack 重要的核心模块之一,该模块最开始是 Nova 的一部分,叫 nova-network,后来从 Nova 中分离出来,开始名字为 Quantum,后来由于商业名权的原因改为了 Neutron。该模块之所以重要是因为如果没有虚拟网络服务,OpenStack 就变为单纯提供虚拟机实例和虚拟存储服务的平台,这就违背了提供分布式虚拟服务的云计算核心价值。该模块不仅提供基本的创建子网、路由和为虚拟机实例分配 IP 地址功能,还提供了 a. 同时支持多种物理网络类型,支持 Linux Bridge、Hyper-V 和 OVS bridge 计算节点共存;b. 支持防火墙服务;c. 支持虚拟网络中节点间 v*n 服务;d. SDN 实现完善和提高。
在OpenStack的网络管理流程中,通常需要经过以下几个步骤:
1.创建一个网络;
2.创建一个子网;
3.启动一个虚机,将一块网卡对接到指定的网络上;
4.删除虚机;
5.删除网络端口;
6.删除网络;
Block Storage(Cinder)
提供 OpenStack 存储块(Volume)服务,该管理模块原来也为 Nova 的一部分,即 Nova-volume,后来从 Folsom 版本开始使用 Cinder 来分离出块存储服务。具体地说 Cinder 是云存储服务的调度监控模块,它需要与如 NFS、Ceph 等网络文件系统配合使用。
Dashboard(Horizon)
为 OpenStack 提供交互式界面的 UI 组件。
Object Storage(Swift)
对象存储,存储的是一些资源文件,如图片、代码等文件。对象存储服务是OpenStack最早期的两个服务之一(另一个是计算服务),在OpenStack平台中,任何的数据都是一个对象。
以上是 OpenStack 的基本组件,通过这些组件就可以搭建一套基本的云计算服务平台,如果再加入用于 OpenStack 系统资源监控的 Ceilometer、云系统部署用的 Heat、以及大数据部署的Sahara,该云计算平台则会更加完善。
Openstack概念架构图
先看 OpenStack 官网上的该云系统的概念图,该概念图展示了 OpenStack 云系统上各模块是如何协同工作的以及工作流程,这使我们对 OpenStack 各组件的逻辑概念有了先导的作用。之后我们通过各组件的逻辑概念再逐步深入了解 OpenStack 的逻辑架构
在制定好的云系统平台上,用户在经 KeyStone 模块授权后(Provide Auth),通过 Horizon 或 RestAPI 模式创建虚拟机服务。创建过程包括了利用 Nova 模块创建虚拟机实例(VM Provision),该 VM 采用了 Glance 模块提供的镜像服务(Provide Image),然后用 Neutron 模块为新建的 VM 分配 IP 地址,把其纳入到虚拟网络中(Provide network connectivity),之后再通过 Cinder 模块创建的 Volume 为 VM 挂载存储块。整个过程都在 Cellometer 模块的资源监控下(Monitors),Cinder 产生的 Volume 和 Glance 提供的 Image 可以通过 Swift 的对象存储机制进行保存。
通过以上解析我们可以看到 OpenStack 云平台服务的提供主要是依靠 Nova、Glance、Cinder 和 Neutron 四个核心模块完成的,相对四个辅助模块 Horizon、Cellometer、Keystone、Swift 提供的访问、监控、权限和对象存储功能
OpenStack的存储服务分为三种:Glance、Swift、Cinder;
- Glance(镜像存储)是一个镜像存储管理服务,本身不具备存储的功能;
- Cinder (块存储)提供块存储的接口;本身也不提供数据的存储,后面也需要接一个存储的后端,像 EMC 的散设备,华为的存储设备,NetApp 的存储设备可以做它的后端。还有一个比较火的开源分布式存储叫 Ceph,Ceph 也提供块存储服务,也可以用来作为 Cinder 的后端。Cinder 的作用就是为 OpenStack 提供块存储的接口,有个很重要的功能叫卷管理功能,虚拟机并不直接去使用存储设备(并不直接去使用后端的存储系统),使用的是虚拟机上的块设备(卷 Volume),实际上 Cinder 就是创建和管理这些 Volume 并且把它挂载到虚拟机上。Cinder 是从 Nova Volume 里面独立出来的,独立出来之后很受各种存储厂商的欢迎,可以通过写 Cinder Driver 的形式把自己的存储设备纳入到 OpenStack 的生态圈里面去。
-
Swift (对象存储)提供的是对象存储服务,同样的具有像亚马逊 IWSS3 的特点,提供通过RESTful API 的方式去访问数据,这样做是为了解决两个问题:第一个,我们可以直接去访问一个存储,而不需要在通过自己开发的 Web 服务器去做一次数据的转发,否则对服务器的负载来说是一种压力。第二个,在我们的大数据时代,当数据量特别大的时候,如果我们用文件系统就会出现问题:文件的数量激增以后,存储的性能会急剧下降,而对象存储实际上则是解决这个问题的,对象存储抛弃了那种目录树的结构,用一种扁平化的结构去管理数据。Swift 实际上只有三层结构,即 Account、Container、Object。Object 就是最终的那个数据了,就是文件,前面有两级管理,一级是 Container 容器,它把 Object 放到容器里面,然后再上面一级是 Account,是和账户去关联的,Container 相当于是把这些 Object 做了分类,用 Account 去跟账户关联起来。
OpenNebula物理架构
OpenNebula不像OpenStack有一堆服务,每个宿主机上要运行一堆进程。Nebula的开发原则就是轻量,简单。所以除了在控制节点运行几个接受用户请求的服务外,在计算节点不需要运行任何服务,只要OpenNebula可以通过ssh连到计算节点即可。如下图所示,OpenNebula就是控制节点,在此节点上运行着OpenNebula和OpenNebula-sunstone。前者主要负责处理XML-RPC请求,XML-RPC和REST API类似。后者就是Dashboard,Web UI。 绿色的框就是计算节点,计算节点里运行着虚拟机。 控制节点和计算节点通过ssh进行通信,如此的好处是极度的简单和轻量,基本上计算机点没有浪费任何的资源在OpenNebula服务中,这和OpenStack相比差异很大。另外,劣势也很明显,导致了项目代码的混乱和不好维护。因为所有对虚拟机的操作最终都转化为ssh,virsh这样的命名,导致很难写单元测试,并且代码可读性也因此受影响。
CloudStack
CloudStack是一个开源的具有高可用性及扩展性的云计算平台。目前CloudStack支持管理大部分主流的hypervisors,如 KVM,XenServer,VMware,Oracle VM,Xen等。同时CloudStack是一个开源云计算解决方案。可以加速高伸缩性的公共和私有云(IaaS)的部署、管理、配置。使用 CloudStack作为基础,数据中心操作者可以快速方便的通过现存基础架构创建云服务。 CloudStack概念架构
-
用户:通过网络访问属于我的虚拟机、存储空间、管理我的个人模板。
管理员:部署配置,管理账户,监控资源,安排作业,排除故障
开发人员:开发计费、监控、统计报表等功能模块,定制图形界面、工作流
CloudStack部署架构
Zone:Zone 对应于现实中的一个数据中心,它是 CloudStack 中的一个单元。
Pod:Pod 对应着一个机架。同一个 pod 中的机器在同一个子网(网段)中。
Cluster:Cluster 是多个主机组成的一个集群。同一个 cluster 中的主机有相同的硬件,相同的 Hypervisor,和共用同样的存储。同一个 cluster 中的虚拟机,可以实现无中断服务地从一个主机迁移到另外一个上。
Host:Host 就是运行虚拟机(VM)的主机。
即从包含关系上来说,一个 zone 包含多个 pod,一个 pod 包含多个 cluster,一个 cluster 包含多个 host。
Primary storage:一级存储与 cluster 关联,它为该 cluster 中的主机的全部虚拟机提供磁盘卷。一个 cluster 至少有一个一级存储,且在部署时位置要临近主机以提供高性能。
Secondary storage:二级存储与 zone 关联,它存储模板文件,ISO 镜像和磁盘卷快照。
模板:可以启动虚拟机的操作系统镜像,也包括了诸如已安装应用的其余配置信息。
ISO 镜像:包含操作系统数据或启动媒质的磁盘镜像。
磁盘卷快照:虚拟机数据的已储存副本,能用于数据恢复或者创建新模板。 -
CloudStack和OpenStack的比较
下面我们就来看一来两大云平台的比较:
此文转自CSDN