浅谈OpenStack服务和架构(1)
一 Openstack介绍
是美国国家宇航局(NASA)和Rackspace合作开发的一个开源项目,目的是为公有云和社区云提供软件,但因其灵活性,也可以定制私有云。覆盖了网络、虚拟化、操作系统、服务器等各个方面。它是为云计算服务的,提供存储空间、计算能力等资源服务的Web Service。简单来说,OpenStack就是一个操作系统,一套软件,一套IaaS(基础设施即服务)软件,对资源进行管理,并且以服务的形式提供给上层应用或者用户去使用。
二 云计算的三种服务模式
2.1、基础设施及服务(Infrastructure as a Service,Iaas)
云服务提供商把IT系统的基础设施层作为服务租出去,包括处理能力,储存能力,网络资源
面向对象一般是IT管理人员
2.2、平台即服务(Platform as a Service,Paas)
将软件研发平台作为一种服务通过互联网提供给用户
面向对象一般是开发人员
2.3、软件即服务(Software as a Service,SaaS)
将软件作为一种服务通过网络提供给用户,消费者不用自己安装应用软件,直接使用即可
面向对象一般是普通用户
三 OpenStack服务
服务 | 项目名称 | 描述 |
---|---|---|
Compute(计算服务) | Nova | 管理虚拟机的整个生命周期,支持多种虚拟化技术 |
Network(网络服务) | Neutron | 负责虚拟网络的管理,为实例创建网络的拓扑结构。是面向租户的网络管理,可以自己定义自己的网络,各个租户之间互不影响 |
ldentity(身份认证服务) | Keystone | 类似于LDAP服务,对用户、租户和角色、服务进行认证与授权,且支持多认证机制 |
Dashboard(控制面板服务) | Horizon | 提供一个Web管理界面,与OpenStack底层服务进行交互 |
lmage Service(镜像服务) | Glance | 提供虚拟机镜像模板的注册与管理,将做好的操作系统拷贝为镜像模板,在创建虚拟机时直接使用,可支持多格式的镜像 |
Block Storage(块存储服务) | Cinder | 负责为运行实例提供持久的块存储设备,可进行方便的扩展,按需付费,支持多种后端存储 |
Object Storage(对象存储服务) | Swift | 为OpenStack提供基于云的弹性存储,支持集群无单点故障 |
Telemetry(计量服务) | Ceilometer | 用于度量、监控和控制数据资源的集中来源,为OpenStack用户提供记账途径 |
四 OpenStack优势
优势 | 说明 |
---|---|
控制性 | 完全开源得平台,提供API接口,方便与第三方技术集成 |
兼容性 | OpenStack兼容其他公有云,方便用户进行数据迁移 |
可扩展性 | 模块化设计,可以通过横向扩展,增加节点、添加资源 |
灵活性 | 根据自己得需要建立相应基础设施、增加集群规模 |
行业标准 | 众多IT领军企业已经加入到OpenStack项目 |
五 OpenStack架构
5.1 OpenStack作为开源,可扩展,富有弹性的云操作系统,其设计基本原则如下:
1.按照不同的功能和通用性划分不同项目,拆分子系统
2.按照逻辑计划、规范子系统之间的通信
3. 通过分层设计整个系统架构
4.不同得功能子系统间提供统一的API接口
5.2 OpenStack 概念架构
这个图分层来看,首先:
首先先看它管控全局的组件,这三个组件管理openstack所有平台服务。
然后:
上图是外部辅助的组件:
Ironic:裸金属
Trove:数据库
Heart和Sahara:数据管理和编排处理
上图是内部的组件:
核心是虚拟机(实例)Glance获取镜像, Neutron 管理网络 , Nova 控制虚拟机生命周期 ,调取镜像,网络。 swift和Cinder 存储资源
总结:云平台用户在经过Keystone服务认证授权后,通过Horizon或者Reset API模式创建虚拟机服务,创建过程中包括利用Nova服务创建虚拟机实例,虚拟机实例采用Glance提供镜像服务,然后使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中,之后在通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume)和Glance提供的镜像(lmage)可以通过Swift的对象存储机制进行保存。
六 OpenStack逻辑架构
我们用分层的思想看这个图,首先下图圆圈框起来的是外部组件:
下图方框内的组件是全局组件:
每个组件通过公共的api交互:
总结:
1.OpenStack包括若干个称为OpenStack服务的独立组件。所有服务均可通过一个公共身份服务进行身份验证。除了那些需要管理权限的命令,每个服务之间均可通过公共API进行交互。
2.每个OpenStack服务又由若干组件组成。包含多个进程。所有服务至少有一个API进程,用于侦听API请求,对这些请求进行预处理,并将它们传送到该服务的其他组件。除了认证服务,实际工作都是由具体的进程完成的
3.至于一个服务的进程之间通信,则使用AMQP消息代理。服务的状态存储在数据库中。
4. 由消息队列作为消息传递的载体,消息队列分为:rabbitmq,rocketmq,kafka等
RabbitMQ 稳定可靠,数据一致,支持多协议,有消息确认,基于erlang语言
Kafka 高吞吐,高性能,快速持久化,无消息确认,无消息遗漏,可能会有有重复消息,依赖于zookeeper,成本高.
ActiveMQ 不够灵活轻巧,对队列较多情况支持不好.
RocketMQ 性能好,高吞吐,高可用性,支持大规模分布式,协议支持单一
六 OpenStack组件通信关系:
基于AMQP协议的通信:用于每个项目内部各个组件之间的通信
基于SQL的通信:用于各个项目内部的通信
基于HTTP协议进行通信:通过各项目的API建立的通信关系,API都是RESTful Web API
通过Native API实现通信:Openstack各组件和第三方软硬件之间的通信
七
整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。
控制节点负责控制整个OpenStack架构
计算节点负责虚拟机运行
网络节点负责对外网络与内网络之间的通信
存储节点负责对虚拟机的额外存储管理等等
本文地址:https://blog.csdn.net/wang961226/article/details/110951576