初学openstack-nova(一)

        作为一位资深的小白,今天开始学习openstack,从openstack的nova项目开始入手,用博客分享自己的学习历程,也希望各位大神提建议啊。

        Openstack是什么?openstack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台和工具集。Openstack目前有7个核心的组件,即Compute, Object storage, Identity, Dashboard,Block Storage, Network, Image service。它们有各自的项目代号,如Object storage的项目代号为swift, Image service的项目代号为glance,compute的项目代号为nova等,每一个组件可以完成不同的功能。本文主要介绍nova组件的一些内容。

        Nova的功能:根据需求提供虚拟化的调度和部署服务,是基础设施服务的核心组件,它管理着计算机的各种资源,可以通过nova来创建虚拟机。支持openstack云中实例(虚拟机)的所有活动都有Nova处理。Nova自身并没有提供任何虚拟化的能力,相反它使用libvirit API来与被支持的Hypervisors交互。

      同openstack类似,nova也是由很多组件构成的,这些组件包括nova-api, rabbit-mq server,nova-compute, nova-network, nova-volume, nova-scheduler.每个nova组件是又python代码编写的守护进程,每个进程之间通过队列和数据库交换信息(openstack的每个核心组件都有数据库与之对应。),执行各种请求。每一台虚拟机中的nova的配置文件中都会涉及到各个组件的配置。例如,我的机器的nova的配置文件为

Quota _instances = 20

####RABBITMQ####

Rabbit_password = ******

Rabbit_port = ******

Rabbit_host = ******

Rabbit_ha_queues = true

 

#####SCHEDULER#####

……

 

#####NETWORK#####

……

 

        Nova常用的部署架构为一个控制节点连接多个计算节点,控制节点要部署nova-api, nova-scheduler,nova-conductor服务,计算节点只需部署nova-compute服务。每一个子服务的通信是通过rabbitmq完成的。

        下面我们就看一下管理组件之间通信的rabbit-mq server。Openstack节点包括nova内部组件之间通过消息队列使用AMQP(Advanced Message Queue Protocol,高级消息队列协议,是应用层协议的一个开放标准)来完成通信。Nova通过异步调用的方法请求相应,使用回调函数在收到相应时触发。RabbitMQ是对AMQP协议的一种实现。

        RabbitMQ有四个主要的主要的角色,消息的发送者、消息的接收者、交换机和队列。其中exchange又分为3种类型:dierect, topic, fanout。direct是单条件的路由,即在exchange判断要将消息发送给哪个queue时,判断的依据只能是一个条件;fanout是广播式的路由,即将消息发送给所有的queue;topic是多条件的路由,转发消息时,依据的条件是多个。RabbitMQ发送消息的一般过程为

1、         要发送消息的客户端与RabbitMQ之间建立一个连接,即打开一个channel.

2、         客户端声明一个exchange,并设置相关属性。

3、         客户端声明一个queue,并设置相关属性,即将消息要发送到哪一个队列当中。

4、         客户端发送的消息中包含一个routing key,根据这个routing key,exchange与符合条件的queue建立绑定关系。

5、         客户端将消息投递到exchange。

6、         Exchange根据之前的绑定关系,将消息投送到对应的队列。

        下面就以nova-api与nova-schedulerz之间的通信来讲一下整个通信的过程。首先,nova-api与RabbitMQ之间建立一个channel,nova-api要发送topic类型的消息,此消息中包含routing_key,nova-api将消息发送给RabbitMQ server中topic类型的exchange,假定routing_key=scheduler,exchange根据routing_key与其中scheduler queue绑定,exchange将消息发送到该队列,topic消息接收者探测到新消息已进入响应队列,立即从队列中接收消息并调用执行系统消息所请求的应用程序。Nova-scheduler在执行完相关的任务之后,topic consumer 会将结果一系统响应消息的方式通过direct exchange反馈给 nova-api 的 direct consumer。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值