OpenStack
文章平均质量分 81
gj4990
这个作者很懒,什么都没留下…
展开
-
nova-compute Periodic tasks 机制
我们本文将讲述nova-compute组件的resource tracker和report state的periodic task机制的代码流程。 在前面关于nova-scheduler组件的启动主要分析了关于RPC-server的创建流程,同样地,nova-compute组件的resource tracker和report state的periodic task也是在其服务启动原创 2016-01-25 22:25:37 · 5312 阅读 · 0 评论 -
nova boot代码流程分析(二):nova-scheduler主机选择
本篇文章将分析nova-scheduler服务在创建VM时如何进行主机的选择。完整来说,nova-scheduler主机选择的过程主要分为以下几个阶段:1. nova.scheduler.rpcapi.SchedulerAPI发出RPC请求到nova.scheduler.manager.SchedulerManager。2. 从SchedulerManager到调度器(类Scheduler原创 2016-04-10 21:35:09 · 6794 阅读 · 0 评论 -
neutron-dhcp-agent服务启动流程
在分析nova boot创建VM的代码流程与neutron-dhcp-agent之前,首先分析neutron-dhcp-agent服务启动流程。与其他服务的启动入口一样。查看setup.cfg文件。[entry_points]console_scripts = neutron-db-manage = neutron.db.migration.cli:main原创 2016-05-25 20:02:46 · 19004 阅读 · 0 评论 -
nova boot代码流程分析(四):nova与neutron的l2 agent(neutron-linuxbridge-agent)交互
继续《nova boot代码流程分析(三):nova与neutron的交互(1)》的分析。#/nova/virt/libvirt/driver.py:LibvirtDriver # NOTE(ilyaalekseyev): Implementation like in multinics # for xenapi(tr3buchet) def spawn(self, c原创 2016-05-14 16:08:16 · 14169 阅读 · 5 评论 -
nova boot代码流程分析(三):nova与neutron的plugin交互
在执行nova boot命令创建VM时,neutron将会为VM分配MAC和IP,用于创建VM所需的port。网上有些许相关讲述nova与neutron交互的文章,不过都是从架构层面进行分析和讲解,很少涉及到代码层面。本文将从代码层面进行分析nova与neutron的交互。本文主要分析如何从neutron为VM分配MAC和IP,tap设备的创建和相关bridge的创建。注意:这里的分析是基于采用L原创 2016-04-29 21:23:43 · 14715 阅读 · 2 评论 -
neutron-server的启动流程(一)
neutron-server的启动包括RPC-server的创建,RPC-client的创建,WSGI server的创建,因此neutron-server不单单起到与其他组件中的api的功能。本文将RPC相关创建和WSGI server的创建两方面进行代码流程的分析。查看setup.cfg文件找到neutron-server的代码入口。neutron-server =原创 2016-05-06 19:23:00 · 21781 阅读 · 2 评论 -
OpenStack修改IP/MAC对VM通信影响
本文介绍在OpenStack中修改VM的IP/MAC对VM网络通信的影响。这里主要分析VM与外部网络之间的通信。在VM之间的通信遇到问题时,也可参考本文进行分析和定位。1. 准备阶段1.1 开启OpenStack的网络服务[root@jun2 ~]# systemctl enable neutron-l3-agent[root@jun2 ~]# systemctl原创 2016-04-22 20:47:13 · 3485 阅读 · 1 评论 -
neutron-server的启动流程(二)
1.2 extension resource#/neutron/api/v2/router.py:APIRouterext_mgr = extensions.PluginAwareExtensionManager.get_instance()ext_mgr.extend_resources("2.0", attributes.RESOURCE_ATTRIBUTE_MAP)1.2.1原创 2016-05-08 15:00:13 · 6409 阅读 · 1 评论 -
nova boot代码流程分析(五):VM启动从neutron-dhcp-agent获取IP与MAC
1. network和subnet创建代码流程[root@jun ~(keystone_user1)]# neutron net-create demo-net[root@jun ~(keystone_user1)]# neutron subnet-create demo-net 1.1.1.0/24 --name demo-subnet --gateway 1.原创 2016-06-01 20:16:04 · 11247 阅读 · 0 评论 -
nova boot代码流程分析(一):Claim机制
nova boot创建VM的流程大致为:1. novaclient发送HTTP请求到nova-api(这里内部细节包括keystone对用户的验证及用户从keystone获取token和endpoints等信息,具体参考《keystone WSGI流程》)。2. nova-api通过rpc调用到nova-conductor。3. nova-conductor调用rpc进入nova-sc原创 2016-04-09 20:07:03 · 11086 阅读 · 1 评论 -
keystone WSGI流程
作为OpenStack两种主要的通信方式(RESTful API与消息总线)之一,理解RESTful API的设计思路和执行过程,有助于我们对OpenStack有更好的理解。RESTful只是设计风格而不是标准,Web服务中通常使用基于HTTP的符合RESTful风格的API。而WSGI(Web ServerGateway Interface)则是python语言中所定义的Web服务器和Web应用原创 2016-03-26 11:15:40 · 8651 阅读 · 0 评论 -
OpenStack-RPC-client的构建
本文截取创建VM中的select_destinations的RPC call的代码流程讲述OpenStack-RPC-client的构建。下面是VM的创建过程。 我们这里主要分析红圈中的select_destinations的RPC call的代码流程。这里我们也简要描述一下VM创建的代码流程。#/nova/compute/api.py @hooks.ad原创 2016-01-07 21:00:02 · 2702 阅读 · 0 评论 -
OpenStack-RPC-server的构建(五)
本篇文章将分析start方法中还剩下的两条语句的代码流程,代码如下:# usr/lib/python2.7/site-packages/oslo_messaging/server.pydef start(self): """Start handling incoming messages. This method causes the server to b原创 2016-01-03 10:49:44 · 2538 阅读 · 0 评论 -
OpenStack-RPC-server的构建(四)
本章我们分析通过oslo_messaging层向下创建consumer的代码流程,在创建consumer之前,首先利用上篇文章所说的创建的connection作为参数创建一个AMQPListener对象,将该对象赋给创建consumer的callback参数,所以当有消息到达时,调用AMQPListener类的__call__方法。这里需要注意的是conn =self._get_connectio原创 2015-12-27 19:48:16 · 1568 阅读 · 0 评论 -
OpenStack-RPC-server的构建(三)
继续上篇文章的分析,我们知道self.rpcserver是一个MessageHandlingServer对象。然后我们将重点分析/usr/lib/python2.7/site-packages/nova/service.py的start方法中的self.rpcserver.start()这条语句。# usr/lib/python2.7/site-packages/oslo_messaging/原创 2015-12-26 17:27:26 · 3776 阅读 · 0 评论 -
OpenStack-RPC-server的构建(二)
2.1 server = service.Service.create(…)中的create方法是/usr/lib/python2.7/site-packages/nova/service.py文件中Service类的类方法,用于创建且返回一个Service对象。 #/usr/lib/python2.7/site-packages/nova/service.py@classmeth原创 2015-12-26 11:09:01 · 2819 阅读 · 0 评论 -
OpenStack-RPC-server的构建(一)
我们主要分析Transport为rabbit方式的RPC-server构建,当我们执行如下命令时:[root@junmulti-user.target.wants(keystone_admin)]# rabbitmqctl list_consumersListingconsumers ...alarm_notifier 1 true 0 []原创 2015-12-14 20:33:31 · 3145 阅读 · 1 评论 -
OpenStack的oslo_messaging组件使用
首先给出OpenStack的RPC通信的代码调用架构。OpenStack消息通信架构图 OpenStack层封装call和cast接口用于远程调用RPC的server上的方法,这些方法都是构造RPC的server的endpoints内的方法。远程调用时,需要提供一个字典对象来指明调用的上下文,调用方法的名字和传递给调用方法的参数(用字典表示)。如:cctxt原创 2015-12-12 22:29:18 · 6799 阅读 · 10 评论 -
nova list命令的代码流程分析
1. 概要这篇文章我们主要分析novalist命令的代码流程,其代码流程大致为:1.从keystone获得token。2. 根据获得的token去调用nova-api接口查询VM的列表。其中获得token之前需要查询keystone的版本信息,且所有的这些查询操作都是通过WSGI通信方式进行处理的。2. 公共代码流程nova命令的代码入口如下,[root@jun ~]# c原创 2016-03-20 14:25:29 · 11889 阅读 · 1 评论 -
基于py-amqp编写生产者和消费者代码
在介绍erlang的dbg调试RabbitMQ源码之前,首先介绍基于py-amqp编写RabbitMQ的生产者和消费者代码,其中py-amqp的安装包可在以下链接下载:https://pypi.org/project/amqp/1 公共模块生产者和消费者一些公共代码编写在utils.py文件中,代码如下:import loggingimport jsonimport oscl...原创 2019-10-06 22:45:33 · 758 阅读 · 0 评论