OpenStack 是 Rackspace(一 家 美 国 的 云 计 算 厂 商 ) 和 美 国 国 家 航 空 航 天 局(National Aeronautics and Space Administration, 简称 NASA) 在2010 年的 7 月发起了 OpenStack 项目。
由 Rackspace 贡献存储源码(Swift)、 NASA 贡献计算源码(Nova)。
OpenStack 是一个通过数据中心控制计算资源、 存储资源和网络资源的云平台。 同时它又是一款开源软件, 以 Apache 许可证授权的自由软件和开放源代码项目, 支持所有类型的云环境;
OpenStack 的目标是提供简单实施、 可扩展以及丰富的功能集的云产品, 来自全世界的云计算专家共同维护该云项目。 OpenStack 通过多种补充服务提供了 IaaS 解决方案,每一种服务均提供了相应的应用程序接口(Application Programming Interface, 简称 API),以促进各组件之间的整合;
OpenStack 被用来提供公有云以及私有云的建设以及管理。 作为一个开源项目, 其社区规模涵盖 130 家企业以及 1350 位开发人员。这些机构与个人都将 OpenStack 作为 IaaS 资源的通用前端;
OpenStack 覆盖了网络、 虚拟化、 操作系统、 服务器等各个方面。 一般情况下, 每半年左右更新一次版本。
服务 | 项目名称 | 描述 |
---|---|---|
Compute (计算服务) | Nova | 负责实例生命周期的管理,计算资源的单位。对Hypervisor进行屏蔽,支持多种虚拟化技术(红帽默认为KVM),支持横向扩展 |
Network(网络服务) | Neutron | 负责虚拟网络的管理,为实例创建网络的拓扑结构。是面向租户的网络管理,可以自己定义自己的网络,各个租户之间互不影响 |
Identity(身份认证服务) | Keystone | 类似于LDAP服务,对用户、租户和角色、服务进行认证与授权,且支持多认证机制 |
Dashboard(控制面板服务) | Horizon | 提供一个Web管理界面,与OpenStack底层服务进行交互 |
Image Service(镜像服务) | Glance | 提供虚拟机镜像模板的注册与管理,将做好的操作系统拷贝为镜像模板,在创建虚拟机时直接使用,可支持多格式的镜像 |
Block Storage(块存储服务) | Cinder | 负责为运行实例提供持久的块存储设备,可进行方便的扩展,按需付费,支持多种后端存储 |
Object Storage(对象存储服务) | Swift | 为OpenStack提供基于云的弹性存储,支持集群无单点故障 |
Telemetry (计量服务) | Ceilometer | 用于度量、监控和控制数据资源的集中来源,为OpenStack用户提供记账途径 |
1.控制性:
完全开源的平台,提供API接口,方便与第三方技术集成
2.兼容性:
OpenStack兼容其它公有云,方便用户进行数据迁移
3.可扩展性:
模块化设计,可以通过横向扩展,增加节点,增加资源
4.灵活性:
根据自己的需要建立相应基础设施,增加集群规模
5.行业标准:
Openstack 项目采用 Apache2 许可, 意味着第三方厂家可以重新发布源代码。
众多IT领军企业已经加入到OpenStack项目,意味着 OpenStack 在未来可能形成云计算行业标准
顾名思义就是OpenStack中实现数据中心控制的节点,管理 OpenStack的所有服务组件;
所有组件不管在哪里,都需要在控制节点上完成类似注册的工作
负责对其余几点的控制,包含虚拟机创建、迁移、网络分配、存储分配等等
控制节点架构:
数据库作为基础/扩展服务产生的数据存放的地方
消息代理服务(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务
1.Keystone:认证管理服务、提供了其余所有组件的认证信息/令牌的管理、创建、修改等等、使用MySQL等数据库存储认证信息;
2.Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供镜像的管理、包含镜像的导入、格式以及制作相应的模板;
3.Nova:计算管理服务,提供了对计算节点的Nova管理、使用Nova-API(入口节点)进行通信;
4.Neutron:网络管理服务、提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理界面;
5.Horizon:控制台服务,提供了以Web形式对所有节点的所有服务的管理,通常把该服务成为Dashboard
1.Cinder:提供管理存储节点的Cinder相关、同时提供Cinder在Horizon中的管理面板;
2.Swift:提供管理存储节点Swift相关、同时提供Swift在Horizon中的管理面板;
3.Trove:提供管理数据库节点的Trove先关、同时提供Trove在Horizon中的管理面板;
4.Heat:提供了基于模板来实现云环境中的资源的初始化,依赖关系处理,部署等基本操作;
也可以解决自动收缩、负载均衡等高级特性
5.Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些书库,读数据进行分析在一定条件下出发现货供应动作。
控制节点通常来说只需要一个网络端口来用于通信和管理各个节点
1.Cinder:块存储服务,提供相应的块才能出,简单来说,就是虚拟出一块存盘,可以挂载到相应的虚拟机之上,不收
文件系统的影响,对虚拟机来说,这个操作像是加了一块硬盘,可以完成对磁盘的任何操作,包括挂载、卸载、格式化,
转换文件系统等等操作,大多应用于虚拟机空间不足的情况下的空间扩容等;
2.Swift:对象存储服务,提供相应的独享存储、简单来说,就是虚拟出一块磁盘空间,可以在这个空间当中存放文件,也
仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件。
端口1:与控制节点进行通信,接受控制节点任务,受控制节点统一调配;
端口2:与计算/网络节点进行通信,完成控制节点下发的各类任务。
1.基础服务
Nova:提供虚拟机的创建、运行、迁移、快照等围绕虚拟机的服务、并提供API与控制节点对接、由控制节点下发任务
Neutron:提供计算节点与网络节点之间的通信
2.扩展服务
Telmeter:提供计算节点监控代理、将虚拟机的情况反馈的控制节点,是Centimeter的代理服务
端口1:与控制节点进行通信,受控制节点统一调配
端口2:与网络节点,存储节点进行通信
端口1:用于与控制节点进行通信
端口2:用于除了控制节点之外的计算/存储节点之间的通信
端口3:用于外部的虚拟机与相应的网络之间通信
1.租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的
划分使用租户中的资源。
2.项目是各个服务中的一些可以访问的资源集合,用来分组或隔离资源或身份对象。不同服务中,项目所涉及的资源不同。
在Nova服务中项目可以是云主机,在 Swift和 Glance中项目可以是镜像存储,在 Neutron中项目可以是网络资源。
默认情况下,用户总是被绑定到项目中。一个项目中可以有多个用户,一个用户可以属于一个或多个项目。
1.角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。
安全包含两部分:Authentication(认证)和 Authorization(鉴权)
2.角色是一组用户可以访问的资源权限集合,这些资源包含虛拟机、镜像、存储资源等。
用户既可以被添加到全局的角色,也可以被添加到指定项目内的角色中。其区别是,全局的角色适用于所有项目中的资源权限
而项目内的角色只适用于某个项目内的资源权限。
1.Openstack Service,即Openstack中运行的组件服务。nova,glance都是属于一个服务,需要在keystone上进行
创建指定类型。
2.用户使用云中的资源是通过访问服务的方式实现, OpenStack中包含许多服务,如提供计算服务的Nova、提供镜像服务
的 Glance以及提供对象存储服务的 Swift。一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个用户尝试
访问其项目内的 service时,该用户必须知道这个服务是否存在以及如何访问这个服务。
3.创建服务有一个服务,就创建一个endpoint,会根据服务类型去查找那个服务。Service 决定每个 Role 能做什么
事情,Service 通过各自的 policy.json 文件对 Role 进行访问控制
1.指的是一串比特值或者字符串,用来作为访问资源的令牌。Token中含有可访问资源的范围和有效时间。
2.是一串数字字符串,用于访问0 penStock服务的API以及资源。一个令牌可以在特定的时间内生效,并可以在任意时间
释放。在 keystone中主要是引入令牌机制来保护用户对资源的访问。
glance-api用于接收镜像API的调用,诸如镜像发现、恢复以及存储等。作为一个后台进程, glance-api对外提供
REST API接口,响应用户发起的镜像查询、获取和存储的调用
glance- registry用于存储、处理和恢复镜像的元数据,元数据包括镜像的的大小和类型等属性, registry是一个内部
服务接口,不建议暴露给普通用户
database用于存放镜像的元数据,可以根据需要选择数据库,如 MySQL、 SQLite等。
一般情况下, glance并不需要存储任何镜像,而是将镜像存储在后端仓库中。 Glance支持多种 repository。
主要包括对象存储 Swift、块存储 Cinder、 VMware的ESX/ESXi或者vCenter、亚马逊的S3、HTTP可用服务器、Ceph等
RAW VDI
QCOW2 ISO
VHD AKI,ARI,AMI
VMDK
Router:为用户提供路由,NAT等服务
Network:对应于一个真实物理网络中的二层局域网(VLAN)
Subnet:指定一段IPV4或IPV6地址并描述其相关的配置信息
Nova是负责提供计算资源的模块,也是OpenStack中的核心模块,其主要功能是负责虚拟机实例的生命周期管理、网络管理、存储卷管理、用户管理以及其他的相关云平台管理功能。
OpenStack使用计算服务来托管和管理云计算系统。 OpenStack计算服务是基础设施服务(IaaS)系统的主要组成部分,模块主要由 Python实现。
OpenStack计算组件请求 OpenStack Identity服务进行认证,请求 OpenStack Image服务提供磁盘镜像,为 OpenStack Dashboard提供用户和管理员接口。磁盘镜像访问限制在项目与用户上,配额以每个项目进行设定
1.接收到一个来自队列的运行虚拟机实例请求,然后决定在哪台计算服务器主机来运行该虚拟机。通过恰当的调度算法从可
用资源池获得一个计算服务。Nova- Scheduler服务将根据负载、内存、可用域的物理距离、CPU构架等信息,并运行调度
算法,最终做出调度决策。
2.最终OpenStack计算模块Nova中的各个组件是以数据库和队列为中心进行通信的
虚拟交换机/网桥
虚拟路由器
Namespace
DHCP
浮动IP地址
Cinder-api
Cinder-api用来接受API请求,并将其路由到 Cinder-Volume执行。
Cinder-Volume
Cinder-Volume用来与块存储服务和 Cinder- Scheduler进程进行直接交互。
它也可以与这些进程通过一个消息队列进行交互。
Cinder- Scheduler
Cinder- Scheduler守护进程会选择最优存储节点来创建卷,其工作机制与Nova- Scheduler类似。
Cinder- Backup守护进程
Cinder- Backup服务提供任何种类备份卷到一个备份存储提供者。就像 Cinder- Volume服务,它与多种存储提供者在驱动架构下进行交互。
消息队列
消息队列作用是在块存储的进程之间路由信息。 Cinder各个子服务通过消息队列实现进程间通信和相互协作。
以创建卷为例, Cinder的工作流程如下:
1.用户向 Cinder-API发送创建卷请求:“帮我创建一个卷“
2.Cinder-API对请求做一些必要处理后,向消息队列发送一条消息:“让Cinder- Scheduler创建一个卷”;
3.Cinder- Scheduler从消息队列获取到消息,然后执行调度算法,从若干存储节点中选出节点A
4.Cinder- Scheduler向消息队列发送一条消息:“让存储节点A创建这个卷”;
5.存储节点A的 Cinder- Volume从消息队列中获取到消息,然后通过卷提供者的驱动创建卷。
代理服务(ProxyServer)
认证服务(AuthenticationServer)
缓存服务(CacheServer)
账户服务(AccountServer)
复制服务(Replicator)
更新服务(Updater)
容器服务(ContainerServer)
对象服务(ObjectServer)
审计服务(Auditor)
账户清理服务(AccountReaper)
(1)硬盘RAID、分区和格式化;
(2)安装操作系统、驱动程序;
(3)安装应用程序。
ronic实现的功能,就是可以很方便的对指定的一台或多台裸机,执行以上一系列的操作。
例如部署大数据群集需要同时部署多台物理机,就可以使用Ironic来实现。Ironic可以实现硬件基础设施资源的快速交付。
1.OpenStack 是一系列开源工具(或开源项目)的组合,主要使用池化虚拟资源来构建和管理私有云及公共云。
2.其中的六个项目主要负责处理核心云计算服务,包括计算、网络、存储、身份和镜像服务。
3.还有另外十多个可选项目,用户可把它们捆绑打包,用来创建独特、可部署的云架构。