赞
踩
整个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用户提供记账途径 |
Heat(编排) | 这个太高大上了,就目前阶段正常企业还搞不定 | 自动化部署应用,自动化管理应用的整个生命周期.主要用于Paas |
---|
hypervisor:一种运行在物理服务器和操作系统之间的中间层软件,可以允许多个操作系统和应用共享一套基础物理硬件。可以将hypervisor看做是虚拟环境中的“元”操作系统,可以协调访问服务器上的所有物理设备和虚拟机,所以又称为虚拟机监视器(virtual machine monitor)。hypervisor是所有虚拟化技术的核心,非中断的支持多工作负载迁移是hypervisor的基本功能。当服务器启动并执行hypervisor时,会给每一台虚拟机分配适量的内存,cpu,网络和磁盘资源,并且加载所有虚拟机的客户操作系统。
横向扩展:多增加几台API服务器,一起服务。横向扩展也叫水平扩展,用更多的节点支撑更大量的请求。 如成千上万的蚂蚁完成一项搬运工作
纵向扩展:把API服务器换成性能更好的机器。纵向扩展又叫垂直扩展,扩展一个点的能力支撑更大的请求。如利用1个人的能力,如蜘蛛侠逼停火车
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的对象存储机制进行保存。
看到这张图不要怕,一步一步分析
MQ(Message Queue)消息队列
是基础数据结构中“先进先出”的一种数据结构。一般用来解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构。
常用的三种类型,包括rabbitmq、 rocketmq、kafka,是两个独立的服务之间,消息传递的载体,解决消息在传输是请求的高并发问题,会以容器的方式,存储消息列表(包括请求、交互、报文),划分重要等级放入队列中,逐个处理,处理完的会自动删除。
Token
服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
openstack中API是一个很核心的概念
restful
会对请求的内容进行过滤,以及合法性的验证,然后对请求的结果进行反馈
场景化:用户访问企业的页面,需要借助网络,网络之间的通讯需要一些标准化的规则,restful就是其中常用的一种
看到这里可能有点抽象,结合上下图,可以更好的理解openstack的流程
全局架构来看: OpenStack包括相互独立的服务组件。所有服务均可通过一个公共身份服务进行身份验证。除了那些需要管理权限的命令,每个服务之间均可通过公共API进行交互。所以,API即是每个服务内部和外部的交界处,隔离了内外。
服务之间交互过程: 每个服务又由若干组件组成,包含多个进程。每个服务至少有一个API进程,用于侦听API请求,对这些请求进行预处理,( 预处理就是将请求暴露出来的API接口,给keystone进行认证,如果认证通过,则放入队列等待被处理。) 然后将它们传送到自己服务后端的其他组件,对请求进行处理,而不是API进程去处理。也就是说除了认证服务,实际工作都是由具体的进程完成的。
服务内各个进程之间的通信: 使用AMQP(一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。)消息代理,将不同的消息格式进行转换,能够统一处理。服务的状态存储在数据库中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。