首页 > 代码库 > openstack概述
openstack概述
如何理解云?
云是基于“云计算”技术,实现各种终端设备之间的互联互通。手机、电视机等都只是一个单纯的显示和操作终端,它们不再需要具备强大的处理能力。用户享受的所有资源、所有应用程序全部都由一个存储和运算能力超强的云端后台来提供。像我们现在经常使用的在线杀毒、网络硬盘、在线音乐等都属于云服务范畴。
云计算的概念可以从用户、技术提供商和技术开发人员三个不同角度来解读。
用户看云计算
从用户的角度考虑,主要根据用户的体验和效果来描述,云计算可以总结为:云计算系统是一个信息基础设施,包含有硬件设备、软件平台、系统管理的数据以及相应的信息服务。用户使用该系统的时候,可以实现“按需索取、按用计费、无限扩展,网络访问”的效果。
简单而言,用户可以根据自己的需要,通过网络去获得自己需要的计算机资源和软件服务。这些计算机资源和软件服务是直接供用户使用而无需用户做进一步的定制化开发、管理和维护等工作。同时,这些计算机资源和软件服务的规模可以根据用户业务变化和需求的变化,随时进行调整到足够大的规模。用户使用这些计算机资源和软件服务,只需要按照使用量来支付租用的费用。
技术提供商看云计算
技术提供商对云计算理解为,通过调度和优化的技术,管理和协同大量的计算资源;针对用户的需求,通过互联网发布和提供用户所需的计算机资源和软件服务;基于租用模式的按用计费方法进行收费。
技术开发人员看云计算
技术开发人员作为云计算系统的设计和开发人员,认为云计算是一个大型集中的信息系统,该系统通过虚拟化技术和面向服务的系统设计等手段来完成资源和能力的封装以及交互,并且通过互联网来发布这些封装好的资源和能力。
所谓大型集中的信息系统,指的是包含有大量的软硬件资源,并且通过技术和网络等对其进行集中式的管理的信息系统。通常这些软硬件资源在物理上或者在网络连接上是集中或者相邻的,能够协同来完成同一个任务。
信息系统包含有软硬件和很多软件功能,这些软硬件和软件功能如果需要被访问和使用,必须有一种把相关资源和软件模块打包在一起并且能够呈现给用户的方式。虚拟化技术和Web服务为最为常见的封装和呈现技术,可以把硬件资源和软件功能等打包,并且以虚拟计算机和网络服务的形式呈现给用户使用。
所以云计算(CloudComputing)是分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
好比是从古老的单台发电机模式转向了电厂集中供电的模式。它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。最大的不同在于,它是通过互联网进行传输的。
云计算的部署类型
云计算可以分成三种不同的类型进行部署,分别是私有云、公有云、混合云。
私有云指的是部署在一个封闭和特定环境(网络封闭或者服务范围封闭)中的一个云计算系统。该系统的系统边界明确,仅对指定范围内的人员提供服务。该范围以外的人员和系统无法使用该云,比如非服务区域或者非指定内部网络的人不能使用私有云上的云服务。
公有云指的是部署在一个开放环境中,为所有具备网络接入能力的人和系统提供服务。用户通过互联网访问和使用公有云的服务,但不拥有云也不管理云。
混合云指的是以私有云为基础,能够在业务负载超越私有云自身能力或其它指定的情况下,把部分业务负载透明地分流到其它云上进行处理,使得私有云和部分其它云的资源整合在一起形成的一个系统。
云计算的服务类型
云计算的服务类型可以分为基础设施即服务(IaaS)、应用平台即服务(PaaS)以及软件即服务(SaaS)三个层次。
基础设施即服务(IaaS)对云计算系统的软硬件和网络等基础设施进行集中管理和调度,并且把这些基础设施以一种可以通过网络进行访问和使用的形式进行封装,并对外以服务的方式提供这些封装好的IT能力。
应用平台即服务(PaaS)在云基础设施上运行的应用软件支撑平台,其提供业务软件开发所需的业务接口和公共基础处理的支持,方便开发人员开发特定业务的云服务;同时,应用平台即服务(PaaS)为业务软件的运行提供运行时刻的语言运行、网络交互、进程通信、同步控制以及调度等支持,使得云服务能够高效可控地运行。
软件即服务(SaaS)指在云计算平台上,通过互联网直接为用户提供软件服务。软件即服务(SaaS)使得用户不用再购买软件,而是向提供商租用通过互联网即可使用的软件来管理企业经营活动,且用户无需对软件进行维护。
1.1. Openstack的历史:
2010年,美国国家航空航天局联手Rackspace,在建设美国国家航空航天局的私有云过程中,创建了openstack的项目,之后他们邀请其他供应商提过组件,建立了一个完整的开源云计算解决方案。
注:Rackspace (NYSE:RAX)全球三大云计算中心之一,1998年成立,是一家全球领先的托管服务器及云计算提供商。
2010年诞生的第一个版本Austin,只包含Rackspace和美国国家航空航天局的组件。之后发布的版本包含了已加入该项目的供应商开发的附加组件。最初Rackspace独立管理openstack项目,随着openstack的不断发展,在2012年创建了openstack基金会,该基金会又选举产生的董事会监管。Openstack的技术委员会由每个核心的软件项目和项目领导组成。
目前openstack有来自87个国家或地区的850个基金会成员,白金会员提供最高水平的支持,其次是黄金会员,赞助企业和个人会员。
Cloudstack的历史:
Cloudstack始于cloud.com,其目标是使服务供应商和企业创建,运营能力类似于亚马逊公司的公有云,私有云。2010年,cloud.com提供了基于GPLv3的社区版本,供用户免费下载。
思杰公司在2011年7月收购了cloud.com。思杰公司是openstack社区最早期的成员之一,但在2012年决定离开Openstack社区。根据媒体报道,做出这一决定是因为思杰公司认为,最初由cloud.com提供的代码相比openstack更稳定,可为用户提供更多的功能。
2012年4月,思杰公司提交了cloud.com的代码给apache软件基金会,现在在apache基金会的apache2.0许可证下进行代码开发,思杰公司将继续提供版本支持及解决方案支持。由于过度到了apache,其他厂商也纷纷加入到了开发队伍,增加功能和增强核心软件。
有一点不同的是,openstack的基金会中会有供应商的名单,不同于cloudstack的发布者名单。因为apache基金会负责了大量的项目,而Apache项目成员均为个人名义被列入,而不是他们所代表的公司。
在apache项目中,由感兴趣的公司制定独立工作人员的工作项目。当前cloudstack项目成员有一些思杰公司的员工和一些不太知名的公司,项目的发展方向由个别参与者所代表的雇主的意愿来决定。
Openstack与cloudstack的历史比较
Cloud.com致力于开发和发展一个更大的开源社区,因此,大部分cloudstack核心组件由cloud.com开发,然后由思杰公司增强。
相比之下,openstack项目从最开始就发展开放社区,其直接结果是,openstack里聚集了比cloudstack更多的主流供应商。在大多数情况下,这些厂商开发的组件第一时间提供给openstack,之后才是cloudstack提供接口。
此外,思科和Nicira公司已经成为openstack网络组件neutron的主要开发者。Neutron接收来自虚拟机的指令来定义虚拟机所需的网络,然后发送指令给交换机和路由器来创建这些网络。
每个交换机的供应商必须为Neutron提供插件,这个插件在Neutron中转换为特定厂商设备的特定命令语法。Extreme Networks和brocade这两个openstack基金会成员同样先为openstack提供插件,在进行cloudstack支持。
Openstack也有不完善的地方,如openstack相对于cloudstack来说更加复杂,对终端用户的支持不够,在安装部署上不如cloudstack便捷,在界面显示方面也不如cloudstack丰富。
要确定企业的合适部署,就必须自行对比每一个解决方案,然后进行选择,思杰公司向大型服务提供商,大学以及其他机构展现了cloudstack的成熟和稳定。而要关注openstack的稳定性可以查看IBM,戴尔和rackspace等公司的解决方案,这两款产品一直在持续发展,提供了一系列的存储和网络选项。相比开源项目,openstack是一个更高级且更现代化的开源项目,因为它是高度协作的产物。Openstack的支持者都是世界顶级的供应商,可以看出openstack备受青睐,也是开源界的明星产品。
支持openstack项目的主流供应商
X86服务器供应商 | HP(惠普) | DELL(戴尔) | IBM |
Linux供应商 | Redhat | Suse | Canonical |
路由器供应商 | Cisco | Juniper network | Alcatel-luceent |
刀片服务器供应商 | HP | Cisco | IBM |
交换机供应商 | Cisco | HP | Juniper network |
存储供应商 | Emc | IBM | NetApp |
Hypervisor供应商 | Vmware | Kvm | Xen |
1.2. Openstack的功能与作用
当今的数据中心,许多服务器都遇到过同样的问题,即计算,电源,网络带宽等资源的利用率不足。例如,某个项目可能会需要大量的计算资源来完成计算,而一旦完成了计算任务,将不再需要那么多的计算资源。当用户想要一种灵活的,按需供给计算资源的服务,通过自动化或很少的人工干预就能使用时,那么云计算就是最好的选择之一。云计算通常包含了一个服务责任,表示云计算服务提供商承诺的性能,规格,可用率等。云计算服务让用户通过一个共享的计算资源,网络带宽,存储池,运行应用程序或服务来完成计算工作,并按资源的使用来计费。
关于云计算服务的主要特点如下:
按需自助服务:用户可以提供自己的需要订购所需的计算、存储和网络资源,而几乎无需人工干预。
网络访问:可以通过网络使用任意类型的异构计算能力,通过标准化的机制调用计算资源而不受限于具体的访问设备
资源池:多个用户可以同时访问和使用云计算提供的计算服务,服务提供商根据消费者的计算要求或实际使用量和分配实际的计算资源。
弹性;可根据需要不停机或短暂停机后迅速垂直或横向扩展
计量或测量服务:按照使用的时间,传输或存储的字节数支付云计算服务,并提供消费者具体的资源消费图表。同时,他也可以根据消费者的不同需求提供定制化的计费模式
云计算是网格计算(网格计算是分布式计算(DistributedComputing)的一种,整合大量异构计算机的闲置资源(如计算资源和磁盘存储等),组成虚拟组织,以解决大规模计算问题。),分布式计算,并行计算,效用计算(效用计算(Utility computing)是一种提供服务的模型,在这个模型里服务提供商提供客户需要的计算资源和基础设施管理,并根据应用所占用的资源情况进行计费,而不是仅仅按照速率进行收费.),联机存储技术,虚拟化,负载均衡等一些列传统计算技术和网络技术发展融合的产物。它旨在通过网络将多个成本低廉的计算实体整合成一个大型的计算资源池,并借助Saas,Paas,Iaas等服务模式,将强大的计算能力分发到终端用户手中。云计算的核心理念就是,不断的提高云端处理能力,减轻用户负担,将一系列的IT能力以服务的形式提供给用户,简化用户终端的处理负担,最终使用成为一个单纯的输入/输出设备,享受云提供的强大计算处理及服务能力。
Openstack具有建设这样资源池的能力,通过openstack的各种组件多种模式的排列组合,可以搭建成各种规模的云,这些云可以是私有云,公有云,混合云。
Openstack具有三大核心功能,即计算,存储,网络,分别对应相应的项目Nova,Cinder等。其中Nova提供了计算资源的管理,可以管理跨服务器网络的vm实例。同时Nova还提供了对多种Hyperviosr的支持,如KVM,QEMU,Xen,LXC,Vmware,Hyper-V,Powervm等。Cinder提供了存储资源的管理,可以管理各个厂商提供的专业存储设备。
Mysql:
Openstack所使用的数据库,包括nova,glance,cinder等在内的组件都会建立自己的数据库,保存一些必要的数据。
Keystone:
Openstack的用户认证组件,它的功能主要是建立管理项目的用户和各种服务端口,以及进行用户的身份认证,若要使用openstack的任意的API,第一步就必须通过keystone的验证。
keystone的主要功能是提供认证和编录服务
keystone提供了两种认证方式:token,identifybackend)
token(令牌,实际是一个随机字串,在认证时直接使用),主要用于内部各组件之间
identify(账号,密码),需要用户登陆时,如用户通过horizon访问云资源
catalog(编录):保存当前openstack架构中的调用接口(ip地址,端口,url信息),openstack各个组件之间交互通过api接口,openstack架构各个组件通过http的restful机制(一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制)远程过程调用,基于URI输出。
policy:管理策略,如与用户管理、虚拟机实例管理有关的策略
Glance:
用来存放管理虚拟机镜像和快照的服务,这也是一个最小架构中必须有的服务
glance:存放镜像的元数据
registry:调用数据库的接口,检索接口
database:映像文件的存储位置等
swift:分布式存储
Neutron:
网络服务,用来提供虚拟机网络通信的组件,负责接收对网络的调用请求。
Nova:
Nova是个至关重要的组件,也是个相对庞大的组件,其中有很多服务,它是进行生成虚拟机工作的主要服务。
Nova计算节点,是openstack的最核心的节点,运行虚拟机实例,分配cpu、内存,nova-compute本身并不能运行虚拟机,是要通过hypervisor,nova-compute通过api调用hypervisor,,nova-compute支持那种api就可以调用那种hypervisor,如nova-compute支持libvirt api就可以调用libvirt支持的hypervisor(如kvm),xenapi可以调用xen
Cinder:块存储
用来创建,删除及管理volume(虚拟磁盘卷),以及给volume做快照等服务的组件
swift:分布式文件系统,用来存储镜像文件模板
Horizion:
Openstack的web管理页面,使用django框架开发。Web管理页面包含了日常使用的大部分功能,提供给用户一个最直观的展现方式。很多简单的二次开发都是从Horizon开始的。
Rabbitmq:
在openstack中,各个服务之间是通过消息来交互的,因为openstack使用AMQP作为消息传递的技术,所以rabbitmq,qpid,zeromq等支持AMQP的软件都是被openstack所支持的。Rabbitmq是第一个被openstack所使用的消息传递软件。Openstack通过AMQP实现RPC服务,来保证不同组件之间的通信,rabbitmq是控制节点中的一个非常关键的服务。
虚拟机运行在nova节点上的,所有组件都围绕vm工作
keystone概述
keystone是openstack的组件之一,用于为openstack家族中的其他组件成员提供统一的认证服务,包括身份验证、令牌发放和校验、服务列表、用户权限定义等。其中服务列表体现在用户登录openstack系统后能够使用的计算,网络,存储等服务的列表。通过下面的图可以看出openstack中所有组件的认证,都需要keystone的参与,所以keystone自身的高可用也非常重要。
keystone服务主要有两个功能
1. 实现用户管理:主要是认证和授权
Keystone实现认证的方式有两种:token认证,用户名密码认证
2. 实现服务管理:openstack集群中每一个服务都有可能在独立的节点上,这些节点的IP地址,监听的端口,访问路径uri都要在Identity中进行注册,部署identity后,只需向外输出一个identity的路径就可以查找到其他组件(image,nova,compute…)的访问路径了。即存储所有可用服务的信息,包含其API的访问入口(API endpoint路径)。
keystone的关键术语:
User:一个user可以关联至多个tenant
Tenant(租户):一个tenant对应一个project或一个组织,一个租户相当于一个公司或一个项目,openstack是可以实现公有云的,每一个项目中也有可能会包含多个虚拟机实例,项目也可以是一个tenant
Tenant的另一种解释:Project(Tenant):可以理解为一个人、或服务所拥有的资源集合。在一个Project(Tenant)中可以包含多个User,每一个User都会根据权限的划分来使用Project(Tenant)中的资源。比如通过Nova创建虚拟机时要指定到某个Project中,在Cinder创建卷也要指定到某个Project中。User访问Project的资源前,必须要与该Project关联,并且指定User在Project下的Role。
Role:角色主要实现向User授权的,openstack有几个内置的角色,admin,member等
Token:定义了令牌的有效时间和令牌中用户的权限,项目等基本信息
Service:对应业务模型服务,如计算(compute),存储(volume),镜像(Glance)等
Endpoint:服务的访问入口每个服务都会有自己的访问入口,也称之为访问端点。
Endpoint:一个可以通过网络来访问和定位某个Openstack service的地址,通常是一个URL。比如,当Nova需要访问Glance服务去获取image 时,Nova通过访问Keystone拿到Glance的endpoint,然后通过访问该endpoint去获取Glance服务。我们可以通过Endpoint的region属性去定义多个region。Endpoint 使用对象分为三类:
admin url –>给admin用户使用,Post:35357
internal url –> OpenStack内部服务使用来跟别的服务通信,Port:5000
public url –>其它用户可以访问的地址,Post:5000
创建完service后创建API EndPoint. 在openstack中,每一个service都有三种endpoints. Admin, public, internal。 Admin是用作管理用途的,如它能够修改user/tenant(project)。 public 是让客户调用的,比如可以部署在外网上让客户可以管理自己的云。internal是openstack内部调用的。三种endpoints 在网络上开放的权限一般也不同。Admin通常只能对内网开放,public通常可以对外网开放internal通常只能对安装有openstack服务的机器开放。
openstack概述