1、什么是openstack

openstack是一套iaas解决方案
OpenStack是由美国国家宇航局(NASA)和RackSpace合作开发的旨在为公有云和私有云提供软件的开源项目,其目的在于提供可靠的云部署方案及良好的可扩展性。简单的说OpenStack就是云操作系统,或者说是云管理平台,自身并不提供云服务,只是提供部署和管理平台。

2、什么是云计算

基于互联网的相关服务的增加,使用和交付模式
-这种模式提供可用的,编辑的,按需的网络访问,进行可配置的计算资源共享池
-这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互
-通常涉及互联网来提供动态衣扩展且经常是虚拟化资源

3、三层网络


(1)infrastructure as server(IaaS):基础设施即服务,物理机的管理,虚拟机的管理,存储资源的管理。
—提供给消费者的服务是对所有计算机基础设施的利用,包括处理CPU,用户能够部署和运行任意软件,包括操作系统和应用程序.
—iaas 通常分为三种用法:公有云,私有云,混合云、
(2)platform as a service(PaaS):平台及服务,虚拟机搭建的开发平台,比如配置好的Apache、MySql或者PHP环境,
—以服务器平台或开发环境作为服务进行提供就成为paas
—运营商所需提供的服务,不仅仅是单纯的基础平台,还针对该平台的技术支持服务,甚至针对该平台而进行的应用系统开发,优化等服务
—简单地说,paas平台是指定云环境中的应用基础设施服务,也可以说是中间件即服务
(3) software-as a service(SaaS):软件即服务,比如购物网站、博客网站、微博网站等。
—是一种通过internet 提供软件的模式,厂商将应用软件统一部署在自己的服务器上
—客户可以根据自己的实际需求,通过互联网向厂商订购所需的应用软件服务.
—用户不用在购买软件,而是向提供商租用基于web的软件.来管理企业经营活动,不用对软件进行维护,提供商会全权管理和维护软件,同时也提供软件的离线操作和本地数据存储.

4、什么是kvm

1)kvm的来源

KVM—基于内核的虚拟机(Kernel-Based Virtual Machine),将Linux内核变成Hypervisor的一种虚拟化技术,属于硬件级虚拟化类型的全虚拟化的解决方案。是Linux的内核特性,KVM需要两个条件:硬件支持全虚拟化,操作系统是Linux。

2)KVM的架构

如图2-1所示。

KVM作为Hypervisor运行在宿主机内核(Host OS Kernel),支持对CPU、内存、I/O的模拟,对虚拟机的监控,并为Qemu提供实体支撑。
Qemu作为进程运行在宿主机的用户态,它基于KVM及内核的特性,为Guest OS模拟出CPU、内存、I/O等硬件,支撑Guest OS在进程中运行。
虚拟化管理服务有多种,大部分都基于libvirt实现,libvirt 库是一种实现 Linux 虚拟化功能的 Linux API,它支持各种虚拟机监控程序。

3)qemu、kvm、qemu-kvm、libvert之间的关系

(1)qemu
Qemu是一个独立的虚拟化解决方案,通过intel-VT 或AMD SVM实现全虚拟化,安装qemu的系统,可以直接模拟出另一个完全不同的系统环境,虚拟机的创建通过qemu-image既可完成。QEMU本身可以不依赖于KVM,但是如果有KVM的存在并且硬件(处理器)支持比如Intel VT功能,那么QEMU在对处理器虚拟化这一块可以利用KVM提供的功能来提升性能。
(2)kvm
KVM是集成到Linux内核的Hypervisor是X86架构且硬件支持虚拟化技术(IntelVT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。准确来说,KVM是Linux kernel的一个模块。可以用命令modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去做事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm开发者选择了已经成型的开源虚拟化软件QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两大部分(qemu和kvm)三个文件(KVM模块、QEMU工具以及二者的合集)。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU的关系。
KVM内核模块本身只能提供CPU和内存的虚拟化,所以它必须结合QEMU才能构成一个完整的虚拟化技术,这就是下面要说的qemu-kvm。
(3)kvm-qemu
Qemu将KVM整合进来,通过ioctl调用/dev/kvm接口,将有关CPU指令的部分交由内核模块来做。kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备。qemu模拟IO设备(网卡,磁盘等),kvm加上qemu之后就能实现真正意义上服务器虚拟化。因为用到了上面两个东西,所以称之为qemu-kvm。
Qemu模拟其他的硬件,如Network, Disk,同样会影响这些设备的性能,于是又产生了pass through半虚拟化设备virtio_blk, virtio_net,提高设备性能。

(4)libvert
a)概念
虚拟云实现的三部曲:虚拟化技术实现–>虚拟机管理–>集群资源管理(云管理)。各种不同的虚拟化技术都提供了基本的管理工具。比如,启动,停用,配置,连接控制台等。这样在构建云管理的时候就存在两个问题:
((1)) 如果采用混合虚拟技术,上层就需要对不同的虚拟化技术调用不同管理工具,很是麻烦。
((2)) 虚拟化技术发展很迅速,系统虚拟化和容器虚拟化均在发展和演化中。可能有新的虚拟化技术更加符合现在的应用场景,需要迁移过去。这样管理平台就需要大幅改动。
为了适应变化,我们惯用的手段是分层,使之相互透明,在虚拟机和云管理中设置一个抽象管理层。libvirt就是扮演的这个角色。libvirt提供各种API,供上层来管理不同的虚拟机。
Libvirt是管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。它包括一个API库,一个守护程序(libvirtd)和一个命令行工具(virsh);libvirt本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的API。
libvirt的主要目标是为各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式。
b)功能
虚拟机管理:包括不同的领域生命周期操作,比如:启动、停止、暂停、保存、恢复和迁移。支持多种设备类型的热插拔操作,包括:磁盘、网卡、内存和CPU。
远程机器支持:只要机器上运行了libvirt daemon,包括远程机器,所有的libvirt功能就都可以访问和使用。支持多种网络远程传输,使用最简单的SSH,不需要额外配置工作。
存储管理:任何运行了libvirt daemon的主机都可以用来管理不同类型的存储:创建不同格式的文件镜像(qcow2、vmdk、raw等)、挂接NFS共享、列出现有的LVM卷组、创建新的LVM卷组和逻辑卷、对未处理过的磁盘设备分区、挂接iSCSI共享,等等等等。因为libvirt可以远程工作,所有这些都可以通过远程主机使用。
网络接口管理:任何运行了libvirt daemon的主机都可以用来管理物理和逻辑的网络接口。
虚拟NAT和基于路由的网络:任何运行了libvirt daemon的主机都可以用来管理和创建虚拟网络。
c) 体系架构
没有使用libvirt的虚拟机管理方式如图所示:

为支持各种虚拟机监控程序的可扩展性,libvirt实施一种基于驱动程序的架构,该架构允许一种通用的API以通用方式为大量潜在的虚拟机监控程序提供服务。下图展示了libvirt API与相关驱动程序的层次结构。这里也需要注意,libvirtd提供从远程应用程序访问本地域的方式。

libvirt的控制方式有两种:
((1))管理应用程序和域位于同一节点上。管理应用程序通过libvirt工作,以控制本地域。

(((2))管理应用程序和域位于不同节点上。该模式使用一种运行于远程节点上、名为libvirtd的特殊守护进程。当在新节点上安装libvirt时该程序会自动启动,且可自动确定本地虚拟机监控程序并为其安装驱动程序。该管理应用程序通过一种通用协议从本地libvirt连接到远程libvirtd。

5)openstack, kvm, qemu-kvm及libvirt之间的关系

KVM是最底层的hypervisor,它是用来模拟CPU的运行,它缺少了对network和周边I/O的支持,所以我们是没法直接用它的。QEMU-KVM就是一个完整的模拟器,它是构建基于KVM上面的,它提供了完整的网络和I/O支持。Openstack不会直接控制qemu-kvm,它会用一个叫libvirt的库去间接控制qemu-kvm。libvirt提供了跨VM平台的功能,它可以控制除了QEMU之外的模拟器,包括vmware, virtualbox, xen等等。所以为了openstack的跨VM性,所以openstack只会用libvirt而不直接用qemu-kvm。libvirt还提供了一些高级的功能,例如pool/vol管理。

6)openstack的架构


A、服务
Dashboard–Horizon

—用于管理openstack各种服务的,基于web的管理接口
—通过图形界面实现创建用户,管理网络,启动实例等操作
Networking–Neutron

1)、一种软件定的网络服务,提供网络连接服务,比如OpenStack计算。为用户提供API定义网络和使用,基于插件的架构,其支持众多的网络提供商和技术。
—用于创建网络,子网,路由器,管理浮动ip地址
—可以实现虚拟交换机,虚拟路由器
—管理OpenStack环境中所有虚拟网络基础设施(VNI),物理网络基础设施(PNI)的接入层。
neutron架构:

(1)位于最上层的Neutron Server充当一个门派中的“掌门人”角色(RESTful Server),负责接受来自外部门派(项目)的API请求,比如Nova API创建网络的请求。
(2)位于中间层的Neutron plugin充当一个门派中的“信使”角色,负责传达最高层指令给下面的人。
(3)位于下层的Neutron Agent充当一个门派中“干活”角色,负责执行一些具体的任务和操作。
2)、Neutron分别提供了二层(L2)vSwitch交换和三层(L3)Router路由抽象的功能,对应于物理网络环境中的交换机和路由器实现。具体实现了如下功能:
(1)Router:为租户提供路由、NAT等服务。
(2)Network:对应于一个真实物理网络中的二层局域网(VLAN),从租户的的角度而言,是租户私有的。
(3)Subnet:为网络中的三层概念,指定一段IPV4或IPV6地址并描述其相关的配置信息。它附加在一个二层Network上,指明属于这个network的虚拟机可使用的IP地址范围。
B、存储
Object Storage—Swift
—通过一个 RESTful,基于HTTP的应用程序接口存储和任意检索的非结构化数据对象。
—它拥有高容错机制,基于数据复制和可扩展架构。
—Swift的目的是使用普通硬件来构建冗余的、可扩展的分布式对象存储集群,存储容量可达PB级。
—Swift并不是文件系统或者实时的数据存储系统,它是对象存储,用于永久类型的静态数据的长期存储,这些数据可以检索、调整,必要时进行更新。最适合存储的数据类型的例子是虚拟机镜像、图片存储、邮件存储和存档备份。
—Swift无需采用RAID(磁盘冗余阵列),也没有中心单元或主控结点。Swift通过在软件层面引入一致性哈希技术和数据冗余性,牺牲一定程度的数据一致性来达到高可用性(High Availability,简称HA)和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。

Block Storage—Cinder
为运行实例而提供的持久性块存储。它的可插拔驱动架构的功能有助于创建和管理块存储设备。
1)、理解 Block Storage,操作系统获得存储空间的方式一般有两种:
(1)通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区、格式化、创建文件系统;或者直接使用裸硬盘存储数据(数据库)
(2)通过 NFS、CIFS 等 协议,mount 远程的文件系统
第一种裸硬盘的方式叫做 Block Storage(块存储),每个裸硬盘通常也称作 Volume(卷)。
第二种叫做文件系统存储。NAS 和 NFS 服务器,以及各种分布式文件系统提供的都是这种存储。
2)、Block Storage Servicet 提供对 volume 从创建到删除整个生命周期的管理。从 instance 的角度看,挂载的每一个 Volume 都是一块硬盘。OpenStack 提供 Block Storage Service 的是 Cinder,其具体功能是:
(1)提供 REST API 使用户能够查询和管理 volume、volume snapshot 以及 volume type。
(2)提供 scheduler 调度 volume 创建请求,合理优化存储资源的分配。
(3)通过 driver 架构支持多种 back-end(后端)存储方式,包括 LVM,NFS,Ceph 和其他诸如 EMC、IBM 等商业存储产品和方案。
C、共享服务
Identity service–Keystone
—用于组件之间的统一认证,提供认证和授权的集中身份管理服务
—提供了集中的目录服务
—支持多种身份认证模式,如密码认证,令牌认证,以及AWS(亚马逊web服务)登录
—为用户和其他服务提供SSO认证服务
Image service–Glance
—存储和检索虚拟机磁盘镜像,OpenStack计算会在实例部署时使用此服务。
—运行用户为直接存储拷贝服务器镜像
—这些镜像可以用于新建虚拟机的模板
Telemetry–Ceilometer
为OpenStack云的计费、基准、扩展性以及统计等目的提供监测和计量。
D、高层次服务

Orchestration–Heat

Orchestration服务支持多样化的综合的云应用,通过调用OpenStack-native REST API和CloudFormation-compatible Query API,支持:term:HOT <Heat Orchestration Template (HOT)>格式模板或者AWS CloudFormation格式模板
Compute–Nova
a、在OpenStack环境中计算实例的生命周期管理。
b、按需响应包括生成、调度、回收虚拟机等操作。
c、在节点上用于虚拟机的服务
d、Nova是一个分布式的服务
e、Nova被设计成在标准硬件上能够进行水平扩展
Nova 处于 Openstak 架构的中心,其他组件都为 Nova 提供支持:
f、Glance 为 VM 提供 image
g、Cinder 和 Swift 分别为 VM 提供块存储和对象存储
h、Neutron 为 VM 提供网络连接
j、nova compute通过libvirt管理kvm,计算节点是真正运行虚拟机的地方

openstack学习笔记之一:基础知识相关推荐

  1. php基础教学笔记,php学习笔记:基础知识

    php学习笔记:基础知识 2.每行结尾不允许有多余的空格 3.确保文件的命名和调用大小写一致,是由于类Unix系统上面,对大小写是敏感的 4.方法名只允许由字母组成,下划线是不允许的,首字母要小写,其 ...

  2. 【学习笔记--FMCW基础知识】

    学习笔记--FMCW基础知识 前言 mmWave测距原理 mmWave区分多个物体 mmWave的距离分辨率(Range Solution) mmWave的最大测量距离 前言 由于工作原因需要了解TI ...

  3. HTML5学习笔记 —— JavaScript基础知识

    HTML5学习笔记 -- JavaScript基础知识 标签: html5javascriptweb前端 2017-05-11 21:51 883人阅读 评论(0) 收藏 举报 分类: JavaScr ...

  4. SAS学习笔记1——基础知识(库、PDV、变量选择、观测值排序、创建新变量

    SAS学习笔记1--基础知识 1.逻辑库.临时库.永久库 2.数据步 2.1数据步语法 2.2 数据步的编译和执行过程 2.3变量的选择 2.3.1 keep和drop语句 2.4变量的重命名rena ...

  5. JS学习笔记——入门基础知识总结

    JS入门基础知识总结1 前言 基础背景知识 一.产生历史: 二.特点: 三.应用方向: 四.Javascript组成: JavaScript书写使用方式 一.行内式(了解即可,项目中不使用,日常练习尽 ...

  6. 《UNIX 环境高级编程》学习笔记——UNIX 基础知识

    UNIX环境高级编程--UNIX 基础知识 引言 UNIX 体系结构 登录 文件和目录 输入和输出 程序和进程 出错处理 用户标识 信号 时间值 系统调用和库函数 引言 所有操作系统都为它们所允许的程 ...

  7. 单片机学习笔记——微机基础知识

    微机基础知识 微处理器,微机和单片机概念 微处理器的组成 一.运算器 主要寄存器 主要寄存器(IR),指令译码器(ID) 程序计数器(PC) 地址寄存器(AR) 二.控制器 存储器和输入输出接口 一. ...

  8. CAN总线学习笔记 | CAN基础知识介绍

    一.CAN协议 1.1 CAN协议简介 CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为 ...

  9. WebGL学习笔记(基础知识篇)

    WEBGL基础知识介绍 1.场景(scene) 场景如其名,即显示3D空间内物体的容器,就好比一个箱子是一个3D场景. 2.坐标系: webgl使用笛卡尔坐标系(宽度.高度和深度),我们也可以指定使用 ...

  10. RocketMQ学习笔记:基础知识和安装启动

    这是本人学习的总结,主要学习资料如下 马士兵教育 rocketMq官方文档 目录 1.架构 2.基本概念 3.安装和启动 3.1.命令行启动 3.1.1.启动Server 3.1.2.启动Broker ...

最新文章

  1. linux进程池动态维护,可直接商用的跨平台c,c++动态线程池,任务池stpool库
  2. 爬虫基础分享Scrapy框架流程图与安装
  3. 为取消大小周而欢呼?字节员工可不那么想...
  4. tableau必知必会之学做漂亮易用的哑铃图
  5. 『协议』XML-RPC 协议规格说明
  6. 第一批 90 后还有半个月就 30 岁了!那些 30 岁前就成博导的人都怎样了...
  7. django 1.8 官方文档翻译: 13-1-1 Django 中的用户认证
  8. Hexo 入门指南(七) - 评论 分享
  9. 07_Redis事务
  10. JAVA程序设计第十版第七章_java程序设计第七章答案
  11. 缓存穿透缓存雪崩,缓存击穿,django的6种缓存数据
  12. 解决PHP不打印任何东西浏览器输出字符串
  13. python简单的爬虫实例
  14. PID解释与离散化算法公式
  15. 英语句子划分表示符号使用规则
  16. 数据分析——常见数据指标汇总
  17. 中国数字校园建设市场全景调研与投资发展战略分析报告2022-2028年版
  18. 2019 Multi-University Training Contest 3 题解
  19. 计算机显示应用程序错误窗口,电脑开机后弹出netsh.exe应用程序错误提示的解决方法...
  20. matlab中的函数简化,怎么简化solve函数的求解结果

热门文章

  1. python 通达信k线_[python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上...
  2. 计算机乐谱绅士,绅士钢琴简谱-数字双手-薛之谦
  3. 人手必备Dapp,轻松玩转未来地图生态
  4. 【考研数据】二.2021年BJTU计算机学院考研录取数据分析
  5. 海曼烟感设计部分原理图请大神分析下电路
  6. 前端相关知识(CSS)(1)(美化页面效果)
  7. 2022年高薪测试必备核心技术
  8. 稳定性/放射性同位素的化学合成
  9. c语言程序学生成绩系统论文,c语言程序设计-学生成绩管理系统论文.doc
  10. OGame的建筑说明