云计算管理的是网络资源、存储资源、服务器资源等物理硬件资源。可以使客户在任何时间任何地点,通过网络,获取所需要的资源或服务,并且按需分配,按用量进行收费。
按需自助服务
视客户需要,可以从每个服务提供商那里单方面地向客户提供计算能力,譬如,服务器时间和网络存储,而这些是自动进行无需干涉的
广泛的网络访问
具有通过规范机制网络访问的能力,这种机制可以使用各种各样的瘦和胖客户端平台(例如,携带电话、笔记本电脑以及PDA)
资源共享
提供商提供的计算资源被集中起来通过一个多客户共享模型来为多个客户提供服务,并根据客户的需求,动态地分配或再分配不同的物理和虚拟资源。有一个区域独立的观念,就是客户通常不需要控制或者需要知道被提供的资源的确切的位置,但是可能会在更高一层的抽象(例如,国家、州或者数据中心)上指定资源的位置。资源的例子包括存储设备、数据加工、内存、网络带宽和虚拟机等
快速的可伸缩性
具有快速地可伸缩性地提供服务的能力。在一些场景中,所提供的服务可以自动地,快速地横向扩展,在某种条件下迅速释放、以及快速横向收缩。对于客户来讲,这种能力用于使所提供的服务看起来好象是无限的,并且可以在任何时间、购买任何数量
可度量的服务
云系统通过一种可计量的能力杠杆在某些抽象层上自动地控制并优化资源以达到某种服务类型(例如,存储、处理、带宽以及活动用户帐号)。资源的使用可以被监视和控制,通过向供应商和用户提供这些被使用服务报告以达到透明化
架构即服务 (IaaS)
向客户提供处理、存储、网络以及其他基础计算资源,客户可以在上运行任意软件,包括操作系统和应用程序。用户不管理或者控制底层的云基础架构,但是可以控制操作系统、存储、发布应用程序,以及可能限度的控制选择的网络组件(例如,防火墙)
发布模型:
私有云(使用计费)
云基础架构被一个组织独立地操作,可能被这个组织或者第三方机构所管理,可能存在于某种条件下或者无条件存在。
社区云
云基础架构被几个组织所共享,并且支持一个互相分享概念(例如,任务、安全需求、策略和切合的决策)的特别的社区。可能被这些组织或者第三方机构所管理,可能存在于某种条件下或者无条件存在。
公有云
云基础架构被做成一般公共或者一个大的工业群体所使用,被某个组织所拥有,并出售云服务。
混合云(公有云,私有云)
云基础架构是由两个或者两个以上的云组成,这些云保持着唯一的实体但是通过标准或者特有的技术结合在一起。这些技术使得数据或者应用程序具有可移植性。(例如,在云之间进行负载平衡的Cloud Bursting技术)(硬件资源超负荷)
提供底层IT基础设施服务,包括处理能力,存储空间、网络资源
一般面对对象是IT管理人员。
场景:用户可获取的是硬件或虚拟硬件,包括裸机或虚拟机,可以自行安装操作系统或其他应用程序。openstack就是一种IAAS云服务。
用户通过网络获取虚机、存储、网络,然后用户根据自己的需求操作获取的资源
把安装好开发环境的系统平台作为一种服务通过互联网提供给用户
一般面对对象是开发人员。
场景:用户可获取的是安装了操作系统以及支撑应用程序运行所需要的资源库等软件的物理机或虚拟机,可以自行安装其他应用程序,但不能修改已经预装好的操作系统和运行环境。
将软件研发平台作为一种服务, 如Eclipse/Java编程平台,服务商提供编程接口/运行平台等
SAAS(软件即服务)
直接通过互联网为用户提供部署好的软件和应用程序的服务,可直接使用
一般面向对象是普通用户。
场景:用户可获取的是以租赁的方式来直接使用一些软件,而不是购买。
将软件作为一种服务通过网络提供给用户,如web的电子邮件、HR系统、订单管理系统、客户关系系统等。用户无需购买软件,而是向提供商租用基于web的软件,来管理企业经营活动
NASA(美国国家航空航天局)和rackspace共同发起,以apache许可证授权的自由软件和开放源代码项目。为公有云及私有云的建设与管理提供软件的开源项目,覆盖了网络、虚拟化、操作系统、服务器等各个方面。openstack是一个开源的云计算管理平台架构,是一系列开源的软件项目的组合。云平台的底层支持(与传统运维分水岭)。
控制性
完全开源的平台,提供API接口,方便与第三方技术集成
兼容性
OpenStack兼容其他公有云,方便用户进行数据迁移
可扩展性
模块化设计,可以通过横向扩展,增加节点、添加资源
灵活性
根据自己的需要建立相应基础设施、增加集群规模
行业标准
众多IT领军企业已经加入到OpenStack项目
服务 | 项目 | 简述 | 介绍 |
---|---|---|---|
Compute 计算服务 | Nova | 负责创建,调度,销毁云主机 | 负责实例生命周期的管理,计算资源的单位。对Hypervisor(又称虚拟机监视器(英语:virtual machine monitor,缩写为 VMM),是用来建立与执行虚拟机器的软件、固件或硬件。)进行屏蔽,支持多种虚拟化技术(红帽默认为KVM),支持横向扩展 负责创建,调度,销毁云主机 |
Network 网络服务 | Neutron | 负责实现SDN | 负责虚拟网络的管理,为实例创建网络的拓扑结构。是面向租户的网络管理,可以自己定义自己的网络,各个租户之间互不影响 |
Identify | 身份认证服务 Keystone | 为访问openstack各组件提供认证和授权功能,认证通过后,提供一个服务列表(存放你有权访问的服务),可以通过该列表访问各个组件 | 类似于LDAP服务,对用户、租户和角色、服务进行认证与授权,且支持多认证机制 |
Dashboard 控制面板服务 | Horizon | 就是web展示界面操作平台,方便用户交互 | 提供一个Web管理界面,与OpenStack底层服务进行交互 |
Image Service 镜像服务 | Glance | 提供镜像服务,装机使用 | 提供虚拟机镜像模板的注册与管理,将做好的操作系统拷贝为镜像模板,在创建虚拟机时直接使用,可支持多格式的镜像 |
Block Storage 块存储服务 | Cinder | 提供持久化块存储,即为云主机提供附加云盘 | 负责为运行实例提供持久的块存储设备,可进行方便的扩展,按需付费,支持多种后端存储 |
Object Storage 对象存储服务 | Swift | 目录结构存储数据 | 为OpenStack提供基于云的弹性存储,支持集群无单点故障 |
Telemetry 计量服务 | Ceilometer | 很明显自用的根本不需要这功能,而且所谓的监控其实根本也算不上什么监控,监控性能,计费 | 用于度量、监控和控制数据资源的集中来源,为OpenStack用户提供记账途径 |
核心为虚拟机,所有组件围绕虚拟机,为它提供服务。可将上图的架构分为三个部分:
红色方框为全局组件:
keystone:为所有服务模块提供认证与授权
ceilometer:度量、监控所有数据资源
horizon :UI平台管理,提供一个web管理页面,与底层交互
橙色方框为辅助组件:
ironic 提供裸金属环境(没有操作系统的计算机硬件,简称裸机)
trove 提供管理数据库服务(控制关系型和非关系型数据库)
heat,sahara 提供对数据管理和编排
黄色方框为核心组件:
glance:提供镜像服务
neutron:提供网络服务
swift:提供对象存储资源
cinder:提供快存储资源
nova:管理实例的生命周期,并负责调取以上四个资源给虚拟机使用。
具体流程
云平台用户在经过Keystone服务认证授权后,通过Horizon或者Reset API模式创建虚拟机服务,创建过程中包括利用Nova服务创建虚拟机实例,虚拟机实例采用Glance提供镜像服务,然后使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中,之后在通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume)和Glance提供的镜像(Image) 可以通过Swift的对象存储机制进行保存。
ps:
MQ(Message Queue)消息队列
是基础数据结构中“先进先出”的一种数据结构。一般用来解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构。
常用的三种类型,包括rabbitmq、 rocketmq、kafka,是两个独立的服务之间,消息传递的载体,解决消息在传输是请求的高并发问题,会以容器的方式,存储消息列表(包括请求、交互、报文),划分重要等级放入队列中,逐个处理,处理完的会自动删除。
Token
服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
简单看就是内部核心组件、辅助组件、全局组件,各组件之间通过api进行对接,通讯则采用消息代理(rabbitmq)。核心组件的功能模块,以及单个功能模块之间如何通讯。
全局,架构层面
OpenStack包括若干个称为OpenStack服务的独立组件,所有服务均可通过一个公共身份服务进行身份验证,除了那些需要管理权限的命令,每个服务之间均可通过公共API进行交互。
OpenStack分为多个核心组件,核心组件之间只/仅通过一个公共的API进行对接/通讯。同时每个核心组件,都由一个对立的用户进行管理(会对用户授权)。httpd承载API,HTTPD提供一个展示web页面的方式,并且表示是以HTTP进行通讯。
单个服务,核心组件(维度)
每个OpenStack服务又由若干组件组成。包含多个进程。所有服务至少有一个API进程,用于侦听API请求,对这些请求进行预处理,并将它们传送到该服务的其它组件。除了认证服务,实际工作都是由具体的进程完成的
restful请求:外部想要访问/查询/调用,内部的资源的请求
API负责接收请求,对请求进行预处理,并且把它们发给后端对应的功能模块,它本身不负责具体过程处理
预处理:
API向keystone进行权限认证
根据请求需求把请求分发给对应的功能模块进行处理
一个服务的进程之间通信,则使用AMQP消息代理,服务的状态存储在数据库中。
以核心组件维度来理解
1.API
2.子功能模块
3.其它(rabbitmq 消息队列)
ps:
使用AMQP,因为以服务本身拥有的消息传递和消息交互的通讯方式,进行通讯与数据传输会存在严重的瓶颈问题。openstack本身架构非常的复杂,庞大,处理的数据量非常多时,消息传递速率,效率及合理性会有一个严格的划分,需要使用一个队列(AMQP消息代理)去作为中间的承载,而这样的一个服务叫rabbitmq(消息队列)。
每一个核心组件都是由各种各样的子功能模块构成,每个功能模块做具体的事件处理,执行具体的任务,它们各组件的通讯也是借助了消息代理这种方式。
基于AMQP协议的通信
用于每个项目内部各个组件之间的通信。
基于SQL的通信
用于各个项目内部的数据库通信。
基于HTTP协议进行通信
通过各项目的API建立的通信关系,API都是RESTful Web API。
通过Native API实现通信
OpenStack各组件和第三方软硬件之间的通信。
作用:分发任务,主要管理其他节点。控制节点也可以跑实例资源(处理具体任务)
支持服务
MySQL:数据库作为基础/扩展服务产生的数据存放的地方
RabbitMQ:消息代理(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务
基础服务
Keystone:认证管理服务,提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库
Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制作相应的模板
Nova:计算管理服务,提供了对计算节点的Nova的管理,使用Nova-API进行通信
Neutron:网络管理服务,提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理面板
Horizon:控制台服务,提供了以Web的形式对所有节点的所有服务的管理,通常把该服务称DashBoard
ps:
Glance、Nova、Neutron:创建数据库所必备的组件,也是最为复杂的组件,所以为基础服务
控制节点管理着计算节点,Nova想要调用资源分配的话也是会由控制节点中的Nova进行调用/管理
扩展服务
Cinder:提供管理存储节点的Cinder相关,同时提供Cinder在Horizon中的管理面板
Swift:提供管理存储节点的Swift相关,同时提供Swift在Horizon中的管理面板
Trove:提供管理数据库节点的Trove相关,同时提供Trove在Horizon中的管理面板
Heat:提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。
Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作
ps:
Cinder、Swift、Trove、Heat:数据存储的管理
Cinder、Swift:辅助组件,提供虚拟机的存储支持
网络接口
通过网络接口管理其他节点的网络。对应的其他节点的管理网络的作用就是接受其他节点管理网络的管理,并将请求转发回去。
ps:
对网卡的功能进行了划分,负责了在网络层面对OpenStack进行管理,如果以四个节点进行划分的话,控制节点通过这种管理网络的网卡类型去管理网络节点、管理计算节点、管理存储节点,就是说以网络的层面管理其它控制节点,管理整个架构,那么其他节点管理网络的功能为接受控制节点的一个任务/请求,并且通过这样的管理网络把数据返回回去
基础服务
Neutron:具体实现
网络接口
管理网络:接受控制节点的任务调度
数据网络:数据库相关的网络管理。包括:数据对接、数据存储,数据同步,和其他节点上的数据网络进行关联
外部网络:负责和外部第三方组件做对接、管理、集成等。
提供者网络:Openstack结构内部网络
自服务网络:Openstack架构外部网络
Openstack网络类型(以功能划分)有两种,第一个是内部网络,第二个是外部网络
Openstack的网络功能,是通过插件、代理的方式来实现
提供者网络(指的就是OpenStack原生架构内部)
联网管理:是一种类型
ML2插件:在OpenStack中,提供网络支持的方式就是通过插件和代理的方式去实现网络的功能,ML2代表的就是二层的插件管理
Linux网络工具:比如说一些虚拟交换机、虚拟路由器一些虚拟设备,包括虚拟化的一个网线和对接的网卡
Linux Bridge代理:网桥、桥接、DHCP代理:就是通过插件与代理的方式去实现的
元数据代理(Metadata Agent):管理的是具体的一个属性的控制,这样修改它的网络组件包括虚拟设备,都可以通过修修改他的元数据属性来进行修改,控制
自服务网络(指的就是OpenStack架构外部的网络)
与提供者网络相比多了一个三层代理(L3 Agent)
L3 Agent:三层设备,路由器、三层交换机,可以跨网段通信,也就是可以跨节点,跨平台通信
基础服务
Nova Hypervisor:实例生命周期的管理,负责调用底层VMM的资源给虚拟机使用
网络插件代理:通过插件和代理来实现网络二层、三层的具体功能
扩展服务
celiometer Agent:计量客户使用的资源量,并根据这个来按量收费
网络接口
管理网络:接受控制节点的网络接口的调度和管理
数据网络:数据库相关的网络管理。包括:数据对接、数据存储,数据同步,和其他节点上的数据网络进行关联
基础服务
Cinder:提供块存储
Swift:提供对象存储
网络接口
管理网络:接受控制节点的网络接口的调度和管理
数据网络:数据库相关的网络管理。包括:数据对接、数据存储,数据同步,和其他节点上的数据网络进行关联