【私有云底层】理解OpenStack核心组件

news2024/11/24 9:12:38

文章目录

  • 👹 关于作者
  • 一、Keystone 身份认证服务
    • Keystone 架构
    • 工作流程
  • 二、Glance 镜像服务
    • Glance 架构
    • 磁盘与容器
    • Glance 工作流程
  • 三、Placement 放置服务
    • Placement 工作流程
  • 四、Nova 计算服务
    • Nova 架构
    • Nova 工作流程
  • 五、Neutron 网络服务
    • Neutron 架构
    • Neutron 支持的网络类型
    • Neutron 工作流程
  • 六、Dashboard 仪表盘
  • 七、Cinder 块存储服务
    • Cinder 架构
    • Cinder 工作流程
  • ✊ 最后

在这里插入图片描述

👹 关于作者


大家好,我是秋意零。

😈 CSDN作者主页

  • 😎 博客主页

👿 简介

  • 👻 普通本科生在读
  • 在校期间参与众多计算机相关比赛,如:🌟 “省赛”、“国赛”,斩获多项奖项荣誉证书
  • 🔥 各个平台,秋意零 账号创作者
  • 🔥 云社区 创建者
点赞、收藏+关注下次不迷路!

欢迎加入云社区


一、Keystone 身份认证服务

Keystone是身份认证服务,OpenStack核心组件,主要负责用户认证和权限管理。

专业术语: Domain(区域)、Project(项目)、Service(服务)、Endpoint(服务端点)、User(用户)、Role(角色)、Credentials(身份凭证)、Authentication(鉴权)、Token(令牌)

如何理解这些专业术语?

  • 首先我们来看个例子:假如,我在某个地区,比如,重庆、北京(Domain)有一个网吧,这个网吧就是一个项目(Project)。网吧里面对外提供上网、陪玩等服务(Service)供用户使用,这时还需要网吧的详细地址,重庆渝中区xx号,这就是一个服务端点(Endpoint)
  • 有了这些就可以对外提供服务了,但是还不够,上网不是所有用户(User)都可以,比如,要满18岁,这时候我们就需要查看用户(User)身份证等身份凭证(Credentials)鉴权(Authentication),来辨别他是什么角色(Role),不同角色(Role)有不同权限,如,如果是老板就有所有权限,鉴权(Authentication)后可以给用户发放一个令牌(Token),这样用户不用每次过来都进行繁琐的认证、鉴权操作,下次使用服务只需要初始令牌(Token)即可。

把Keystone的 9 个概念纳入到生活当中,是不是一下子全理解并且记住了
在这里插入图片描述

Keystone 架构

在这里插入图片描述
Keystone的服务(Service)是由Token、Catalog、Identity、Policy四大后端模块所支持的。

  • Token backend: 用来生成和管理Token令牌。
  • Catalog backend: 用来存储和管理服务(Service)、服务端点(Endpoint)。
  • Identity backend: 用来管理项目(Project)、用户(User)、角色(Role)和提供验证服务。
  • Policy backend: 用来管理所有访问的权限。

工作流程

在这里插入图片描述

二、Glance 镜像服务

Glance是镜像服务(Image service)的项目代号,是OpenStack的核心组件,主要作用是给虚拟机提供操作系统基础服务,Glance组件可以对Image镜像进行管理,比如,创建、删除、上传、下载、快照的注册、检索、权限管理等操作。

它主要负责对两种镜像数据的管理:

  • 镜像数据: 即镜像文件本身,它存储于后端存储里,所谓的后端存储就是第三方的存储系统,如默认的文件系统、Swift、S3、Cinder等。
  • 镜像元数据(metadata): 存在数据库中的关于镜像的相关信息,如文件名、大小、状态等字符串信息,用于快速检索。

为什么使用 Image 呢?

  • 想象一个场景我们平常安装系统时,首先需要一个 U 盘作为系统的启动盘,将准备在 U 盘里的操作系统,安装在计算机中。这个过程效率低、时间长,安装完成后需要配置一些基础环境,OpenStack 使用这种方式是不可取的,因为如果我需要 1000 或者 10000 台虚拟机,这个时间成本是巨大的,因此使用 Image 。
  • 有了 Image,我们只需安装一个操作系统,及基本配置,然后将它作为一个 Image,这个 Image 就好比一个操作系统模板,直接拿来使用就好了,可以满足同时批量生成大量虚拟机的需求,节约了大量的时间成本。

Glance 架构

在这里插入图片描述

  • Glance-API:应用接口,对外、提供服务接口。
    – 如果服务请求是对元数据的操作,则与数据库进行交互,实现检索、存储、获取镜像的元数据。
    – 如果是对镜像(Image)数据的操作将会通过存储接口(Glance Store)调用后端存储(Store BackEnd)的相应驱动,完成具体镜像文件的上传、删除、查询等操作。
  • Glance Store:存储接口,提供镜像文件存储和查询的操作
    – 包含有对镜像文件的各种操作方法,但是具体的镜像文件操作需要调用后端存储(Store BackEnd)中的具体文件系统(Swift、S3、Cinder等)来处理。
  • Store BackEnd:后端存储,不属于 Glance 组件,所以 Glance 自己并不存储镜像。
    – Image 镜像文件都存放在这里,Glance 支持多种后端存储

在这里插入图片描述

磁盘与容器

磁盘格式(Disk format)

  • Glance 中的磁盘格式指的是虚拟机镜像的磁盘格式,可以理解为镜像文件的后缀名。在虚拟机的创建时,需要指定镜像的磁盘格式。
    在这里插入图片描述

容器格式(Container format)

  • 容器格式我们可以理解为把镜像元数据、用户自定义数据和镜像数据同时装载于一个“容器”中重新打包的格式。在虚拟镜像文件创建的时候,需要管理员指定镜像的容器格式(Container format)。
    在这里插入图片描述

Glance 工作流程

在这里插入图片描述

三、Placement 放置服务

Placement 放置服务,主要做一个监控资源的操作。

创建虚拟机是需要硬件资源的,比如,CPU、内存、磁盘等,所以我们需要知道自己物理机上是否还有资源创建对应虚拟机所请求的资源,而 Placement 是监控物理机上资源的情况,当 Nova 创建虚拟机时就需要通过这个 Placement 组件了解资源情况,从而判断是否可以创建虚拟机。

Placement 工作流程

在这里插入图片描述

四、Nova 计算服务

Nova 是计算服务,主要负责管理虚拟机实例的创建、删除、启动、停止等操作。是 OpenStack 架构中心、核心组件。

  • Nova 是依赖于其他组件为它提供服务的,比如,Glance 为它提供 Image 镜像服务(操作系统),Plancement 提供资源监控服务,Neutron 为虚拟机提供网络服务等等。
  • Nova 本身是没有虚拟化功能的,它通过调用 Libvirt-API(虚拟化应用接口)来创建和管理云主机,Libvirt-API 是管理虚拟化平台的应用接口,提供多种虚拟化技术的接口服务,比如,KVM、Xen、VMware ESX,QEMU等。

Nova 架构

在这里插入图片描述

  • Nova-api
    对外、提供服务接口,接收和响应外部请求
  • Nova-scheduler
    虚拟机调度,和 Placement 配合,负责在那个物理机上创建虚拟机
  • Nova-compute
    Nova 核心服务,负责虚拟机的创建,需要调用底层的虚拟化技术(KVM、Xen、Qemu等)
  • Nova-conductor
    负责与数据库交互,虚拟机相关信息,都保存在数据库中
  • RabbitMQ
    消息队列服务,负责组件服务之间有序通信传递消息,防止消息挤堆、混乱。

Nova 工作流程

在这里插入图片描述

五、Neutron 网络服务

Neutron 是网络服务,核心组件,主要负责虚拟网络设备(虚拟交换机等)的创建和管理网络基础设施,比如,交换机、路由器、网络、子网等,为虚拟机提过网络服务。

Neutron 架构

在这里插入图片描述

  • Neutron-server
    Neutron与外部交流的接口(API),接收与响应外部请求
  • Neutron-plugin
    Neutron 插件对应网络功能,主要作用,在数据库中创建对应网络资源信息,发送请求给 Neutron-agent 实现具体网络功能
  • Neutron-agent
    Neutron-agent 是 Neutron-plugin 的代理,实现 Neutron-plugin 的具体功能,Neutron-agent 接收到 Neutron-plugin 请求后会在 Network Provider (一块真实的网卡)上实现各种网络功能如创建网络、子网、网桥等操作。
  • Network Provider
    网络提供者(一块真实的网卡),是实际执行功能的虚拟或物理网络设备,例如“Linux Bridge”、“Open vSwitch”或者其他支持Neutron的物理交换机。

Neutron 支持的网络类型

Neutron支持多种网络拓扑结构,可以组建多种不同功能的网络

  • FLAT网络模式

在这里插入图片描述

  • Flat 网络模式虚拟机通过一个网桥来与宿主机通信,虚拟机和宿主机在同一网段,所以组网简单。
  • 其缺点是虚拟机和宿主机都在同一个网络内,没有进行网络隔离,容易产生广播风暴。而且每个虚拟机都要用到宝贵的外网IP,这就注定了Flat模式的网络中能容纳的虚拟机(云主机)数量不会多。
  • GRE网络模式

在这里插入图片描述

  • GRE 采用路由转发的方式实现虚拟机和宿主机通信,虚拟机和宿主机不在同网段。
  • 解决了 Flat 模式中虚拟机使用外网IP的缺点。
  • VLAN网络模式
    在这里插入图片描述
  • VLAN 虚拟的局域网,只有在同一个 VLAN 中的虚拟机才能通信,不同 VLAN 可以使用 Trunk 通信
  • VLAN 可以有效解决 Flat 网络模式中网络风暴和占用宿主机 IP 的问题

Neutron 工作流程

在这里插入图片描述

六、Dashboard 仪表盘

仪表板 Dashboard 在 OpenStack 中的项目名称是 Horizon,Dashboard 不是 OpenStack 的核心组件,它是 Web 服务,用户通过 Web 页面操作完成对 OpenStack 的管理,对普通用户比较友好,省去了部分学习成本。

七、Cinder 块存储服务

Cinder 块存储服务,主要作用是为虚拟机提供块设备(硬盘)可以称为 Volume(卷),Cinder 对 Volume 管理,为虚拟机创建和附加块设备,如,创建卷、删除卷和附加卷等。

Cinder 架构

在这里插入图片描述

  • Cinder-api
    Cinder-api 是与外部交互的接口,它接收外部的请求
  • Cinder-volume
    Cinder-volume 提供块存储实际操作和管理的组件。它通过驱动支持不同的存储类型,包括如支持本地存储的“LVM”和实现网络存储的“NFS”等。
  • Cinder-scheduler
    Scheduler 组件通过调度算法,现在在那个存储节点中创建卷
  • Cinder-backup
    Cinder-backup 为存储卷(Volumes)提供了备份服务。

Cinder 工作流程

在这里插入图片描述

✊ 最后


👏 我是秋意零,欢迎大家一键三连、加入云社区

👋 我们下期再见(⊙o⊙)!!!


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

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

相关文章

jstat命令查看jvm内存情况及GC内存变化

命令格式 jstat [Options] pid [interval] [count] 参数说明: Options,选项,一般使用 -gc、-gccapacity查看gc情况 pid,VM的进程号,即当前运行的java进程号 interval,间隔时间(按该时间频率自动刷新当前内存…

Shell脚本之条件测试、if、case条件测试语句

目录 一、条件测试1.1test命令1.2文件测试1.2.1文件测试常见选项 1.3整数值比较1.4字符串比较1.5逻辑测试 二、if语句2.1单分支结构2.2双分支结构2.3多分支结构 三、case语句 一、条件测试 1.1test命令 测试特定的表达式是否成立,当条件成立,测试语句的…

Android Studio 2021 导出aar到Unity

1,新建一个新工程,创建一个Empty Activity 2.下面的都用默认即可 3.修改工程一些配置 修改setting.gradle maven { url https://maven.aliyun.com/repository/google } maven { url https://maven.aliyun.com/repository/public } maven { url https://maven.aliyu…

【matplotlib】可视化解决方案——如何正确设置轴长度和范围

概述 在 matplotlib 绘图时,往往需要对坐标轴进行设置,默认情况下,每一个绘图的最后都会调用 plt.autoscale() 方法,这个方法的底层是 gca().autoscale(enableenable, axisaxis, tighttight),本质是调用当前 Axes 对象…

【HDU - 6558】The Moon(概率dp)

ps:初学概率dp,所以 就算是板子也 是看了非常久,好在最后还是学会了qwq… 文章目录 题意思路代码总结 题意 思路 概率dp通常为从能够得到的状态去进行转移,在q为100%的时候,我们能够知道赢的概率为 p,那么赢的期望就是…

java的学习,刷题

先来点题目看看 1031. 两个非重叠子数组的最大和 难度中等249收藏分享切换为英文接收动态反馈 给你一个整数数组 nums 和两个整数 firstLen 和 secondLen,请你找出并返回两个非重叠 子数组 中元素的最大和,长度分别为 firstLen 和 secondLen 。 长度…

【c语言】详解const常量修饰符 | 指针变量的不同const修饰

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…

网络:DPDK复习相关知识点

1.转发模型&#xff1a; 1.1 运行至完成&#xff1a;run to complate &#xff08;RTC&#xff09; 参考笔记&#xff1a;DPDK介绍-CSDN博客 选择哪些核可以被DPDK使用&#xff0c;最后把处理对应收发队列的线程绑定到对应的核上&#xff0c;每个报文的生命周期都只能在其中一个…

电脑桌面日历怎么设置?超简单方法分享!

案例&#xff1a;电脑桌面日历怎么设置&#xff1f; 【最近因为工作的原因到了国外&#xff0c;但是电脑桌面的日历和时间一直都是错误的&#xff0c;急求一个设置电脑桌面日历的方法&#xff01;感谢大家&#xff01;】 电脑桌面日历是一种方便实用的工具&#xff0c;它可以…

liunx笔记

快捷键 #移动到行首 ctrla #移动到行尾 ctrle #删除光标之前的字符 ctrlu #删除光标之后的字符 ctrlk #清屏 ctrll正则表达式 正则中普通常用的元字符 元字符功能.匹配除了换行符以外的任意单个字符*前导字符出现0次或连续多次.*任意长度字符^行首(以…开头)&#xff0c;如…

浅谈浏览器调试

浅谈浏览器调试 1. 假设你在控制台打印了一个变量 &#xff0c; 想在浏览器追踪从哪里来要到那里去&#xff1a;2. 开启source maps3. watch 可以监听当前变量, 也可以在scope中看当前作用域的变量&#xff1a;4. call Stack 可以查看当前调用链, 找到对应代码进行debugger5. 你…

TCP / IP 五层网络模型

目录 一、协议的概念 1.1 网络通信为什么需要使用协议 二、网络模型 2.1 OSI 七层模型 三、TCP / IP 五层网络模型 四、协议分层的背景下&#xff0c;数据如何通过网络传输&#xff1f; 4.1 再谈协议 4.2 封装 / 分用 vs 序列化 / 反序列化 4.3 什么是端口号 4.4 什么…

创新实践|导致创新团队敏捷实践失败的12种原因

揭示敏捷实践中常犯的12大错误&#xff0c;了解如何避免这些敏捷失败 陷阱&#xff0c;找出问题根源并采取有效改进措施&#xff0c;提高项目成功率。立即连线 Runwise.co 社区敏捷专家获得专业建议&#xff0c;或 Runwise.co 在线学习敏捷方法实战课程&#xff0c;提升您和团队…

layui入门使用文档(包含几个重要的组件)

一、引言 &#xff1a;注意部分配置是用到了和jsp交互使用在HTML时需要修改 1.1 介绍 https://www.layuiweb.com/ 在官网首页&#xff0c;可以很方便的下载LayUI LayUI 是一款经典模块化前端 UI 框架&#xff0c;我们只需要定义简单的HTML、CSS、JS即可实现很复杂的前端效果。 …

Vue3之setup参数介绍

setup(props, context) {... }一、参数 使用setup函数时&#xff0c;它将接受两个参数&#xff1a; propscontext 让我们更深入地研究如何使用每个参数 二、Props setup函数中的第一个参数是props。正如在一个标准组件中所期望的那样&#xff0c;setup函数中的props是响应…

Elasticsearch:Explicit mapping - 显式映射

显式映射相比较动态映射&#xff08;Dynamic mapping&#xff09;是需要我们在索引创建时就定义字段及其类型。这个和我们传统的 RDMS 数据库一样&#xff0c;在我们写入数据到数据库之前&#xff0c;我们需要工整地定义好每个字段及其类型和长度。Elasticsearch 既可以使用显式…

【C++】二叉搜索树(概念、实现、应用)

前言&#xff1a; 此前我们在C语言实现数据结构的时候学习过二叉树&#xff0c;但是那个时候我们没有深入学习二叉搜索树。本章重提二叉树并详解二叉搜索树有下面两个原因&#xff1a; 1、为我们下一章学习set和map做准备&#xff1b;2、详解我们进阶一点的二叉树的面试OJ题&a…

【C++学习】日积月累——二叉搜索树详解

一、二叉搜索树 1.1 二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值&#xff1b;若它的右子树不为空&#xff0c;则右子树上…

程序员常用的代码比较工具,你更喜欢哪款?

目录 &#x1f4a1; Linux 命令行的对比工具 一. diff 二. vimdiff命令 &#x1f4a1; GUI 比对工具 三. WinMerge 四. Diffuse 五. Code Compare 六. Beyond Compare 七. UltraCompare 八. Altova DiffDog 九. Kompare 十. Meld 十一. XXdiff 十二. KDiff3 十…

拓扑排序模板及例题

概念 一个有向无环图必然存在一个拓扑序列与之对应。 流程&#xff1a; 先将所有入度为0的节点入队将队列中的节点出队&#xff0c;出队序列就是对应拓扑序。对于弹出的节点x&#xff0c;遍历x所有出度y&#xff0c;对y进行入读减一操作检查入度减一之后的节点y&#xff0c;…