OpenStack开源虚拟化平台(一)

目录

    • 一、OpenStack背景介绍
      • (一)OpenStack是什么
      • (二)OpenStack的主要服务
    • 二、计算服务Nova
      • (一)Nova组件介绍
      • (二)Libvirt简介
      • (三)Nova中的RabbitMQ解析


  OpenStack既是一个社区,也是一个项目和一个开源软件,提供了一个部署云的操作平台或工具集。用OpenStack易于构建虚拟计算或存储服务的云,既可以为公有云、私有云,也可以为大云、小云提供可扩展、灵活的云计算。

在这里插入图片描述

一、OpenStack背景介绍

在这里插入图片描述

(一)OpenStack是什么

在这里插入图片描述
  OpenStack是一个管理计算、存储和网络资源的数据中心云计算开放平台,通过一个仪表板,为管理员提供了所有的管理控制,同时通过Web界面为其用户提供资源。

在这里插入图片描述

(二)OpenStack的主要服务

  OpenStack有三个主要的服务成员:计算服务(Nova)、存储服务(Swift)、镜像服务(Glance)。

在这里插入图片描述
1. 计算服务Nova

  Nova是OpenStack云计算架构的控制器,支持OpenStack云内的实例的生命周期所需的所有活动由Nova处理。Nova作为管理平台管理着OpenStack云里的计算资源、网络、授权和扩展需求。但是,Nova不能提供本身的虚拟化功能,相反,它使用Libvint的API来支持虚拟机管理程序交互。Nova通过Web服务接口开放所有功能并兼容亚马逊Web服务的EC2接口。

2. 对象存储服务Swift

  Swift提供的对象存储服务,允许对文件进行存储或者检索(但不通过挂载文件服务器上目录的方式来实现)。对于大部分用户来说,Swift不是必需的,只有存储数量达到一定级别,而且是非结构化数据才有这样的需求。Swift为OpenStack提供了分布式的、最终一致的虚拟对象存储。和亚马逊的Web服务–简单存储服务(S3)类似,通过分布式的存储节点,Swift 有能力存储数士亿计的对象,Swift具有内置冗余、容错管理、存档、流媒体的功能。Swift是高度扩展的。

3. 镜像服务Glance

  它提供了一个虚拟磁盘镜像的目录和存储仓库,可以提供对虚拟机镜像的存储和检索。 这些磁盘镜像广泛应用于Nova组件之中。Glance能进行多个数据中心的镜像管理和租户私有镜像管理。虽然这种服务在技术上是属于可选的,但任何规模的云都可能对该服务有需求。目前Glance的镜像存储,支持本地存储、NFS、Swift、sheepdog和Ceph。OpenStack镜像服务查找和检索虚拟机的镜像系统,它可以被配置为使用以下3个存储后端的任何一个:
(1)OpenStack对象存储到存储镜像。
(2)S3存储直连。
(3)S3存储结合对象存储成为中间级的S3访问。

4. 身份认证服务keystone

  它为OpenStack上的所有服务提供身份验证和授权。它还提供了在特定OpenStack云服务上运行的服务的一个目录。任何系统中,身份认证和授权其实都比较复杂,尤其是Openstack那么庞大的项目,每个组件都需要使用统一认证和授权。

5. 网络管理服务Quantum

  在接口设备之间提供“网络连接即服务”的服务,而这些接口设备主要是由Open Stack的其他服务(如Nova)进行管理的。该服务允许用户创建自己的网络,然后添加网络接口设备。Quantum提供了一个可插拔的体系架构,使其能够支持很多流行的网络供应商和新的网络技术。Quantum后端可以是商业产品或者开源。开源产品支持Openvswitch和Linux bridge。网络设备厂商都在积极参与,让他们的产品支持Quantum,目前思科、锐捷已经实现支持。

6. 存储管理服务Cinder

  Cinder存储管理主要是指虚拟机的存储管理,Swift主要是对象存储管理。目前支持开源和商业化产品sheepdog、Ceph等。
  对于企业来说,使用分布式作为虚拟机的存储,并不能真正节省成本,维护一套分布式存储,成本还是很高的。目前虚拟机的各种高可用、备份的问题,其实都可以把问题交给商业存储厂商来解决。

7. 仪表盘Horizon

  严格意义来说,Horizon不会为OpenStack增加一个功能,更多的是一个演示。对于很多用户来说,了解Open Stack基本都是从Horizon、 dashboard开始。从这个角度来看,它在OpenStack各个项目里显得非常重要。

二、计算服务Nova

  Nova是OpenStack云中的计算组织控制器。Nova处理OpenStack云中实例(instances)生命周期的所有活动。这样使得Nova成为一个负责管理计算资源、网络、认证、所需可扩展性的平台。
  但是,Nova并不具有虚拟化能力,相反它使用Libvirt API来与被支持的Hypervisors交互。Nova通过一个与Amazon Web Services(AWS)EC2 API兼容的Web Services API来对外提供服务。

(一)Nova组件介绍

1. API Server(Nova-Api)

  API Server对外提供一个与云基础设施交互的接口,也是外部可用于管理基础设施的唯一组件。

2. Message Queue(Rabbit MQ Server)

  OpenStack节点之间通过消息队列使用AMQP(Advanced Message Queue Protocol)完成通信。

3. Compute Worker(Nova-Compute)

  Compute Worker管理实例生命周期,通过Message Queue接收实例生命周期管理的请求,并承担操作工作。

4. Network Controller(Nova-Network)

  Network Controller处理主机的网络配置,包括IP地址分配、为项目配置VLAN、实现安全组、配置计算节点网络。

5. Volume Workers(Nova-Volume)

  Volume Workers用来管理基于LVM(Logical Volume Manager)的实例卷。Volume Workers有卷的相关功能,例如新建卷、删除卷、为实例附加卷、为实例分离卷。

6. Scheduler(Nova-Scheduler)

  调度器Scheduler把Nova-API调用映射为OpenStack组件。调度器作为一个Nova-Schedule守护进程运行,通过恰当的调度算法从可用资源池获得一个计算服务。当前Nova-Schedule实现了一些基本的调度算法:随机算法、可用域算法和简单算法。

(二)Libvirt简介

  Nova通过独立的软件管理模块实现XenServer、Hyper-V和VMWare ESX的调用与管理。同时对于其他的Hypervisor,如KVM、LXC、QEMU、UML和Xen则通过Libvirt标准接口统一实现。为了更好地理解在Nova环境下Libvirt如何管理底层的Hypervisor,先要基本了解Libvirt的体系架构与实现方法。

1. 什么是Libvirt

  虚拟云实现的三部曲:虚拟化技术实现→虚拟机管理→集群资源管理(云管理)。各种不同的虚拟化技术都提供了基本的管理工具,比如启动、停用、配置、连接控制台等。这样在构建云管理的时候就存在两个问题。
(1)如果采用混合虚拟技术,上层就需要对不同的虚拟化技术调用不同管理工具,很是麻烦。
(2)可能有新的虚拟化技术更加符合现在的应用场景,需要迁移过去。这样管理平台就需要大幅改动。
  Libvirt的主要目标是为各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式。

2. Libvirt主要支持的功能

(1)虚拟机管理:包括不同的领域生命周期操作,支持多种设备类型的热插拔操作。
(2)远程机器支持:只要机器上运行了Libvirt Daemon,所有的Libvirt功能就都可以访问和使用。
(3)存储管理:任何运行了Libvirt Daemon的主机都可以用来管理不同类型的存储,创建不同格式的文件镜像。
(4)网络接口管理:任何运行了Libvirt Daemon的主机都可以用来管理物理和逻辑的网络接口。
(5)虚拟NAT和基于路由的网络:任何运行了Libvirt Daemon的主机都可以用来管理和创建虚拟网络。

3. Libvirt体系结构

没有使用Libvirt的虚拟机管理方式:

在这里插入图片描述
Libvirt API与相关驱动程序的层次结构:

在这里插入图片描述
Libvirt的控制方式有以下两种。
(1)管理位于同一节点上的应用程序和域。管理应用程序通过Libvirt工作,以控制本地域。

在这里插入图片描述
(2)管理位于不同节点上的应用程序和域。该管理应用程序通过一种通用协议从本地Llibvirt连接到远程Libvirt。

在这里插入图片描述

(三)Nova中的RabbitMQ解析

在这里插入图片描述
1. RabbitMQ

在这里插入图片描述
  RabbitMQ是一种处理消息验证、消息转换和消息路由的架构模式,它协调应用程序之间的信息通信,并使得应用程序或者软件模块之间的相互意识最小化,有效实现解耦。
  RabbitMQ适合部署在一个拓扑灵活易扩展的规模化系统环境中,有效保证不同模块、不同节点、不同进程之间消息通信的时效性;RabbitMQ特有的集群HA安全保障能力可以实现信息枢纽中心的系统级备份,同时单节点具备消息恢复能力。

在这里插入图片描述
2. AMQP

  • AMQP是应用层协议的一个开放标准,为面向消息的中间件而设计
  • RabbitMQ是AMQP协议的一个开源实现
  • OpenStack Nova各软件模块通过AMQP协议实现信息通信
  • AMQP协议的设计理念可归纳为基于状态的面向无连接通信系统模式
  • 对于AMQP来讲,消息队列的状态信息决定通信系统的转发路径
  • IP数据包根据路由表实现报文的本地存储与逐级转发

在这里插入图片描述
  “消息”是AMQP实现通信的基本因素,交换器和队列是AMQP的核心要素。
  交换器(Exchange):交换器由消费者应用程序创建,并且可与其他应用程序实现共享服务。接收消息之后通过路由表将消息准确且安全地转发至相应的消息队列。每个交换器通过唯一的Exchange ID进行识别。交换器主要分为三种:
(1)持久交换器:持久交换器并不会因为系统重启或者应用程序终止而消除
(2)临时交换器:驻留在内存中,随着系统的关闭而消失
(3)自动删除交换器:随着宿主应用程序的中止而自动消亡
  队列(Queue):主要用于实现存储与转发交换器发送来的消息,队列同时也具备灵活的生命周期属性配置,可实现队列的持久保存、临时驻留与自动删除。
  消息、队列和交换器是构成AMQP的三个关键组件,任何一个组件的失效都会导致信息通信的中断,因此鉴于三个关键组件的重要性,系统在创建三个组件的同时会打上“Durable”标签,表明在系统重启之后立即恢复业务功能。

  构成AMQP的三个关键要素的工作方式如图所示。

在这里插入图片描述
  三种不同类型的交换器:广播式交换器(Fanout Exchange)、直接式交换器(Direct Exchange)和主题式交换器(Topic Exchange)。

3. Nova中的RabbitMQ应用

在这里插入图片描述
  目前Nova中的各个模块通过RabbitMQ服务器以RPC(远程过程调用)的方式实现通信,而且各模块之间形成松耦合关联关系,在扩展性、安全性以及性能方面均体现优势。以下是三个比较重要的概念。
(1)交换器
  接受消息并且将消息转发给队列。应用程序在它的权限范围之内可以创建、删除、使用和共享交换器实例。交换器可以是持久的、临时的或者自动删除的。
(2)队列
  “消息队列”,它是一个具名缓冲区,它代表一组消费者应用程序保存消息。这些应用程序在它们的权限范围内可以创建、使用、共享消息队列。
(3)绑定
  可以理解为交换器和消息队列之间的一种关系,绑定之后交换器会知道应该把消息发给哪个队列,绑定的关键字称为binding_key。

下面介绍一下RabbitMQ的三种类型的交换器。

1)广播式交换器类型(fanout)

  该类交换器不分析所接收到消息中的Routing Key,默认将消息转发到所有与该交换器绑定的队列中去。广播式交换器转发效率最高,但是安全性较低,消费者应用程序可获取本不属于自己的消息。
  广播交换器是最简单的一种类型,就像我们从字面上理解到的一样,它把所有接收到的消息广播到所有它所知道的队列中去,不论消息的关键字是什么,消息都会被路由到和该交换器绑定的队列中去。

在这里插入图片描述
  在程序中申明一个广播式交换器的代码如下:

channel.exchange_declare(exchange='fanout',type='fanout')

2)直接式交换器类型(direct)

  直接式交换器的转发效率较高,安全性较好,但是缺乏灵活性,系统配置量较大。相对广播交换器来说,直接交换器可以给我们带来更多的灵活性。
  直接交换器的路由算法很简单:一个消息的routing_key完全匹配一个队列的binding_key,就将这个消息路由到该队列。绑定的关键字将队列和交换器绑定到一起。当消息的routing_key和多个绑定关键字匹配时消息可能会被发送到多个队列中。

在这里插入图片描述
3)主题式交换器(Topic Exchange)

在这里插入图片描述
  Nova基于RabbitMQ实现两种RPC调用:RPC.CALL基于请求与响应方式,RPC.CAST只是提供单向请求。
  Nova的各个模块在逻辑功能上可以划分为两种:Invoker模块主要功能是向消息队列中发送系统请求消息,如Nova-API和Nova-Scheduler;Worker模块从消息队列中获取Invoker模块发送的系统请求消息以及向Invoker模块回复系统响应消息,如Nova-Compute、Nova-Volume和Nova-Network。

在这里插入图片描述

交换器和队列之间的通信关系

在这里插入图片描述

RPC.CALL的调用流程

  (1)Invoker端生成一个Topic消息生产者和一个Direct消息消费者。其中,Topic消息生产者发送系统请求消息到Topic交换器,Direct消息消费者等待响应消息。
  (2)Topic交换器根据消息的Routing Key转发消息,Topic消费者从相应的消息队列中接收消息,并传递给负责执行相关任务的Worker。
  (3)Worker根据请求消息执行完任务之后,分配一个Direct消息生产者,Direct消息生产者将响应消息发送到Direct交换器。
  (4)Direct交换器根据响应消息的Routing Key转发至相应的消息队列,Direct消费者接收并把它传递给Invoker。

  RPC.CAST的远程调用流程与RPC.CALL类似,只是缺少了系统消息响应流程。

在这里插入图片描述

RPC.CAST的远程调用流程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/38775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL-数据操作类型的角度理解 S锁 X锁

文章目录 1、S锁和S锁互相兼容2、S锁和X锁互斥3、X锁和X锁也互斥4、X锁和S锁也互斥5、select * from account for update;6、select * from account for update nowait;7、select * from account for update skip locked; 1、S锁和S锁互相兼容 2、S锁和X锁互斥 3、X锁和X锁也互…

20240702 每日AI必读资讯

🔍GPTPdf:使用类似GPT-4o的多模态LLM分析PDF文件 - 使用类似 GPT-4o 多模态模型解析 PDF 文件,转换为 Markdown 格式。 - 代码简洁高效,仅293行。 - 解析结果几乎完美包括排版、数学公式、表格、图片、图表等内容。 &#x1…

【记录】IDEA2023的激活与安装

前言: 记录IDEA2023的激活与安装 第一步:官网下载安装包: 下载地址:https://www.jetbrains.com/idea/download/other.html 这个最好选择2023版本,用着很nice。 安装步骤就不详解了,无脑下一步就可以了…

VLAN原理与配置

AUTHOR :闫小雨 DATE:2024-04-28 目录 VLAN的三种端口类型 VLAN原理 什么是VLAN 为什么使用VLAN VLAN的基本原理 VLAN标签 VLAN标签各字段含义如下: VLAN的划分方式 VLAN的划分包括如下5种方法: VLAN的接口链路类型 创建V…

便签 Pro(Mac 智能便签工具)专业版怎么样,值得购买吗?

使用 Mac 的小伙伴平时都是怎么记录工作生活中的碎片信息?用聊天软件,还是系统备忘录呢? 实际体验下来,其实都难以称得上好用。 赶紧来了解一下 Mac 多彩思维速记工具便签 Pro!拥有智能边框大小、iCloud 同步、历史记…

矩阵置零解题

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2: 输入&…

VUE3解决跨域问题

本文基于vue3 vite element-plus pnpm 报错:**** has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource. 原因:前端不能直接访问其他IP,需要用vite.config.ts &#xff0…

API-本地存储

学习目标: 掌握本地存储 学习内容: 本地存储介绍本地存储分类存储复杂数据类型 本地存储介绍: 以前我们页面写的数据一刷新页面就没有了,是不是? 随着互联网的快速发展,基于网页的应用越来越普遍,同时也…

算法基础入门 - 2.栈、队列、链表

文章目录 算法基础入门第二章 栈、队列、链表2.1 队列2.2 栈2.3 纸牌游戏2.4 链表如何建立链表?1.我们需要一个头指针(head)指向链表的初始。链表还没建立时头指针head为空2.建立第一个结点3.设置刚创建的这个结点的数据域(左半)和指针域(右半)4.设置头指针,头指针可方便…

问题-小技巧-专业版Win11怎么启动电脑的休眠模式?

专业版Win11怎么启动电脑的休眠模式? powercfg -a powercfg -hibernate on 启用管理员面板依次输入上述命令就可以了。

宠物医院管理系统-计算机毕业设计源码07221

目 录 1 绪论 1.1 选题背景和意义 1.2国内外研究现状 1.3论文结构与章节安排 2 宠物医院管理系统系统分析 2.1 可行性分析 2.1.1技术可行性分析 2.1.2 操作可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分…

AI智能在Type-C领域的应用

随着科技的飞速发展,Type-C接口凭借其卓越的性能和广泛的应用场景,已成为现代电子设备中不可或缺的一部分。而AI智能技术的兴起,为Type-C领域带来了革命性的变革,推动了其功能的进一步完善和应用领域的拓展。本文将探讨AI智能在Ty…

中文翻译老挝语只推荐一个神器《老挝语翻译通》App,老挝语口语发音练习,支持老挝文OCR识别提取文字!

出国旅游去探索东南亚的神秘国家:老挝,不会老挝语怎么办?不用怕,下载《老挝语翻译通》App帮助你把中文翻译成老挝语。 功能亮点: 实时翻译:实时把中文翻译成老挝语,老挝语单词或者句子均可均可…

typescript学习回顾(三)

今天继续来分享ts的相关概念,枚举,ts模块化,接口和类型兼容性 ts的扩展类型:类型别名,枚举,接口和类 枚举 基础概念 枚举通常用于约束某个变量的取值范围。当然字面量和联合类型配合使用,也可…

Linux 高级编程——线程控制

线程控制:互斥与同步 概念: 互斥 》在多线程中对临界资源的排他性访问。 互斥机制 》互斥锁 》保证临界资源的 访问控制。 pthread_mutex_t mutex; 互斥锁类型 互斥锁变量 内核对象 框架: 定义互斥锁 》初始化锁 》加…

前端——在本地搭建Vue单页应用

目录 1、安装最新node.js 2、打开命令行窗口 3、进入要保存项目的目录下 4、安装 Vue CLI 5、创建新项目,选择功能 5.1 新建项目 5.2 Please pick a preset 5.3 Check the features needed for your project 5.4 Choose a version of Vue.js 5.5 Use hist…

优化数据库字段使用位运算-php语言示例

背景:一个会员有三个状态,A、B、C,其中一个人可以为 A、B、C、AB;之前数据表结构加了三个字段is_a、is_b、is_c; 本人实在不想这样粗糙的实现需求,遂决定用位运算优化。 上代码: 位运算可以用来处理状态值…

探索SOLIDWORKS 2024设计增强功能

随着技术的不断进步和市场的日益竞争,工程设计和制造行业对于快捷、准确和创新的工具需求日益增长。SOLIDWORKS作为3D CAD设计软件,一直致力于为用户提供更强大、更便捷的设计工具。SOLIDWORKS 2024的发布,再次证明了其在设计增强功能方面的持…

使用 Amazon Bedrock Converse API 简化大语言模型交互

本文将介绍如何使用 Amazon Bedrock 最新推出的 Converse API,来简化与各种大型语言模型的交互。该 API 提供了一致的接口,可以无缝调用各种大型模型,从而消除了需要自己编写复杂辅助功能函数的重复性工作。文中示例将展示它相比于以前针对每…

批量文件名修改软件:一键解决同一编码多型号文件分类与命名难题,高效管理文件

在数字化时代,图片文件已经成为我们工作中不可或缺的一部分。然而,当面对成百上千个同一编码下不同型号的图片文件时,如何快速、准确地进行分类和命名,成为了许多职场人士头疼的问题。现在,我们为您带来了一款神奇的批…