openstack学习

来源:互联网 发布:怎样制做淘宝原图 编辑:程序博客网 时间:2024/06/08 05:26

一、openstack的历史

由于工作的原因,有幸接触了openstack,之前对openstack也有所了解,但是没有深入的研究,最终也仅限于了解。之后将进行系统的openstack的学习,通过源码的方式进行学习,源码的阅读会对整个架构有深入的理解,在碰到问题时可以很好的进行解决和定位。

OpenStack是一个面向IaaS层的云管理平台开源项目,用于实现公有云和私有云的部署及管理。最开始Openstack只有两个组件,分别为提供计算服务的Nova项目以及提供对象存储服务的Swift,其中Nova不仅提供虚拟机服务,还包含了网络服务、块存储服务、镜像服务以及裸机管理服务。之后随着项目的不断发展,从Nova中拆分成多个独立的项目提供不同的服务,如nova-volume拆分为Cinder项目提供块存储服务,nova-image拆分为Glance项目,提供镜像存储服务,nova-network则是neutron的前身,裸机管理也从Nova中分离出来为Ironic项目。最开始容器服务也是由Nova提供支持的,作为Nova的driver之一来实现,而后迁移到Heat,到现在已经分离成独立的项目Magnum,后来Magnum主要提供容器编排服务,单纯的容器服务由Zun项目负责。最开始Openstack并没有认证,从E版开始才加入认证服务Keystone,至此Openstack 6个核心服务才终于聚齐了

  1. Keystone 认证服务。
  2. Glance 镜像服务。
  3. Nova 计算服务。
  4. Cinder 块存储服务。
  5. Neutorn 网络服务。
  6. Swift 对象存储服务。
E版之后,在这些核心服务之上,又不断涌现新的服务,如面板服务Horizon、服务编排服务Heat、数据库服务Trove、文件共享服务Manila、大数据服务Sahara以及前面提到的Magnum等,这些服务几乎都依赖于以上的核心服务。比如Sahara大数据服务会先调用Heat模板服务,Heat又会调用Nova创建虚拟机,调用Glance获取镜像,调用Cinder创建数据卷,调用Neutron创建网络等。

二、openstack源码阅读

阅读openstack源码最重要的是了解整个项目的目录结构,以nova为例,nova中有许多的目录,每个目录的名字虽然是各个组件的名字,但是nova中的各个组件的功能却不都是在对应的目录中完成,例如,compute目录中并不一定是nova-compute节点上的操作,而主要是和compute相关(虚拟机操作相关)的功能实现。
在每个目录文件中基本都会有api.py、rpcapi.py和manager.py三个文件,这三个文件基本是每个目录中最重要的模块。
  1. api.py  通常是供其它组件调用的库。换句话说,该模块通常并不会由本模块调用。
  2. rpcapi.py  这个是RPC请求的封装,或者说是RPC实现的client端,该模块封装了RPC请求调用。
  3. manager.py  这个才是真正服务的功能实现,也是RPC的服务端,即处理RPC请求的入口,实现的方法通常和rpcapi实现的方法对应。
在进行源码阅读时通过每一个具体的操作进行阅读能够加深对源码的理解,比如创建虚拟机,在下一篇中将具体的介绍虚拟机创建的过程和源码中调用的过程。

原创粉丝点击