完全开源的平台,提供API接口,方便与第三方技术集成
Openstack兼容其他公有云,方便用户进行数据迁移
模块化设计,可以通过横向扩展,增加节点,添加资源
根据自己的需要建立相应的基础设施,增加集群规模
众多IT领军企业已经加入到openstack项目
基本架构分为四个组件:全局组件,核心组件,内部组件,外部组件
每个组件里面包含核心组件,每个核心组件会提供一个API
各组件之间是通过API来交互的,核心组件内部的服务是通过消息队列来交互的。
openstack的 各个服务之间通过统一的rest-API调用,实现系统的松耦合,它内部组建的一个工作过程是一个有序的整体,诸如计算机资源分配,控制调度,网络通信等都通过AMQP实现。 openstack 的上层用户是程序员,一般用户和整个horizon界面等模块,这三者都是采用openstack各个组件提供的api接口进行交互,而他们之间则是通过amqp进行互相调用,他们共同利用底层的虚拟资源为上层用户和程序员提供云计算服务。
open stack是一个开源的云平台项目,主要任务是给用户提供IaaS服务
是一个纯软件的计算机硬件仿真器,通过单独运行QUEM来模拟计算机,具有非常灵活和可移植的特点,利用它能够达到使用软件取代硬件的效果
一般情况下,openstack可以部署在Linux操作系统上,为了进一步提高QEMU的运行效率,往往会增加一个KVM硬件加速模块,KVM内嵌在Linux操作系统内核之中,能狗直接参与计算机硬件的调度,这一点是QEMU所不具备的,一般的QEMU程序的执行必然要经过程序从用户态向内核态的转变,这必然hi在一定程度上降低效率,所以QUEM虽然能够通过转换对硬件进行访问,但在openstack中往往采用KVM进行辅助,使得openstack的性能表现得更为良好。
注意:KVM需要良好的硬件支持,有些硬件本身如果不支持虚拟化的时候,KVM则不能使用
Libvirt是一个开源的,支持Linunx下虚拟化工具的函数库,实质上它就是为构建虚拟化管理工具的API函数,libvirt是为了能够更方便的管理平台虚拟化技术而设计的开放源代码的应用程序接口,它不仅提供了对虚拟化客户机的管理,也提供了对虚拟化网络和存储的管理。
最初的livirt是只针对xen而设计的一系列管理和调度xen下的虚拟化资源的api函数,目前高版本的livirt可以支持多种虚拟化方案,包括kvm,qemu,xen,vmware, virtualbox等在内的平台虚拟化方案,又支持openvz,LXc等Linux容器虚拟化系统,还支持用户态Linux的虚拟化,他能够对虚拟化方案中的hypervisor进行适配,让底层hypervisor对上层用户空间的管理工具可以做到完全透明。
open stack覆盖了网络,虚拟化,操作系统,服务器等各个方面,他是一个正在开发中的云计算平台项目,根据成熟及重要程度的不同,被分解成核心项目,孵化项目,以及支持项目和相关项目,每个项目都有自己的委员会和项目技术主管,而且每个项目都不是一成不变的,孵化项目可以根据发展的成熟度和重要性,转变为核心项目,截止到lcehouse版本,下面列出了10个核心项目
Nova,一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务,负责虚拟机创建,开机,关机,挂起,暂停,调整,迁移,重启,销毁等操作,配置cpu,内寸等信息规格,自austin版本集成到项目中。计算资源单位,对hypervisor进行屏蔽,支持多种虚拟化技术(红帽默认为KVM),支持横向扩展
Neutron ,负责虚拟网络的管理,为openstack其他服务提供网络连接服务,为用户提供接口,可以定义network,subnet, router,配置DHCP,DNS,负载均衡,L3服务,网络支持GRE,VLAN,插件架构支持许多主流网络和厂家技术,如,open stackswitch。创建网络的拓扑结构,是面向租户的网络管理,可以自定义自己的网络,各个租户之间互不影响。
Keystone ,类似于LDAP服务,对用户,租户和角色,服务进行认证与授权,且支持多认证机制。也就是为openstack其他服务提供身份验证,服务规则和服务令牌的功能,管理domains,projects,users,groups,roles,自essex版本集成到项目中
Horizen,又叫UI服务,提供一个web管理界面,与openstack底层服务进行交互,也就是openstack中各种服务的web管理门户,用于简化用户对服务的操作,例如:启动实例,分配Ip地址,配置访问控制等,自essex版本集成到项目中
Glance,,一套虚拟机镜像查找及检索系统,提供虚拟机镜像模板的注册与管理,将做好的操作系统拷贝到镜像模板,在创建虚拟机时直接使用,可支持多格式的镜像( AKI,AMI,ARI,ISO,QCOW2,RAW,VDI,VHD,VMDK),有创建上传镜像,删除镜像,编辑镜像基本信息的功能,自Bexar版本集成到项目中。
cinder ,负责为运行实例提供持久的块存储设备,可进行方便的扩展,按需付费,支持多种后端存储,它的插件驱动架构有利于块设备的创建和管理,如创建卷,删除卷,在实例上挂载和卸载卷,(folsom)
swift,一套用于在大规模可扩展系统中通过内置冗余及高可容错机制实现对象存储的系统,允许进行存储或者检索文件。为glance提供镜像存储,为cinder提供卷备份服务,为OPENstack提供基于云的弹性存储,支持集群无单点故障。
Cerlometer, 用于度量, 监控和控制数据资源的集中来源,为openstack用户提供记账途径,就像一个漏斗一样,能把openstack内部发生的几乎所有的事情都收集起来,然后为计费和监控以及其他服务提供数据支撑,自havana版本集成到项目中
Keystone (OpenStack Identity Service)是OpenStack中的一个独立的提供
安全认证的模块,主要负责openstack用户的身份认证、令牌管理、提供访问资源的服
务目录、以及基于用户角色的访问控制。
Keystone类似一个服务总线,或者说是整 个Openstack框架的注册表,其他服务通过
keystone来注册其服务的Endpoint (服务访问的URL),任何服务之间相互的调用,
需要经过Keystone的身份验证,来获得目标服务的Endpoint来找到目标服务。