关于文件存储,文件是通过分布试文件系统协议暴露的,文件系统存储与NAS(network attached storage)同义的(sysnonymous)。在客户端访问数据是通过(through)操作系统来完成的,这个操作系统是在文件系统级的:用户通过挂载一个远程的文件。文件存储的例子包括NFS和GlusterFS。操作系统需要有一个安装适当的客户端软件才能访问远程文件系统。
当前,OpenStack Compute在一个实例内部,对于这类文件存储没有任何本身的支持。然而,对于OpenStack有一个Gluster存储连接器,这个连接器能够使用得GlusterFS文件系统的用法象一个后台用于镜象服务。
底层技术
你可以认为OpenStack Compute是一个通过把现存的Linux技术结合在一起,来构建一个云计算环境的工具。
下面的图表展示了这些底层技术如何被集中起来构成一个OpenStack计算云的两个例子。园卷是作为OpenStack Compute的一部份的Linux服务,长方形是扩展(没有被OpenStack包含的)的组件,实线显示了OpenStack组件与扩展组件之间的相互作用,虚线显示了扩展组件之间的相互作用。OpenStack Compute组成的所有服务都与一个队列后端相互作用(e.g,RabbitMQ,Qpid)。以及数据库后端(象MySQL,PostgreSQL);这些联系是没有显示。有些没有明确地依赖外部技术的服务是没有显示。例如,nova-api 服务,身份验证服务,以及镜象服务是没有显示的。
Figure 3.1. Underlying technologies(Scenario 1)(略)
Figure .32 Underlying technologies(Scenario 2)(略)
许多扩展技术可以被其它组件代替(substituted),在下列的表中所示
表3.1 技术和支持的成就
Technology Supported implementations Message queue RabbitMQ, Qpid, ZeroMQ Virtualization xapi+XCP, xapi+XenServer, libvirt+KVM, libvirt+QEMU, libvirt+LXC, libvirt+VMWare iSCSI back-end LVM+IET, LVM+tgt, Xen Storage Manager, SAN (Solaris, HP, SolidFire), NexentaStor NetApp, Ceph, Sheepdog Database MySQL, PostgreSQL, sqlite Web server Apache, Nginx Session cache memcache, any Django-supported database backend (e.g., MySQL, PostgreSQL, sqlite)
计算(nova-compute)
Nova-compute服务依赖于虚拟驱动来管理虚拟机,缺省地,这个驱动是libvirt,它用于驱动KVM。然而,libvirt也可以驱动其它的hypervisor技术,如果配置了用Xen 云台或XenServer,为了驱动基于Xen的虚拟机,也有一个独立的Xen虚拟机驱动。
Open-iscsi用于挂载远程块设备,也象已知的卷一样。Open-iscsi暴露了这些远程设备,就象本地设备文件被附加到实例。
Novo-network
Novo-network依赖于许多Linux网络技术。它用Linux桥去创建网络桥把虚拟机连接到物理网络上。这些桥可以与使用Linux 网络VLAN支持的VLAN联合。如果运行在VLAN网络模型。Iptables 用于执行安全规则以及执行NAT功能。Iptables用于提供实例用访问元数据服务以及支持浮动IP地址。Dnsmasq是用于DHCP服务分发(hand out)IP地址给虚拟机实例,与DNS 服务器一样。
在未来的OpenStack版本,当前被nova-network运行的功能将会通过一个独立的OpenStack 项目代替,代码名称为 Quantum。
Nova-volume
缺省地,nova-volume服务使用LVM来创建以及管理本地卷,采用IET或tgt来通过iSCSI把它们暴露。它也可以配置用于其它的基于iSCSI存储技术。
Openstack-dashboard
OpenStack-dashboard是一个基于Django的应用程序,缺省地,这个程序是运行在Apache web服务的后台。缺省地,为了session cache它使用memcache。基于web的调用novnc的VNC客户端用于提供对VNC控制台的访问。这个VNC控制台是与运行KVM实例联合的。
安装假设
OpenStack Compute有大量的配置操作,为了简化(simplify)这个安装手册,关于目标安装,我们作了许多假设。
你有一些计算节点,每个节点都安装了Ubuntu Server 12.04或更新版;
你已经指定了这些节点中的一个作为云控件节点,这个控制节点将运行除了nova-compute以外的所有服务(RabbitMQ or Qpid,MySQL,Identity,Image,nova-api,nova-network,nova-scheduler,nova-volume)。
你的云控制器有一个名称为"nova-volume"的LVM卷组,这个卷组用来对客户VM提供永久的存储。在安装nova服务之前,即可以在安装过程中创建这个卷,也可以留一些自由空间来创建这个卷。
确保该服务器能决定它自己的主机名,否则,如果你使用RabbitMQ作为消息后端时,你可能出现错误。在Ubuntu上,RabbitMQ是缺省的消息后端(back-end)。
在我们主机的eth0上,192.168.206.130是主IP。
192.168.100.0/24作为我们的客户虚拟机的固定网段,它通过网桥br100与主机连接。
flatDHCP与单个网络接口结合。
KVM 或 Xen(XenServer 或 XCP)作为hypervisor。
在ubuntu上,通过增加下面命令行到/etc/apt/sources.list.d/folsom.list,使用得云档案仓库可用。:
deb precise-updates/folsom main
在运行apt-get update和apt-get upgrade之前,安装keyring:
Sudo apt-get install ubuntu-cloud-keyring
在安装之前,通过运行apt-get update和apt-get upgrade,确保操作系统更新到当前日期。
在使用已知的��互作用的一套软件包安装时,这个安装过程贯穿云控制节点安装和计算节点安装的整个过程。云控制节点包含所有的nova-service,包括API服务器,以及数据库服务器。计算节点只需要运行nova-compute服务。在运行在多节点的安装里,你只需要一个nova-network服务。对于网络,高可用性是必须的。这里有另外一些操作。
安装OpenStack身份验证服务
OpenStack身份验证服务管理着用户,租户(帐号或项目)以及为所有的OpenStack组件提供一个公共的身份验证系统。
基本概念(Basic Concepts)
身份验证服务有两个主要的功能:
用户管理:跟踪用户以及给用户授权。
服务目录:提供可用的服务目录以及他们的API端点所在的地方。
身份验证服务有几个定义,这些定义对于理解是重要的。
用户(user) 是一个人、系统、或使用OpenStack云服务的服务的数字表示(a digital representation)。身份验证服务将验证那些进来的请求。用户有一个登录号,以及可能被分配一个记号(token)来访问资源。用户可能被直接地分配一个独有的租户和行为。如果他们被包含进那个租户里。
凭证(Credential) 数据属于谁?被谁拥有?通常只被一个用户知道,这个用户能够提出他们是谁(因为没有谁知道这个数据)。
例如
一个相配的用户名称和密码;
一本相配的用户名称和API关键字;
你自己和一个用你自己的图片表示的驱动license;
发给你的记号,除了你没有谁知道;
鉴定(Authentication):在身份验证服务的上下文里,鉴定是确定一个用户的身份或一个需要的真实性的行为。身份验证服务将会确认被用户做出的请求。该用户需要通过一套需求的认证来做出调用,这个需求是用户做出的。这些需求在一套证书(用户名称及密码,或用户名称及API key)的形式里是初始化的。在初始确认一后,身份验证服务将发给用户一个记号。用户然后能够提供一个证明来证明他们的身份已经被验证当他们做出后面请求的时候。
符号(Token)
符号是一个任意位数的文本,它用于访问资源。每个符号范围,它描述了哪些资源对于它是可以访问的。符号在任何时候都可以取消以及对于有限的期限是有效的。
在这个版本中,当身份验证服务支持基于符号的验证(authentication),在未来,对它来说,它的目的是支持另外的协议。对它来说,该目的将会成为一个一流的整体服务,而不是追求成为一个成熟的身份存储,以及管理解决方案。
租户(Tenant)
一个容器用于分组或分离资源,以及或身份验证对象。依赖于服务操作员,一个租户可能对映一个客户,帐户,组织,或项目。
服务(Service)
OpenStack服务,比如Compute(Nova),Object Storage(Swift) ,或者Image Service(Glance)。服务通过能够访问资源的用户来提供一个或多个终端以及执行(可能有用的)操作。
终端(Endpoint)
一个可访问的网络地址,是一个可以被访问的服务,通常用URL描述。如果为了模板使用一个扩展,你就可以创建一个终端模板。这个模板代表了所有可用尽的服务的模板。这个服务在交叉于各个区域是有用的。
角色(Role)
当执行一套具体的操作(a specific set of operations)时一个用户担当的人物。一个角色包括一套权限以及特权(privileges),一个用户取得了那个角色,也就继承了那些权力和特权。
在身份验证服务里,分配给一个用户的符号就包括用户能够取得的角色列表。