openstart源码概述

本文深入探讨openstack的虚拟化部署方式,包括libvirt驱动和XenAPI驱动的使用,并介绍了openstack项目的架构,如RESTful API、WSGI、webob和paste部署。此外,文章详细讲解了nova API的实现、版本升级的rolling upgrade技术以及Swift对象存储的体系结构和数据一致性。最后,涉及到了虚拟网络技术,如TAP/TUN、Bridge和Open vSwitch,并简要阐述了neutron的网络抽象和架构。
摘要由CSDN通过智能技术生成

倘若对认知的技术很模糊,那么分解将是必不可少的梳理过程!统一性和基本型
—-致

openstack虚拟化部署方式:
1、libvirt驱动:libvirt提供了很好的python绑定,所以基于python的nova只要imput一个名为libvirt的python模块,就可以像c语言程序那样方便地调用libvirt的功能。
libvirt的python模块也提供了类似C库的python类:virConnect代表一个到VMM的连接,virConnect代表了一个虚拟机。
2、XenAPI驱动:比如XenAPI有”主机池”概念,是指一些共享存储的宿主机的集合,在主机池中进行动态迁移就没有必要迁移虚拟磁盘。这对Nova的实现十分重要(openstack与
虚拟化联系最紧密的是nova!)
http://www.alice.org/wp-content/uploads/2017/08/Alice3_unix_3_3_1_2.sh

openstack项目的架构:
1、openstack项目都是通过RESTful API向外提供服务。(RESTful—-互联网软件架构 >>>>> 此架构核心概念是”资源”。)
2、WSGI(web网关接口)则是python语言中定义的web服务器和web应用程序或架构之间的通用接口标准。也可把WSGI理解为服务端和应用端交互的一种包装,经过不同中间件的包装,便具有不同的功能,比如URL路由转发,在比如权限认证。这些不同中间件的组合便形成了WSGI的框架,比如paste。
3、openstack使用paste的deploy的组件来完成WSGI服务器和应用的构建,每个项目源码的etc目录下都有一个paste配置文件。
4、除了routers和paste deploy外,openstack中另一个与WSGI密切相关的是webob。webob通过对WSGI的请求与响应进行封装,来简化WSGI应用的编写。webob中两个重要的对象:
一是webob.request,对WSGI请求的environ参数进行封装;
一是webob.response,包含了标准WSGI响应的所有要素。
5、所有项目的源码目录都可以在/usr/lib/python2.7/site-packages/项目名称/下查到。比如:若为计算项目则把前句项目名称处改为nova,则进入可查看到nova源码!!

*单独说明(openstack模块源码简介):*

nova api的实现:
1、nova api请求路由:
nova api目录在:/usr/lib/python2.7/site-packages/nova/api,其目录下metadata文件夹是提供给所创建的虚拟机来获得一些配置信息的API。
nova api目录下:openstack文件夹下包含WSGI基础架构代码以及如何解析请求和分发请求的核心代码。
/usr/lib/python2.7/site-packages/nova/api/openstack/compute中可以找到对应每个API的入口点。
nova使用python paste作为工具来加载WSGI stack。WSGI stack通过文件/etc/nova/api-paste.ini配置。当解析每个URL请求的时候,可以通过URL映射找到API对应的resource object,目录文件/usr/lib/python2.7/site-packages/nova/wsgi.py。
2、nova API的实现:
/usr/lib/python2.7/site-packages/nova/api/openstack/compute此目录下打开keypairs类的文件是keypairs.py:(以下注解皆在配置文件内)
keypairs类描述了要注册的资源或者所要扩展的资源。
get_resourxes方法用来返回所要注册的资源,这里(见配置文件326–)注册了一个资源,名字为ALIAS所指定,此资源所对应的controller是keypairscontroller。
配置文件内除了添加新资源还可以扩展现有资源,扩展新资源见配置文件38–261。
其中多个声明代表对应不同版本的microversion,方法所对应的microversion通过decorator”wsgi.Controller_version”来指定。
分别对应配置文件中@wsgi.Controller.api_version后所代表的版本。
错误返回码在配置文件的@extensions.expected_errors((400, 403, 409)),代表拦截了所有未预期的错误。
@wsgi.response(201)则表示API请求正常返回码。
再然后通过方法的接口可以得到webob.request对象,从request对象中可以获取其他请求参数。除了这些标准的CURD方法,还可以添加action,从/usr/lib/python2.7/sitepackages/nova/api/openstack/compute/下的evacuate.py中可以看到如何注册evacuate action(配置文件中75—

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值