云计算运营—04 FusionSphere OpenStack 6.5方案介绍

news2024/10/4 23:19:55

FusionSphere OpenStack 6.5方案介绍

OpenStack 系统架构

OpenStack是什么

OpenStack是目前最流行的开源云操作系统:

  • 资源抽象
    • OpenStack将各类硬件资源,通过虚拟化与软件定义的方式,抽象成资源池
  • 资源分配与负载调度
    • OpenStack根据管理员/用户的需求,将资源池中的资源分配给不同的用户,承载不同应用
  • 应用生命周期管理
    • OpenStack已经可以提供初步的应用部署/撤除、自动规模调整能力

openstack为什么是云操作系统?

openstack是不是操作系统?——》不是

操作系统有哪些功能?

  1. 识别、驱动硬件
  2. 抽象、逻辑硬件
  3. 分配资源应用程序
  4. 应用程序生命周期管理
  5. 人机交互界面,cli web
  6. 故障监控、设置

openstack有类似于操作系统的功能,有是用于管理云的,所以openstack是云操作系统

社区项目分层

在这里插入图片描述

  • nova:计算服务
  • cinder:块存储服务
  • glance:镜像服务
  • swift:对象存储服务
  • manila:文件存储服务
  • neutron:软件定义网络服务
  • ceilometer:计量、监控服务
  • heat:应用编排服务
  • keystone:认证鉴权服务
  • ironic:裸金属服务
  • horizon:图形化人机界面服务(不用)

逻辑关系图

在这里插入图片描述

openstack中的存储:

1、cinder的块存储

2、swift的对象存储

3、manila的文件存储

4、nova的本地存储

节点的本地存储,可能是nova的本地存储,也可能是cinder的块存储(lvm)|

Nova-计算服务

由hypervisor实现计算虚拟化,Nova只负责提供计算服务

OpenStack组件不能实现虚拟化!!!

在这里插入图片描述

rest api(友好)

位于openstack和*人/第三方组件(keystone)*之间,类似于方向盘方便人/第三方组件和OpenStack的交互。
在这里插入图片描述

nova计算服务

  1. 基于rest api
  2. 水平扩展
  3. 与硬件无关(组件运行在os)
  4. 与虚拟化平台无关(通过dirver对接虚拟化平台)

在这里插入图片描述

系统架构

OpenStack内部有三种组件:

1、openstack本身的服务: 比如计算nova、块存储cinder等

2、服务内部子组件: 比如nova内部的apilcompute等

3、openstack所使用的公共组件: DB(数据库)、MQ(消息队列)

三种访问方式:

1、openstack不同服务的通信,比如nova访问keystone,glance访问swift(基于http的rest api访问)

2、服务内部子组件通信,比如nova内部的api访问compute (基于MQ的rpc调用)

3、访问数据库

Nova创建一个虚拟机流程

  1. user向nova发出创建虚拟机的请求。
  2. nova-api接收,处理(1、身份认证鉴权。2、配置校验申请。3、数据库)
  3. nova-api组装请求+scheduler相关的信息 (flavor\az\image等)发送给conductor。
  4. nova-conductor转发给nova-scheduler选择主机
  5. nova-scheduler根据前面scheduler选择主机(1、filter。2.1、权重,默认内存、可选CPU;2.2、随机)
  6. nova-scheduler把主机返回给nova-conductor。
  7. nova-conductor调用该主机对应的nova-compute,要求创建虚拟机
  8. nova-compute对计算资源加锁。
  9. nova-compute请求neutron准备port
  10. nova-compute请求cinder准备disk
  11. 启动虚拟机
    12.nova-compute向glance下载镜像
  12. 生成虚拟机xml
  13. 通过dirver调用libvirt接口拉起虚拟机。
    在这里插入图片描述

控制节点:部署绝大部分openstack组件(及其内部子组件)

计算节点:运行虚拟机

  • nova-api: nova的入口,接受rest消息。调用其他组件完成相应的动作。——》部署在控制节点

    • 1、对外提供rest接口的处理
    • 2、对传入的参数进行合法性校验和约束限制
    • 3、对请求的资源进行配额(quota)的校验和预留
    • 4、资源的创建,更新,删除查询等
    • 5、虚拟机生命周期的入口
    • 6、可水平扩展部署
  • nova-scheduler:选择合适的主机。——》部署在控制节点

    • 选择的过程:
    • 1、filter列表
    • 2.1、权重(默认是内存权重、可选择CPU权重),排序,首位选择
    • 2.2、散列:在候选的一个大小范围内的主机中,随机选择一个主机。
    • 3、内置周期性任务,完成资源刷新,虚拟机状态同步等功能。
  • nova-conductor:1、复杂流程控制2、帮助nova-compute访问数据库。——》部署在控制节点

    • 1、数据库操作。解耦其他组件( nova-compute)数据库访问。
    • 2、Nova复杂流程控制,如创建,冷迁移,热迁移,虚拟机规格调整,虚拟机重建。
    • 3、其他组件的依赖。如nova-compute需要依赖nova-conductor启动成功后才能启动成功。
    • 4、其他组件的心跳定时写入。
    • 5、可水平扩展部署(多活)
  • nova-compute:虚拟机生命周期管理、资源管理。——》部署计算节点。(当控制节点也作为计算节点时,也需要部署黜)

    • 1、虚拟机各生命周期操作的真正执行者(会调用对应的hypervisor的driver) 。
    • 2、底层对接不同虚拟化的平台(kvm , vmware ,xen,Fusioncompute , hyperv等)。
  • nova-novncproxy : novnc访问虚拟机代理。——》部署在控制节点。(不重要)

  • nova- conseleauth: novnc访问虚拟机鉴权。——》部署在控制节点。(不重要)

资源池管理

开源:

  1. region:地理上的区域
  2. 可用分区:具备相同的供电、制冷的主机集合,实际上可理解为一个机房
  3. 主机组:具备相同属性的的主机集合,比如,具备SSD的主机的集合

华为:

  1. region:地理上的区域
  2. 可用分区:具备相同网络、存储环境的主机集合,可实现热迁移、HA。隐藏要求:必须是同种虚拟化。比如KVM,或者XEN
  3. 主机组:具备相同属性的的主机集合。隐藏要求:必须是同种虚拟化。比如KVM,或者XEN

在这里插入图片描述

FusionCloud6.3及以后使用KVM,6.3以前使用VRM (XEN)

主机到底是不是一个服务器呢?

1、KVM、XEN等——》一个nova-compute对应一个主机,对应一个服务器。(如图上面的)

2、vsphere(VM公司的)、VRM(早期华为公司基于XEN开发的)——》一对nova-compute对应一套VRM或者vsphere,后端可能有多个CNA,openstack上的一个"主机"对应的是VRM或者vphere上一个集群。集群内可能包含 0~N 服务器 。(如图下面的)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1ezSSIfX-1672748301373)(D:\代码笔记\HCIE—Cloud Compueing V2.0\云计算运营\image-20230102202924724.png)]

单点or集群

  • nova-compute部署方式、部署位置
  • 对于KVM、XEN,甚至华为6.3私有云。
  • 对于整套openstack来说,nova-compute是多活,scheduler是可以选择到任意nova-compute。但实际上,对于单个计算节点来说,nova-compute是单点的。

在这里插入图片描述

  • 对于vrm\vcenter来说,部署是xxx-nova-compute。一对主备的xxx-nova-compute对应一个集群。随机部署在两个控制节点上。
  • vrm是fc-nova-compute
  • vcenter是vcenter-nova-compute

在这里插入图片描述

keystone-认证鉴权、服务目录认证鉴权

认证鉴权

  • Domain:域,keystone中资源(project、user.group)的持有者
  • Project:租户,其他组件中资源(计算资源、存储资源、网络资源等)的持有者《华为的区别:6.3以前,domain=组织,project=vdc、租户;6.3及以后,domain区域,project=vdc,最多可以有五级VDC》
  • User:用户,云系统的使用者
  • Group:用户组,可以把多个用户作为一个整体进行角色管理
  • Role:角色,基于角色进行访问控制
  • Trust:委托,把自己拥有的角色临时授权给别人
  • Policy:访问控制策略,定义接口访问控制规则
  • Assignment:授权三元组,一个(actor, target,role)三元组叫一个assignment,actor包括user、group,target包括domain、project。每个assignment代表一次赋权操作
  • Token:令牌,用户访问服务的凭证,代表着用户的账户信息,一般需要包含user信息、scope信息(project、domain或者trust) . role信息。分为PKI,UUID,PKIZ,Fernet几种类型。
    • Token是什么:
      用户向keystone提供一组有效的用户信息,keystone向用户返回一个token。
      Token包含这个用户的信息,用户的角色(role)信息,toKen的作用域(scope), token有效期(expiration)。
      使用这个token可以访问其他openstack服务。为什么使用Token :
      使用token访问api服务比使用用户名密码访问更加方便。
      Token具有有效期,在客户端缓存token比缓存用户名密码更安全。

服务目录

  • Region:区域,在keystone里基本代表一个数据中心
  • Service:服务,一组相关功能的集合,比如计算服务、网络服务、镜像服务、存储服务等
  • Endpoint:必须和一个服务关联,代表这个服务的访问地址,一般一个服务需要提供三种类型的访问地址:public. internal、admin
    • public: 公开,可以给外部用户使用。
    • internal:内部,服务与服务相互访问
    • admin: openstack管理员使用

对象模型

在这里插入图片描述

Token

token在openstack中的使用?

  1. 申请,用户使用用户名密码找keystone进行认证,申请
  2. 使用,用户携带token请求api,api剥离找keystone验证
  3. 在同个服务内,不需要再次验证token。如果跨服务,需要再次验证token

token记录用户名、密码、domain 作用域(domain\project)、有效期。

在这里插入图片描述

token类型

1、uuid

每次验证需要访问keystone服务端。

过程:

client携带用户名密码向keystone申请UUID , keystone生成本地保存一份,向client发送一份,client会保存。client向api发送请求时,会在请求头部携带token。api收到后,剥离向keystone进行验证。keystone与本地保存的token比较。正确200,错误401

优点:

  • 在一定程度解决密码不安全的问题。
  • 相比密码的方式,不用每次都输入密码,便利。

缺点:

  • keystone需要在存储中持久保存一份token,存储压力大。
  • api每次请求,均需要到keystone验证,keystone负载压力大。
2、PKI

PKI: Token验证在客户端即可完成。

原理:非对称算法。公钥、私钥。

公钥加密,需要私钥解密(加密传输)。

私钥加密,需要公钥解密(CA证书)。

银行网站证书颁发机构
apiclient(客户端)keystone

pki token类似于CA证书。

在这里插入图片描述

RabbitMQ-消息队列

注意MQ不是openstack的组件

服务内组件之间的消息全部通过MQ来进行转发,包括控制、查询、监控指标等。

跨服务就用http协议了

MQ优点:解耦服务内各子组件之间的专用连接。

部罢方式:多活部罢

cinder-持久化的块存储服务

cinder架构:

1、cinder-api:对外提供rest api入口;找keystone认证鉴权;记录DB;调用后端组件完成相应请求——》控制节点、多活部署
2、cinder-scheduler:筛选主机。——》控制节点、多活部署

filter:权重:已使用存储空间最少胜出;未使用存储空间最多胜出

3、cinder-volume:通过不同的驱动,对接不同的后端存储。——》计算节点、多活部署
4、cinder- backup:备份功能

在这里插入图片描述

Glance-镜像服务管理

华为里面GLance叫这个个名字——manila文件存储服务
manila-api
manila-scheduler
manila-share与cinder-volume类似,对接后端存储。
提供文件共享服务:CIFS、NFS

glance:镜像管理服务

glance-api:rest api接口,keystone认证鉴权,DB操作,调用其他组件,上传下载镜像。

glance-registy:上传镜像时查询数据库,下载镜像时记录数据库。

两个流程:

上传∶请求API,API调用registry,记录存储位置,返回结果,通过api上传镜像到后端存储中

下载:请求API,API调用registry,查询存储位置,返回结果,通过api到后端存储中下载镜像

neutron-网络服务

(软件定义服务)

Management Network

提供Openstack组件间的内部通信。该网络内的IP地址只有数据中心内部可达。

Data Network
提供云内部VM间数据通信。该网络内的IP地址取决于使用的网络插件程序。

External Network
提供VM与外部Internet间的通信。Internet上的任何人都可以访问该网络内的IP地

API Network
为租户提供包括Networking API在内的所有Openstack API。该网络内的IP地址应该被允许Internet上的任何人可达。该网络基本上与External Network一样,我们甚至可以创建一个external-network子网作为该网络。

架构

一、neutron-server(核心,实现绝大部分控制功能)

二、neutron-xxx-agent (代理,通过相应驱动驱动不同的软件、硬件实现相应的网络服务)

ceilometer-计量、监控服务

特别注意,没有计费功能

  • ceilometer-api
  • ceilometer-collect 收集信息,记录DB
  • ceilometer-agent

1、ceilometer-agent-compute
收集VM的信息(主动调用libvirt API)

2、ceilometer-agent-hardware
收集物理服务器的信息(主动调用host os命令)

3、ceilometer-agent-central
收集openstack组件的信息(主动调用其他组件API)

4、ceilometer-agent-notification
收集MQ的信息(被动监听收集MQ的信息)

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

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

相关文章

Ardupilot EKF3核心算法《状态量的协方差矩阵推导》

目录 文章目录 目录摘要1.协方差矩阵推导2.关于 F的计算2.1 计算F的前四维关于四元数的状态方程2.2 计算F 的5-10维关于速度和位置的状态方程3.其他协方差的传播3.1 关于角增量偏差的协方差传播3.2 关于速度增量偏差的协方差传播3.3 关于地理坐标系地磁磁场矢量的协方差传播3.4…

【Vue基本指令】一.什么是Vue;二.Vue开发的方式;三.Vue的基本指令(重点)

目录 一.什么是Vue 1.前端技术的发展(html、CSS、JavaScript) (1)JQuery:是对JavaScript进行了封装,使得操作DOM、事件处理、动画处理、Ajax交互变得非常简洁、方便。是JavaScript的库。 (&a…

《云原生》一文搞懂RocketMQ队列概述

目录 序 概念简述 一、客户端概念 1. Topic-主题 2.ConsumerGroup(消费者组) 概念一览图 二、消息传输模型 三、实践应用 1.配置文件 2.生产者 3.消费者 配置一览图 最后的话 序 接上一篇对rabbitMQ队列进行了梳理 《一文搞懂rabbitMQ消息…

shell技术

退出状态码 Shell 中运行的命令会使用0-255之间的整数值,作为退出状态码,并以此来告知shell该命令执行的状态。 通常情况下,约定0代表命令成功结束,非0代表程序非正常退出。 假如没有指定返回值,那么会用脚本的最后一个命令的执…

华为路由器配置笔记

路由器(Router),是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号,路由器工作在网络层,用来跨网段通信,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和…

巧用数据分析表达式,让数据指标创建更简单

实现数据业务一体化的指标分析 从零售系统进化史get 数据统计的需求变更 零售系统需要的数据统计需求 V1.0 只需要获取当日累计的销售额,于是店老板就用 Excel或者纸质的表格创建了一个表,表中包含销售的日期时间,销售的产品,销…

c语言的变量和指针,怎么理解?

学会应用指针是C语言程序员的分水岭,也是C程序员级别的试金石。 变量可以分为基础变量、数组变量、指针变量,其中数组变量非常特殊,可以进一步分为基础数组变量和指针数组变量,所以暂时不考虑数组变量。假设我们在32位计算机上工…

【云原生】k8s之pod基础(下)

内容预知 1.pod的镜像拉取策略 1.1 镜像拉取说明 1.2 镜像拉取的策略 1.3 镜像拉取策略的设置操作 (1)Never策略的使用 (2)IfNotPresent策略在本地无镜像的情况下使用 (3) IfNotPresent策略在本地有…

客观认识植物乳杆菌 (L. plantarum) 及其健康益处

人体消化系统包含大约几百到几千种不同的细菌种类,其丰度构成因人而异。 其中少数益生菌乳杆菌属,即嗜酸乳杆菌、植物乳杆菌、短乳杆菌、乳酸乳杆菌、干酪乳杆菌、保加利亚乳杆菌、发酵乳杆菌、鼠李糖乳杆菌特异性产生细胞外蛋白、胞外多糖、细菌素和脂磷…

信息安全治理-信息安全状态示例

声明 本文是学习github5.com 网站的报告而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 信息安全治理-信息安全状态示例 组织可以生成一个信息安全状态,并将其作为信息安全的沟通工具披露给利益相关者。 组织宜选择和决定信息安全状态的格…

Curve 分布式存储在 KubeSphere 中的实践

Curve 介绍 Curve 是网易开发的现代存储系统,目前支持文件存储 (CurveFS) 和块存储 (CurveBS)。现在它作为一个沙盒项目托管在 CNCF。 Curve 是一个高性能、轻量级操作、本地云的开源分布式存储系统。Curve 可以应用于 : 1) 主流云本地基础设施平台 OpenStack 和…

【Bigdata】【Java】用IDEA创建一个Maven项目时,一直卡在Generating project in Batch mode步骤

Project Scenario(项目场景): I want to create a Maven project with IDEA to practice writing UDF functions and upload it to hdfs, so I need to initialize the maven project. (本人想用IDEA创建一个Maven项目来练习UDF函…

Netty初探

序: 为什么打算写Netty 相关的博客呢? Netty如今已经是应用非常广泛了, 很多框架底层都能看到他的影子,如Dubbo , Spring Gateway , RocketMQ、Elasticsearch、HBase 等比较出名的框架,在性能,…

使用div+css实现表格布局

DIVCSS是WEB设计标准,它是一种网页的布局方法。与传统中通过表格(table)布局定位的方式不同,它可以实现网页页面内容与表现相分离。提起DIVCSS组合,还要从XHTML说起。XHTML是一种在HTML(标准通用标记语言的…

【MySQL】【systemd】mysqld_pre_systemd 及 mysqld@.service 的 bugs

mysqld_pre_systemd 及 mysqld.service 的 bugs问题原理mysqld_pre_systemd 的 bugsmysqld.service 的 bugs测试案例重现不指定 datadir 和 log-error 的 bugs开启 SELinux ,指定不同于默认值的自定义数据目录和错误日志位置进行测试修正方法方法一:向 m…

【Word】MathType 运行时错误‘53’:文件未找到:MathPage.WLL

问题描述 1. 环境: MathType7.4Microsoft Office 365Windows 11 2. 问题 情景1. Microsoft Word 启动时显示 Please reload Word to load MathType addin properly 情景2. 安装MathType后在 Microsoft Word 中使用复制粘贴时报错 运行时错误‘53’ 情景3. 在 M…

JavaScript 对象-三种创建对象的方式,遍历获取到对象。

JavaScript 对象-三种创建对象的方式,遍历获取到对象。 目录JavaScript 对象-三种创建对象的方式,遍历获取到对象。1. 对象1.1 什么是对象?1.2 为什么需要对象2. 创建对象的三种方式2.1 利用字面量创建对象2.2 利用new Object创建对象2.3 利用…

【数组】leetcode209.有序数组的平方(C/C++/Java/Js)

leetcode209.长度最小的子数组1 题目2 思路-滑动窗口3 代码3.1 C版本3.2 C版本3.3 Java版本3.4 JavaScript版本4 总结1 题目 题源链接 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, …, nu…

系列教程之《高铁上的GO》-第一篇

作者:坚果,OpenHarmony布道师,OpenHarmony校源行开源大使,CSDN博客专家,电子发烧友鸿蒙MVP,51CTO博客专家博主,阿里云博客专家。 本文主要讲解Go是什么,Go如何安装,开发G…

【Docker】(二)使用Dockerfile构建并发布一个SpringBoot服务

1.前言 在上一篇笔记 Docker基本概念与安装 中,我们已经获取到了一个Docker服务,并了解了Docker的基本组成及其各个组件的作用。 我们了解到,使用Docker的其中一个目的,是为了更加简单,方便的部署我们编写的服务&…