openstack

最近在学习openstack,以下是一些基础知识:

1、Cloud computing提供了以下几个模型:SaaS(software as a service), paas(platform as a service),iaas(infrastructure as a service),其中openstack属于第三种。
2、openstack包括以下几个模块:
1)、object Store(Swift):提供了对象的存储,它可以让你存储和检索文件,提供了强大的扩展性、冗余和持久性,一些大公司提供了基于Swift的商业存储服务。
2)、Image(Glance):主要用来管理镜像文件,这些文件都在Compute中被使用
3)、Compute(Nova):在需要的时候可以提供“虚拟”的服务。例如你需要一个100G,内存为1G的虚拟机,其可以通过设置将你需要的虚拟机提供给你。
4)、Dashboard(Horizon):提供了对于所有openStack services的一个基于web的用户界面,在这个界面上你可以进行很多的操作。
5)、Identity (Keystone):提供验证和授权的所有OpenStack的服务。
6)、Network (Quantum) :提供基于那些同样有OpenStack services (Nova)的连接来提供对用户的服务。
7)、Block Storage(Cinder):给用户的虚拟机上提供持久的块存储。该模块在别的版本中存在于Nova中。

 

3、Network在OpenStack中是个很重要的部分,OpenStack的网络由network(网络控制器)管理,它会创建虚拟网络,使主机之间以及与外部网络互相访问。Nova有固定IP和浮动IP的概念。固定IP被分发到创建的实例不再改变,浮动IP是一些可以和实例动态绑定和释放的IP地址。在基本的网络管理方式中,所有实例的网络流都要经过网络控制器。当网络控制器出现问题时,网络就出现故障,网络控制器是一个SPoF(单故障点),为了防止出现这种问题,可以在每个计算节点上安装Network组件,此时作为其上所有实例的网关,实例不再都从控制节点经过,控制节点出现问题将不会影响网络。
在实例经过网络时,它所经过的步骤是:
1)实例经过所在主机的flat_interface(这是一个flat网络),连接到nova-network所在的主机(控制节点);
2)网络控制器对外出网络流进行转发。

 

4、compute模块:
Nova是OpenStack中最复杂的分布式组件,它通过大量的进程合作,将最终用户的API请求发送到正在运行的虚拟机之上。以下是这些进程的列表及其功能的描述:
nova-api:接受和响应最终用户Compute API的请求。它支持OpenStack Compute API,Amazon EC2 API和一个特殊的Admin API。它还引发多数业务流程的活动(如运行一个实例),并实施一些政策(主要是配额检查)。
nova-compute:主要是一个人工守护进程,它可以通过虚拟机管理程序的API(XenAPI for XenServer/XCP, libvirt for KVM or QEMU, VMwareAPI for VMware等)来创建和终止虚拟机实例。虽然通过该进程做的事情是相当的复杂,但是它的基础原理却是非常的简单:接收队列中的动作,然后执行一系列的系统命令(如启动KVM实例),同时更新数据库中的状态。
nova-volume:给虚拟机分配额外持久化的存储,管理持久卷到计算实例的创建,连接和分离。一个新的OpenStack项目,Cinder,将最终替代nova-volume功能。在发布的Folsom版本中,nova-volume和Block Storage service(块存储服务)有类似的功能。
nova-network:该人工守护进程与nova-compute和nova-volume非常相似。它接受队列中的网络任务,然后执行任务操纵网络(如设立桥接接口或更改iptables规则)。不过该项功能被移植到Quantum之中,已经成为一个独立的OpenStack服务。
nova-schedule:从概念上说是OpenStack Nova中最简单的一段代码:从队列上得到一个虚拟机实例请求并且决定它应该在哪里运行(特别是它应该运行在哪台计算服务器主机之上)
queue:提供了一个守护进程之间传递消息的中央枢纽。当前由RabbitMQ实现,理论上可以是Python的ampqlib支持的任何AMPQ消息队列。新的Folsom版本支持Zero MQ。
SQL database:存储云基础设施的编译时和运行时的状态。这包括可用的实例类型,在使用中的实例,可用的网络和项目。从理论上讲,OpenStack Nova可以支持任何SQL-Alchemy支持的数据库,但是目前被广泛使用的数据库仅仅有sqlite3(只适用于测试和开发工作),MySQL和PostgreSQL。
Nova还提供控制台的服务,让最终用户通过代理服务器访问他们的虚拟实例的控制台。这涉及到多个守护进程(nova-console,nova-vncproxy和nova-consoleauth)。

posted @ 2012-11-30 10:03  SA高处不胜寒  阅读(3468)  评论(0编辑  收藏  举报