openstack
opensatck 是有rackspace 和NASA 共同研究的云计算平台,是一个旨在为公共及私有云管理提供软件的开源项目。
1.openstack的模块
- nova 计算服务
以虚拟机的形式提供计算服务 - swift 存储服务
提供静态长期的存储服务,如附件视频等 - Glance 镜像
主要提供虚拟磁盘镜像目录分类管理和镜像库存储 - keystone 身份认证服务
- Neuron 网络管理服务
实现了虚拟机的网络资源管理,包括网络链接 IP管理 L3 的公网映射 ,以及后续的负载均衡 - Cinder 块存储服务
为虚拟机提供云硬盘服务 - Horizon 图形界面展示服务
2.NOVA 服务
本身不包括虚拟化软件,但是他可以通过虚拟化技术和有关的驱动程序来集成许多常见的虚拟机管理程序,它通过Libvirt API 与被支持的虚拟机监控程序交互,通过Web API 对外提供服务。
采用无共享架构,这样所有的主要部件都可以在 不同的服务器上运行,分布式设计依赖于一个消息队列来处理组件对组件之间的异步通信。
2.1NOVA的功能架构
Nova 云架构主要包括一下主要组件,API服务,消息队列,计算进程,调度程序,网络管理和卷管理
- API 服务
对外提供一个于云基础设施交互的接口,也是外部可用于管理基础设施的唯一组件。
API 服务接受请求,将其任务通过消息队列委派给其他组件。 - 消息队列 (Message Queue)
为Nova中所有组件提供相互通信,相互协调的一种手段,是所有Nova组件都共享和更新的一个任务列表。这些组件使用AMQP协议,以面向回调的方式进行交互。 - 计算进程(compute)
Nova 的一个守护进程,用于管理实例生命周期,通过消息队列接收实例生命周期管理的请求,并承担其操作工作。 - 调度程序(schedule )
Nova 的另一个守护进程,它通过适当的调度算法从可用资源池中获得一个计算任务,确定为虚拟机请求分配哪一个计算机。 - 网络管理(Network manager)
用于控制虚拟机网络状态IP地址,配置虚拟局域网,实现安全组,配置计算节点网络等 - 卷管理(Volume manager)
基于LVM的实例卷,实现和卷相关的功能,例如新加卷,删除卷,为实例附加卷,为实例分离卷等等。
2.2Libvirt抽象管理层
为了是的Nova兼容不同平台的虚拟机,Libvirt 提供了一个抽象接口,他支持许多平台的虚拟机,如Xen KVM QEMU等等。
libvirt 是一种实现虚拟化平台交互工具集,特为所支持的虚拟机交互程序提供一套通用的AIPI编程接口,支持 c、c++ 、python、 java 等都多种主流开发语言的绑定。提供了以下功能
- 虚拟机管理
包括开机关机迁移等操作,也支持 网卡,io等设置 - 远程机器支持
- 存储管理
- 网络接口管理
- 虚拟网络
3. 存储服务
存储组件包括 :对象存储Swift 镜像寻存储Glance 和块存储Cinder
3.1 Swift 对象存储
对象存储Swfit 提供分布式对象存储服务,适合存储大规模非结构化数据,与亚马逊的存储解决方案S3 API 兼容。是通过内置高冗余及高容错机制实现对象存储的系统。
主要用于:
- 永久类型的静态数据长期存储
- 存储容量难以估计的数据
- 为Web提供基于云的弹性存储
- 为Glance 提供镜像存储
Swift具有以下特性:
- 持久性
指的是数据的可靠性,即数据存入系统后,丢失的可能性 - 数据拓展性
- 数据存储容量的扩展
- Swift性能的线性提升
如吞吐量,每秒的查询率等等,Swift使用非阻塞式I/O模式,大大提高了系统吞吐和响应能力 - 采用完全对称、面向资源的分布式系统架构设计,能极大地降低系统的维护成本,并容易扩容。
- 无单点故障,采用冗余存储方式,同时备份数据随机分布,一个节点宕机完全不会影响整个文件系统,数据丢失
3.2 Swift 物理架构
Swift的物理架构主要分为三种服务,分别是 :代理服务,存储服务,一致性服务
- 代理服务:对外提供对象服务API,负责Seift与其他组件间的从相互通信,会根据环的信息查找服务地址,并转发用户请求至相应的账户。容器。也可用于排错,如果一个服务器坏了,代理服务会将请求转发到另一台替补服务器上。
- 存储服务: 存储服务主要分为以下三个类型:对象服务,容器服务,账户服务
- 对象服务:提供对象元数据的内容和服务,每个对象的内容会以文件的形式存储在文件系统之中,元数据作为文件属性来存储,一般采用支持拓展属性的XFS文件系统。
- 容器服务:提供容器元数据和统计信息,并维护所含对象列表的服务
- 账户服务: 提供账户元数据和统计信息,并维护所含容器列表的服务。
- 一致性服务:用于查找并解决由于数据损坏和硬件故障引起的错误,主要有三个服务: 审计服务 ,更新服务,复制服务。
- 审计服务(Auditor)
主要检查对象,容器、账户的完整性,如果发现错误,文件将被隔离,并复制其他副本到错误文件,并记录在日志中。 - 更新服务(Updater)
主要负责更新处理,如果当前对象无法更新,任务将会被序列化到本地文件系统,等到服务恢复后,进行异步更新。 - 复制服务(Replicator)
用于检测本地分区和远程副本是否一致,发现不一致时,更新远程副本,
另外一个任务是,确保被标记删除的对象从文件系统中移除。
3.3 glance 镜像
镜像存储Glance 提供虚拟机的存储和管理功能,镜像存储本身不存储大量的数据,需要挂载后台存储来存放实际的镜像数据。
Glance 的架构主要分为三种服务:API接口服务,注册服务,存储适配器
- API接口服务
主要用于接受各种API的调用请求,并提供相应的操作。包括镜像的上传下载,更改信息,以及虚拟机的云硬盘的快照管理等接口服务 - 注册服务
用于存储,处理、检索有关镜像的元数据,如大小。类型等等。 - 存储适配器
用于存储镜像文件,提供多种存储适配、支持S3存储、Swift存储、以及文件存储系统等等。
3.4 Cinder 块存储
块存储 Cinder 提供持久化块设备存储接口,提供对卷实际需要的存储块单元的管理功能(设备分为块设备如硬盘和字符设备如键盘)
卷类似于一个硬盘,可以附加到实例,或者从实例分离。Cinder 并没有实现对块设备的管理和实际服务,而是为后端不同的存储结构提供了统一的接口,支持不同的硬件厂商,从而与OpenStack 进行整合。
此外 Cinder还可以通过快照,实现对卷的备份和恢复。
Cinder 的架构的架构主要分为三个部分: API 、调度程序、存储适配
- API
负责解析所有传入的请求并将它们转发给消息队列 - 调度程序
用于处理任务队列的任务,并根据预定的策略来选择合适的块存储服务节点来执行任务 - 存储适配
管理存储空间, 通过消息队列直接在块设备或者软件上与其他进程进行交互。
4. 学习心得
这一章,所涉及的知识点较多,而且散碎,掌握并不是很牢固,希望可以在后期的实验中加深理解。对于对象元数据,容器元数据,账户元数据,不知所云。现在理解为 文件 文件夹 用户,不知道对不对 ,以后在做补充