- 博客(35)
- 收藏
- 关注
原创 keystone性能优化
openstack采用了token认证的机制,各api的调用都会涉及到token的验证问题,使得keystone成为一个性能的瓶颈。token的验证环节包括:验证请求中包含的token是否有效、过期,该token对应的用户组和用户id,对应的授权服务访问地址等。性能瓶颈的解决-1:由于openstack中的各api都是wsgi服务,并且都用到了keystoneclient提供的一个中间
2015-05-25 17:07:21 3711
原创 OpenStack配额(Quota)设计与实现
配额(Quota)模块在openstack中是一个比较小的模块,具有比较好的扩展性。功能配额能够以user、project以及 quota class 这三个单位计算配额。默认情况下,是以project为计算单元。抽象配额在使用的过程中,抽象出三个概念:资源、驱动、引擎。资源BaseResource定义了一个配额单元的基本属性,如下class BaseRes
2015-05-25 16:20:02 4384
翻译 Horizon二次开发
注:openstack horion项目和其他的项目有所不同,它主要提供一套工具,我们可以自己定制开发我们想要的dashboard(控制面板)。翻译自:http://docs.openstack.org/developer/horizon/topics/tutorial.html
2015-04-02 09:07:04 4978 1
原创 python语言特性
最近一段时间一直在研究openstack的源码,所以对python语言也在逐渐的熟悉(之前一直是在用java)。今天这篇文章来总结一下python语言的一些特性吧。首先来了解一下经常出现的python一些特殊的函数:python语言约定,函数名以“_”(单下划线)开头的为受保护函数,只有类本身和子类可以访问到,相当于java中的protected关键字;函数名以“__”(双下划线)开头的为
2015-03-18 09:51:15 1068
原创 OpenStack之Nova分析——Nova Compute定时任务(三)
上篇文章我们分析了update_available_resourced定时任务,这篇文章我们来继续分析Nova Compute定时任务——report_driver_status和publish_service_capabilities定时任务。report_driver_status定时任务的主要功能是定时更新ComputeManager对象缓存的计算节点的capabilities信息。一个
2015-03-03 17:34:29 1437
原创 OpenStack之Nova分析——Nova Compute定时任务(二)
这篇文章,我们来详细的分析一下Nova Compute服务的update_available_resource定时任务。update_available_resource定时任务的主要功能是定时更新Nova Compute服务所管理的计算节点的资源信息,它对应的周期方法就是ComputeManager类的update_available_resource方法。来看一下update_avai
2015-03-03 09:23:55 2642
原创 OpenStack之Nova分析——Nova Compute定时任务(一)
我们在分析虚拟机的创建和Nova Scheduler调度算法中,其实已经涉及到了Nova Compute服务的一些内容,不过Nova Compute服务完成的工作要更多。这篇文章我们来详细的分析一下Nova Compute服务的一个重要内容——定时任务。在前面分析Nova Scheduler调度算法中,大家是否还记得在HostManager对象中有两个重要的变量:1. host_state
2015-02-16 09:05:27 2566
转载 OpenStack之调试——Pdb调试
用pdb调试有多种方式可选:1. 命令行启动目标程序,加上-m参数,这样调用myscript.py的话断点就是程序的执行第一行之前python -m pdb myscript.py2. 在Python交互环境中启用调试>>> import pdb>>> import mymodule>>> pdb.run(‘mymodule.test()’)3. 比较常用的,就
2015-02-09 11:11:09 1595
原创 OpenStack之Nova分析——创建虚拟机(七)——创建虚拟机镜像文件
虚拟机的镜像文件主要是指磁盘镜像文件,当然有的还包括ramdisk和kernel镜像来配合磁盘镜像文件使用,这篇文章我们来重点分析一下创建虚拟机镜像的整个过程。先来概述一下整个流程:1. LibvirtDriver类中的_create_img方法,完成虚拟机镜像文件的创建工作的准备工作后,调用Qcow2类的cache方法。2. Qcow2类的cache方法调用create_image方
2015-02-09 09:29:05 2943
原创 OpenStack之Nova分析——创建虚拟机(六)
接着上篇文章谈到的,这篇文章我们继续,来分析ComputeManager类下的_spawn方法。class ComputeManager(manager.SchedulerDependentManager): def _spawn(self, context, instance, image_meta, network_info, block_devi
2015-02-06 14:32:37 1753
原创 OpenStack之Nova分析——创建虚拟机(五)
上篇两篇文章分析了Nova Scheduler服务,这篇文章我们继续来分析创建虚拟机的过程。先来回顾一下。class FilterScheduler(driver.Scheduler): def scheduler_run_instance(self, context, request_spec, admin_passwor
2015-02-05 11:00:17 1835
原创 OpenStack之Nova分析——Nova Scheduler调度算法
上篇文章介绍了Nova Scheduler服务的启动流程,我们知道Nova Scheduler服务作为一个调度者,其核心便是调度算法。这篇文章我们就来分析一下Nova Scheduler服务的调度算法吧。在配置文件中,调度算法默认的驱动类是FilterScheduler,该类位于nova/nova/scheduler/filter_scheduler.py中。其算法的原理是比较简单的,就是“过
2015-01-28 16:14:34 7458
原创 OpenStack之Nova分析——Nova Scheduler服务启动
在继续介绍Nova虚拟机创建过程之前,我们来穿插一个很重要的内容,这就是Nova组件的“大脑”——Nova Scheduler(调度器)。它是我们后续分析虚拟机创建的基础。这个子服务的作用前面已经介绍过,从其名称也可以看出该子服务就是负责调度各子服务工作的。Nova Scheduler属于RPC服务(至于什么是RPC服务可以关注我之前的文章),这篇文章我们先来分析一下Nova Schedule
2015-01-27 16:16:00 4520
原创 OpenStack之Nova分析——创建虚拟机(四)
上篇文章我们分析完了_validate_and_provision_instance方法,回到_create_instance方法,我们来回顾一下这个方法class API(base.Base): def _create_instance(self,context,instance_type, ...): .
2015-01-27 15:01:00 1454
原创 OpenStack之Nova分析——创建虚拟机(三)
继续上篇文章谈到的_get_project_quotas方法,进入这个方法。def get_project_quotas(self, context, resources, project_id, quota_class=None, defaults=True, usages=T
2015-01-23 16:38:11 1358
原创 OpenStack之Nova分析——创建虚拟机(二)
接着上篇文章,我们来继续分析_create_instance方法。这个方法定义在nova/nova/compute/api.py中。class API(base.Base): def _create_instance(self,context,instance_type, ...): ... #验证
2015-01-22 10:11:11 1731
原创 OpenStack之Nova分析——创建虚拟机(一)
上篇文章主要介绍了Nova API的启动流程,这篇文章我们来分析一下一个虚拟机的创建产生过程是怎样的。由前一篇文章的分析,我们知道,处理HTTP请求的核心工作实际上都在底层的Controller对象中定义完成。Resource对象只是在Controller的基础上完成的封装,用来实现数据的序列化和反序列化。Controller类中,处理虚拟机创建请求的方法是create,该方法最终调用了Com
2015-01-20 16:04:55 3766
原创 OpenStack之Nova分析——Nova API服务
Nova是OpenStack中最核心的组件,可以说OpenStack中的其它组件都是为Nova服务的。所以Nova也是OpenStack最复杂的组件。Nova服务由多个子服务组成,这些子服务通过RPC实现通信,而其它组件(如glance等)是通过Nova对外提供的API,实际上就是RESTful API,实现与Nova的通信。所以可以看到,前面提到的OpenStack应用的两种通信方式(RPC、R
2015-01-19 15:51:01 2486 1
转载 OpenStack Eventlet分析(二)
转自http://blog.csdn.net/gaoxingnengjisuan/article/details/12914831上一篇博客OpenStack-Eventlet分析(1)以eventlet库中的spawn函数为代表,详细的介绍了spawn函数的运行过程。最终的重点是在hubs用来进行调度的一面,而hubs关于网络的一面还没有涉及。然而,上一篇只专注于每一行代码的执行流程了,
2015-01-19 14:44:58 660
转载 OpenStack Eventlet分析(一)
转自http://blog.csdn.net/gaoxingnengjisuan/article/details/12913275本来打算总结一下eventlet在OpenStack中的应用,正巧在网上找到几篇别人已经总结好的资料,而且总结的很好,这里直接转载过来。同时也向作者表示感谢。 Eventlet库在OpenStack服务中上镜率很高,尤其是在服务的多线程和WSGI Se
2015-01-19 14:34:23 836
原创 OpenStack之RESTful API调用(一)
前面两篇文章分析了OpenStack同一组件下不同模块之间的通信方式——RPC。这篇文章我们来继续看一下OpenStack中的另一种通信方式——RESTful API。在OpenStack中,RESTful API用于不同组件之间的通信。先来简单的了解一下REST吧。REST构建于HTTP协议之上,遵循并扩展和规范了传统HTTP协议中的标准方法,以下是RESTful API定义的标准方法:
2015-01-16 09:03:00 4103
原创 OpenStack之RPC调用(二)
我们接着上篇博文,下面来分析一下客户端4. 客户端:向主题服务器发送RPC请求主题消费者创建完成后,客户端就可以向RabbitMQ服务器发送RPC请求了。还是先来看一下client.pyclinet.py
2015-01-14 16:59:23 1292
原创 OpenStack之RPC调用(一)
众所周知,OpenStack的通信方式有两种,一种是基于HTTP协议的RESTFul API方式,另一种则是RPC调用。两种通信方式的应用场景有所不同,在OpenStack中,前者主要用于各组件之间的通信(如nova与glance的通信),而后者则用于同一组件中各个不同模块之间的通信(如nova组件中nova-compute与nova-scheduler的通信)。关于OpenStack
2015-01-13 09:00:35 5895 1
转载 [RabbitMQ+Python入门经典] 兔子和兔子窝
RabbitMQ作为一个工业级的消息队列服务器,在其客户端手册列表的Python段当中推荐了一篇blog,作为RabbitMQ+Python的入门手册再合适不过了。不过,正如其标题Rabbit and Warrens(兔子和养兔场)一样,这篇英文写的相当俏皮,以至于对于我等非英文读者来说不像一般的技术文档那么好懂,所以,翻译一下吧。翻译过了,希望其他人可以少用一些时间。翻译水平有限,不可能像原
2014-12-09 16:02:44 1419
原创 openstack集群架构
来到云计算&云存储团队已经小半年了,摸索openstack也快半年了,总觉得是时候该把学到的东西总结一下了。以下博文都是个人的一些心得,有不妥的地方还望列为技术大师不吝赐教。关于openstack架构等相关概念就不在这介绍了(这些东西资料一大坨,都被说烂了)。首先来看一下我们的openstack部署架构吧。
2014-12-08 16:00:18 3248 3
原创 nova-network网络模式
作为openstack中的核心组件,nova肩负着管理虚拟机的使命。nova提供nova-api,nova-scheduler,nova-network等几个重要的服务。而其中nova-network是openstack网络管理模块neutron还没有独立出来时候的前身,当然其功能就是网络和地址管理,它会创建虚拟网络,
2014-12-05 16:55:48 3011
转载 解决MySQL远程连接不上的问题
其实这个问题对于熟手来说根本就不是什么问题,远程连接 只需要下面123就可以搞定了:1. 首先要排查网络问题和防火墙的问题 这个是必须的, 你要是连MySQL的服务器都连不上, 那还访问什么? 怎么检查呢? ping一下 ping 192.168.0.11 ping 的通的话, 再去检查一下 3306端口是不是被防火墙给挡掉了
2014-11-13 14:44:02 957
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人