OPENSTACK中的一些概念和相关组件的介绍

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OPENSTACK中的一些概念和相关组件的介绍

Cloud controller:

是一个协调管理器。Openstack中所有的机器的通信都要通过管理器来通过AMQP协议通信。

TENANT:

直面翻译是一个租户,实际上是一组对象的集合,比如用户,镜像,实例,网络等的一组集合。类似vsphere里的数据中心。

Compute node:

实际上就是一个hypervisor,即一个虚拟化节点,运行了nova服务的虚拟化节点。

Volume:

提供给实例的一个持续的磁盘,可以将这个卷附加到一个实例中去。主要由cinder服务来提供,具体实现有LVM和glusterfs

Ephemeral disk:

实例使用的临时磁盘空间。当实例创建的时候,临时磁盘会创建一个QCOW2

格式的镜像文件到/var/lib/nova/instances目录。

实例:

实际就是一个用户定义的可运行的虚拟机。

Flavor:

实例的所有硬件的集合。比如CPU和RAM还有磁盘,相当于一个硬件模板,openstack会根据这个模板给虚拟机分配相应的硬件资源。

Stack:

通过模板创建一个实例组,使用JSON语言实现。模版文件通过heat来管理。

Openstack networking

软件定义和实现网络服务。包括了一些功能插件,比如open vswitch,通过软件方式来实现QoS VLAN等网络服务。

Openstack核心组件介绍:

Keystone 身份验证服务

service openstack-keystone start

swift 对象存储,分布式文件管理

Ring是Swift最重要的组件,用于记录存储对象与物理位置间的映射关系。Ring使用Zone、Device、Partition和Replica来维护这些映射信息。Ring中每个Partition在集群中都(默认)有3个Replica。每个Partition的位置由Ring来维护,并存储在映射中。Ring文件在系统初始化时创建,之后每次增减存储节点时,需要重新平衡一下Ring文件中的项目,以保证增减节点时,系统因此而发生迁移的文件数量最少。

Swift利用一致性哈希算法构建了一个冗余的可扩展的分布式对象存储集群。Swift采用一致性哈希的主要目的是在改变集群的Node数量时,能够尽可能少地改变已存在Key和Node的映射关系。

replica

如果集群中的数据在本地节点上只有一份,一旦发生故障就可能会造成数据的永久性丢失。因此,需要有冗余的副本来保证数据安全。

Zone

如果所有的Node都在一个机架或一个机房中,那么一旦发生断电、网络故障等,都将造成用户无法访问。因此需要一种机制对机器的物理位置进行隔离,以满足分区容忍性(CAP理论中的P)。因此,Ring中引入了Zone的概念,把集群的Node分配到每个Zone中。其中同一个Partition的Replica不能同时放在同一个Node上或同一个Zone内。注意,Zone的大小可以根据业务需求和硬件条件自定义,可以是一块磁盘、一台存储服务器,也可以是一个机架甚至一个IDC。

上传文件PUT和下载文件GET请求的数据流,两个请求操作的是同一个对象。上传文件时,PUT请求通过负载均衡随机挑选一台Proxy Server,将请求转发到后者,后者通过查询本地的Ring文件,选择3个不同Zone中的后端来存储这个文件,然后同时将该文件向这三个存储节点发送文件。这个过程需要满足NWR策略(Quorum Protocol),即3份存储,写成功的份数必须大于3/2,即必须保证至少2份数据写成功,再给用户返回文件写成功的消息。下载文件时,GET请求也通过负载均衡随机挑选一台Proxy Server,后者上的Ring文件能查询到这个文件存储在哪三个节点中,然后同时去向后端查询,至少有2个存储节点“表示”可以提供该文件,然后Proxy Server从中选择一个节点下载文件。

Proxy Server

Proxy Server是提供Swift API的服务器进程,负责Swift其余组件间的相互通信。对于每个客户端的请求,它将在Ring中查询Account、Container或Object 的位置,并且相应地转发请求。Proxy提供了Rest-full API,并且符合标准的

HTTP协议规范,这使得开发者可以快捷构建定制的Client与Swift交互。Storage Server

Storage Server提供了磁盘设备上的存储服务。在Swift中有三类存储服务器:Account、Container和Object。其中Container服务器负责处理Object的列表,Container服务器并不知道对象存放位置,只知道指定Container里存的哪些Object。这些Object信息以sqlite数据库文件的形式存储。Container服务器也

做一些跟踪统计,例如Object的总数、Container的使用情况。

Consistency Servers

在磁盘上存储数据并向外提供Rest-ful API并不是难以解决的问题,最主要的问题在于故障处理。Swift的Consistency Servers的目的是查找并解决由数据损坏和硬件故障引起的错误。主要存在三个Server:Auditor、Updater和Replicator。Auditor运行在每个Swift服务器的后台持续地扫描磁盘来检测对象、Container和账号的完整性。如果发现数据损坏,Auditor就会将该文件移动到隔离区域,然后由Replicator负责用一个完好的拷贝来替代该数据。图2给出了隔离对象的处理流图。在系统高负荷或者发生故障的情况下,Container或

账号中的数据不会被立即更新。如果更新失败,该次更新在本地文件系统上会

被加入队列,然后Updaters会继续处理这些失败了的更新工作,其中由Account Updater和Container Updater分别负责Account和Object列表的更新。Replicator的功能是处理数据的存放位置是否正确并且保持数据的合理拷贝数,它的设计目的是Swift服务器在面临如网络中断或者驱动器故障等临时性故障情况时可以保持系统的一致性。

Glance

Glance为Nova提供镜像的查找操作,而Swift又为Glance提供实际的存储服务,Swift可以看作是Glacne存储接口的一个具体实现。

glance-api 主要是用来接受各种api调用请求,并提供相应的操作。

glacne-registry 用来和MySQL数据库进行交互,存储或者获取镜像的元数据,注意,刚才在Swift中提到,Swift在自己的Storage Server中是不保存元数据的,这儿的元数据是指保存在MySQL数据库中的关于镜像的一些信息,这个元数据是属于Glance的。

Cinder:

为来宾虚拟机(VM) 提供了持久块存储。

卷通常通过iSCSI 附加到计算节点。块存储也需要某种形式的后端存储,在默认情况下,该后端存储是本地卷组上的逻辑卷管理,但可以通过驱动程序将它扩展到外部存储阵列或设备。

API service:Cinder构架图的核心部分,负责接受和处理Rest请求,并将请求放入RabbitMQ队列。

Scheduler service: 处理任务队列的任务,并根据预定策略选择合适的Volume Service节点来执行任务。所以构架图中,Scheduler一端连接MQ队列,处理MQ队列中的任务;一端连接Volume设备,任务在Volume节点上执行。

相关文档
最新文档