【云计算】OpenStack(一)Nova

452 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情 这也是第16篇文章

Nova作用

重点: 计算、存储、网络。

处理OpenStack中instance生命周期的所有活动,是一个负责管理计算资源、网络、认证、可拓展性的平台。

注意点

Nova不具有虚拟化能力。它使用Libvirt API与Hypervisors交互。

也就是说,Nova并不关心虚拟化实现的细节,你只需要为它提供一个可用的接口。同时,它可以把很多云服务集成起来。

组件

Nova-api(API Server)

Rabbit MQ Server(Message Queue)

消息交换,使用AMQP(Advanced Message Queue Protocol)完成通信 协议核心:

  • 大规模消息的交换
  • 基于内容的路由

Nova-Compute(Computer Worker)

通过MQ接收实例生命周期管理的请求,并进行操作。

Nova-Network(Network Controller)

处理主机的网络配置。如ip地址分配、VLAN、安全组、计算节点网络等

Nova-Volume

管理基于LVM(logical Volume Manager)的实例卷。操作如新建、删除、增加、分离。

Nova-schedular

使用调度算法

Libvirt

概览

  • 对于开源的半虚拟化的实现,如KVM LXC QEMU UML Xen,通过Libvirt来接入。
  • 对于XenServer Hyper-V VMWare ESX,Nova会通过独立的软件管理模块去实现。

也就是说Libvirt可为各种虚拟化工具提供一套方便 可靠的编程接口。

虚拟云实现步骤

  1. 虚拟化技术实现
  2. 虚拟机管理 在 域(domain)中进行,从不同的角度考虑,分安全域和可用域
  3. 集群资源管理

Libvirt主要支持功能

  • 虚拟机管理 包括不同领域的生命周期操作,支持多种设备类型的热插拔操作。
  • 远程机器支持和存储管理 只要是运行了Daemon,所有Libvirt功能都可以使用。

可以管理不同类型的存储,创建不同格式的文件镜像。

  • 网络接口管理
  • 虚拟NAT和基于路由的网络

Libvirt体系结构

  • 在Libvirt之上,在虚拟机之下;
  • 典型的实现是嵌入到Libvirt中。

RabbitMQ

注意点

  • 它是一种处理消息验证、转换、路由的架构模式,目的是实现解耦。
  • RabbitMQ并不是Nova必备,它也可以被别的选项替代,只是目前来说它效果最好。 它也可以用于其他服务,不止Nova。

交换的数据类型

  • 系统内进行消息传递和信息共享 任务之间、模块之间、接口之间
  • 用户程序

AMQP

目标

实现端到端的通信

实现通信的元素(元/对象)是什么/数据传输的单位是什么?

消息

实现通信的实体

  • 交换器(Exchange)
  • 队列
  • 消息

任何一个组件的失效都会导致消息中断,所以这三个组件创建之初就被打上“Durable”的标签,业务中断后也会立即恢复。

关于交换器

  • 消费者创建,并可与其他应用程序共享服务。
  • 接收消息之后通过路由表将消息准确且安全地转发至相应消息队列
  • 每个交换器通过唯一的Exchange ID 进行识别

按存活时间:类型分三种:

  • 持久
  • 临时
  • 自动删除

按功能,类型分三种:

  • 广播式(fanout,数字逻辑中的“扇出”) 不分析接收到的Routing_key
  • 直接式(直连,不一定是一对一) 路由算法:一个routing_key完全匹配一个binding_key。

!!注意:绑定的关键字将队列和交换器绑定到一起。所以可能会出现一次绑定,多个转发。

  • 主题式

进是一对多,出是一对一