引言

  • OpenStack 云平台服务的提供主要是依靠 Nova、Glance、Cinder 和 Neutron 四个核心模块完成的, 四个辅助模块 Horizen 、Ceilometer 、Keystone、Swift 提供的访问、监控、权限和对象存储功能。

  • 服务进程之间的通讯通过消息队列MQ实现

一、控制台 Horizon

  • 管理、控制OpenStack服务的web控制面板

1.1 Horizon 的特点及管理任务:

  • 实例管理:创建、删除实例,查看终端日志,远程连接实例,管理卷等;

  • 访问与安全管理:创建安全组,管理密匙对,设置浮动 IP 地址等;

  • 偏好设定:对虚拟硬件模板可以进行不同程度的偏好设定;

  • 镜像管理:导入、编辑或删除镜像;

  • 用户管理:创建用户、管理用户、设置配额、查看服务目录等;

  • 卷管理: 管理卷和快照;

  • 对象存储处理:创建、删除容器和对象。

二、身份认证模块 Keystone

  • 负责管理身份验证、服务规则和服务令牌功能的模块

2.1 主要涉及的概念

1.用户(user)

在 OpenStack 中,用户是使用 OpenStack 云服务的人、系统或服务。用户可以登录或使用指定的 token 访问云中的资源,并可以被指派到指定的项目或角色。认证服务通过对用户身份的确认,来判断一个请求是否被允许。用户通过认证信息如密码、API Keys 等进行验证。

2.项目(project)

项目是各个服务中的一些可以访问的资源集合,用来分组或隔离资源或身份对象。不同服务中,项目所涉及的资源不同。一个项目中可以有多个用户,一个用户可以属于一个或多个项目。

3.角色(role)

角色是一组用户可以访问的资源权限集合,这些资源包含虚拟机、镜像、存储资源等。

4.服务(service)

用户使用云中的资源是通过访问服务的方式实现,OpenStack 中包含许多服务,如提供计算服务的 Nova、提供镜像服务的 Glance 以及提供对象存储服务的 Swift。一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个用户尝试访问其项目内的 service 时,该用户必须知道这个服务是否存在以及如何访问这个服务。

5.令牌(token)

令牌是一串数字字符串,用于访问 OpenStack 服务的 API 以及资源。在 keystone 中主要是引入令牌机制来保护用户对资源的访问。

6.端点(endpoint)

所谓端点,是指用于访问某个服务的网络地址或 URL。如果需要访问一个服务,则必须知道该服务的端点。

2.2 创建云主机的流程图

三、镜像模块 Glance

  • 提供发现、注册和下载的镜像服务,虚拟机镜像的集中式仓库

  • 通过虚拟机镜像创建虚拟机

  • 在生产环境中这个模块本身不存储大量的数据,需要挂载后台存储 swift 来存放实际的镜像数据

3.1 主要涉及的组件

1.glance-api

glance-api 用于接收镜像 API 的调用,诸如镜像发现、恢复以及存储等。作为一个后台进程,glance-api 对外提供 REST API 接口,响应用户发起的镜像查询、获取和存储的调用。

2.glance-registry

glance-registry 用于存储、处理和恢复镜像的元数据,元数据包括镜像的大小和类型等属性,registry 是一个内部服务接口,不建议暴露给普通用户。

3.database

database 用于存放镜像的元数据,可以根据需要选择数据库,如 MySQL、SQLite 等。

4.storage repository for image files

一般情况下,glance 并不需要存储任何镜像,而是将镜像存储在后端仓库中。Glance 支持多种 repository。主要包括对象存储 Swift、块存储 Cinder、VMware 的 ESX/ESXi 或者 vCenter、亚马逊的 S3、HTTP 可用服务器、Ceph 等。

3.2 镜像格式

1.RAW

RAW 是一种没有格式或裸格式的磁盘文件类型,RAW 对数据不做任何修饰和处理, 直接保存最原始的状态,所以在性能方面非常出色。由于RAW 格式保存原始数据,因此更容易和其他镜像格式进行转换。

2.QCOW2

主要特性是磁盘文件大小可以动态按需增长,并且不会占用所有的实际磁盘空间大小。与 RAW 相比,使用这种格式可以节省磁盘容量。

3.VHD

VHD 是微软公司产品使用的磁盘格式。Virtual PC(微软早期虚拟化产品)和 Hyper-V 使用的就是 VHD 格式。VirtualBox 也提供了对 VHD 的支持。如需在 OpenStack 上使用Hyper-V 类型的虚拟化,就应上传 VHD 格式的镜像文件。

4.VMDK

VMDK 是 VMware 公司产品使用的磁盘格式。目前也是一个开放的通用格式,除了VMware 自家的产品外,QEMU 和 VirtualBox 也提供了对 VMDK 格式的支持。

5.VDI

VDI 是 Oracle 公司的 VirtualBox 虚拟软件所使用的格式。

6.ISO

ISO 是指一种存档数据文件在光盘上的格式。

7.AKI、ARI、AMI

Amazon 公司的 AWS 所使用的镜像格式。

四、计算模块 Nova

  • 负责虚拟机实例的生命周期管理、网络管理、存储卷管理、用户管理以及其他的相关云平台管理功能

  • 模块主要由 Python 实现

  • Nova 中的各个组件是以数据库和队列(MQ)为中心进行通信

4.1 主要组件

1.Nova-api 服务

接收和响应来自最终用户的计算 API 请求,对外提供一个与云基础设施交互的接口,也是外部可用于管理基础设施的唯一组件。所有对 Nova 的请求都首先由 nova-api 处理。nova-api 向外界暴露若干 HTTP REST API 接口。

2.Nova-api-metadata 服务

接收来自虚拟机发送的元数据请求。 Nova-api-metadata 服务一般在安装 Nova-Network 服务的多主机模式下使用。

3.Nova-Compute 服务

运行在计算节点上,主要负责管理节点上的实例。OpenStack 对实例的操作都是交给 nova-compute 来完成的。它是一个持续工作的守护进程,通过 Hypervisor 的 API 来创建和销毁虚拟机实例。

4.Nova-placement-api 服务

用于追踪记录资源提供者目录和资源使用情况,这些资源包括计算、存储以及 IP 地址池等。

5.Nova-Conductor 模块

作用于 Nova-Compute 服 务与 数 据 库之 间 , 避免 了由Nova-Compute 服务对云数据库的直接访问。它可以横向扩展。通过 Nova-conductor 实现对数据库的连接操作,可以实现更高的系统安全性以及更好的系统伸缩性。

6.Nova-Scheduler 服务

Nova-Scheduler 接收到一个来自队列的运行虚拟机实例请求, 然后决定在哪台计算服务器主机来运行该虚拟机。通过恰当的调度算法从可用资源池获得一个计算服务。

五、网络模块 Neutron

  • 实现实例与实例之间以及实例与外部网络之间的通信

  • 提供二层(L2)vSwitch交换和三层(L3)Router路由抽象功能

5.1 实现功能

  • Router:为租户提供路由、NAT等服务

  • Network:对应于一个真实物理网络中的二层局域网(VLAN)

  • Subnet:指定一段IPV4或IPV6地址并描述其相关的配置信息

5.2 虚拟网络的形式

  • 对二层物理网络的抽象与管理

1.虚拟交换机/网桥

OpenStack 网络中,对于二层交换机有两种的抽象方式,一种是通过 Linux bridge 实现, 另外一种是通过 OpenvSwitch 实现。两种方式都可以实现二层网路的抽象。

(1)Linux bridge Linux bridge 由 Linux 内核实现, 是工作在二层的虚拟网络设备, 功能类似于物理的交换机

(2)Open vSwitch 类似于 Linux bridge,Open vSwitch 也可以实现对二层网络的抽象,对虚拟网络提供分布式交换机功能。它支持各种组网类型, 功能全面, 支持基本的 vlan 功能, 也支持 QOS 以及 NetFlow、sFlow 标准的管理接口和协议。

2.虚拟路由器

虚拟路由器是对网络设备的一种抽象,实现了租户间多网络构建以及内部网络和外部网络之间的通信问题。其实现原理和真实路由器一致,根据路由表转发数据包,同时还支持 NAT 地址转换以及浮动 IP 地址设置

3.namespace

通过 namespace 进行隔离,每个 namespace 都有自己的独立网络栈,包括路由表、防火墙规则、网络接口等。同时,Neutron 为每个 namespace 提供 DHCP 和路由服务。所以各个租户之间的网络地址允许重叠,因为它们在不同的 namespace 中进行抽象

4.DHCP

Neutron 提供 DHCP 服务的组件是 DHCPagent,默认通过 dnsmasq 实现 DHCP 功能。dnsmasq 是一个提供 DHCP 与 DNS 服务的开源软件。在 OpenStack 网络中, DHCP 服 务 同 样 被 隔 离 在 namespace 中 , 并 通 过 Linux Bridge 连 接 DHCP namespace 中的接口。

5.浮动 IP 地址

通常情况下, 在搭建 OpenStack 网络时, 会在虚拟路由器启用 SNAT 功能。这将给 OpenStack 网络提高安全性和便利性,具体表现如下。

  • 启动 NAT 功能,OpenStack 内部网络被保护起来;

  • 虚拟机访问外部网络通过地址转换的方式,更容易让外部路由设备寻路, 即不需要增加额外的回包路由条目。

所以,浮动 IP 地址是用来解决外部网络访问虚拟机的问题。如果虚拟机不需要外部网络访问,也可以不绑定浮动 IP 地址。

5.3 组网模型

1.Local 网络

Local 网络模型特点:

  • 不具备 vlan 特性,不能对二层网络进行隔离。

  • 同一个 local 网络的虚拟机实例会连接到相同的虚拟交换机上, instance 之间可以通信。

  • 虚拟交换机没有绑定任何物理网卡, 无法与宿主机之外的网络通信。

2.Flat 网络

Flat 组网模型不支持 vlan , 属于扁平化的网络模型。Linux bridge 直接绑定物理网卡,并连接虚拟机。每个 Flat 网络都会独占一个物理网卡,该物理网卡不能配置 IP 地址, 所有连接到此网络的虚拟机共享一个私有 IP 网段

3.vlan 网络

OpenStack 通过 vlan 网络解决了多租户之间的网络隔离问题。如果需要其他 vlan 网络, 可以创建新的物理网卡子接口,并绑定新网络。

  • vlan 网络存在的缺点:

    • vlan 的数量限制:4096 个 vlan 数量不能满足大规模云计算数据中心的需求;

    • 物理网络基础设施的限制:基于 IP 子网的区域划分限制了需要二层网络连通性的应用负载的部署;

    • TOR 交换机 MAC 表耗尽: 虚拟化以及节点间过多的流量导致更多的 MAC表项。

4.VXLAN 网络

VXLAN 网络使用的是隧道技术,是目前 OpenStack 广泛使用的网络技术。相比于 vlan 模型有以下改进。

  • 租户数量从 4K 增加到 16M;

  • 租户内部通信可以跨越任意 IP 网络,支持虚拟机任意迁移;

  • 一般来说,每个租户逻辑上都有一个网关实例,IP 地址可以在租户间进行复用;

  • 能够结合 SDN 技术对流量进行优化。

六、块存储 Cinder

  • 提供对Volume从创建到删除整个生命周期的管理Cinder功能

6.1 cinder的功能

  • 提供RESTAPI

  • 调度Volume 创建请求,合理优化存储资源的分配

  • 支持多种back-end(后端)存储方式

6.2 Cinder组件

1.Cinder-Api

用来接受 API 请求,并将其路由到 Cinder-Volume 执行

2.Cinder-Backup守护进程

Cinder-Backup 服务提供任何种类备份卷到一个备份存储提供者。就像 Cinder-Volume服务,它与多种存储提供者在驱动架构下进行交互。

3.Cinder-Volume

Cinder-Volume 用来与块存储服务和 Cinder-Scheduler 进程进行直接交互。也可以与这些进程通过一个消息队列进行交互。Cinder-Volume 服务响应到块存储服务的读写请求, 可以在多种存储驱动架构下交互。当用户请求一个存储资源时,由 Cinder-API 负责接受请求,Cinder-Scheduler 负责调度资源,而真正执行存储任务的是 Cinder-Volume。这样的工作机制使得存储架构非常容易扩展。当存储资源不足时,可以增加存储节点(运行Cinder-Volume )。 当客户的请求量太大调度不过来时, 可以增加调度( 运行Cinder-Scheduler)。

4.Message Queue

消息队列作用是在块存储的进程之间路由信息。Cinder 各个子服务通过消息队列实现进程间通信和相互协作

5.Cinder-Scheduler

Cinder-Scheduler 守护进程会选择最优存储节点来创建卷

6.Database

Cinder 有一些数据需要存放到数据库中,一般使用 MySQL。数据库是安装在控制节点上的,比如在我们的实验环境中,可以访问名称为“Cinder”的数据库。

6.3 volume卷创建的步骤

  1. 用户向cinder-API发送创建卷请求

  2. API对请求做一些必要处理后,向消息队列发送消息

  3. cinder-Scheduler从消息队列Message Queue获取到消息,执行调度算法,选出节点A

  4. cinder-Scheduler向消息队列Messaging发送消息(让存储节点A创建Volume)

  5. 存储节点A的cinder-Volume从消息队列中获取到消息,通过卷提供者的驱动创建卷

七、对象存储 Swift

  • 使用普通硬件来构建冗余的、可扩展的分布式对象存储集群,存储容量可达PB级

  • Swift属于对象存储,用于永久类型的静态数据的长期存储(如虚拟机镜像、图片存储、邮件存储和存档备份)

7.1 Swift特点

  • 极高的数据持久性

  • 无单点故障

  • 完全对称的系统架构

  • 简单、可依赖

  • 无限的可扩展性

7.2 主要组件

1.代理服务(Proxy Server)

Swift 通过 Proxy Server 向外提供基于 HTTP 的 REST 服务接口,会根据环的信息来查找服务地址并转发用户请求至相应的账户、容器或者对象,进行CRUD(增删改查)等操作。由于采用无状态的 REST 请求协议,可以进行横向扩展来均衡负载。

2.认证服务(Authentication Server)

验证访问用户的身份信息,并获得一个对象访问令牌(Token),在一定的时间内会一直有效;验证访问令牌的有效性并缓存下来直至过期。

3.缓存服务(Cache Server)

缓存的内容包括对象服务令牌,账户和容器的存在信息,但不会缓存对象本身的数据;缓存服务可采用 Memcached 集群,Swift 会使用一致性哈希算法来分配缓存地址。

4.账户服务(Account Server)

提供账户元数据和统计信息,并维护所含容器列表的服务,每个账户的信息被存储在一个 SQLite 数据库中。

5.容器服务(Container Server)

提供容器元数据和统计信息(比如对象的总数,容器的使用情况等),并维护所含对象列表的服务。容器服务并不知道对象存储在哪,只知道指定容器里存的哪些对象。

6.对象服务(Object Server)

提供对象元数据和内容服务,可以用来存储、检索和删除本地设备上的对象。在文件系统中,对象以二进制文件的形式存储,它的元数据存储在文件系统的扩展属性(xattr)中, 建议采用默认支持扩展属性(xattr)的 XFS 文件系统。每个对象使用对象名称的哈希值和操作时间戳组成的路径来存储。最后一次写操作总可以成功,并确保最新一次的对象版本将会被处理。删除也被视为文件的一个版本(一个以".ts"结尾的 0 字节文件,ts 表示墓碑)。

7.复制服务(Replicator)

会检测本地分区副本和远程副本是否一致,具体是通过对比哈希文件和高级水印来完成,发现不一致时会采用推式(Push)更新远程副本:对于对象的复制、更新使用 rsync 同步文件到对等节点。帐号和容器的复制通过 HTTP 或 rsync 来推送整个数据库文件上丢失的记录;另外一个任务是确保被标记删除的对象从文件系统中移除:当有一项(对象、容器、或 者帐号)被删除,则一个墓碑文件被设置作为该项的最新版本。复制器将会检测到该墓碑文件并确保将它从整个系统中移除。

8.更新服务(Updater)

当对象由于高负载或者系统故障等原因而无法立即更新时,任务将会被序列化到在本地文件系统中进行排队,以便服务恢复后进行异步更新

9.审计服务(Auditor)

在本地服务器上会反复地爬取来检查对象、容器和账户的完整性,如果发现比特级的错误,文件将被隔离,并复制其他的副本以覆盖本地损坏的副本;其他类型的错误(比如在任何一个容器服务器中都找不到所需的对象列表)会被记录到日志中。

10.账户清理服务(Account Reaper)

移除被标记为删除的账户,删除其所包含的所有容器和对象。删除账号的过程是相当直接的。

7.3 Swift 存储结构

在 Storage Node 上运行着 Linux 系统并使用了 XFS 文件系统,逻辑上使用一致性哈希算法将固定总数的 partition 映射到每个 Storage Node 上,每个 data 也使用同样的哈希算法映射到 partition 上。 存储内容一般放在/srv/node/sdb1 之类的路径下,其目录结构如下所示: accounts(账号)async_pending(异步待更新)containers(容器)objects(对象)quarantined (隔离目录)tmp(临时目录)

详解OpenStack常见模块相关推荐

  1. android WebView详解,常见漏洞详解和安全源码(下)

    上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑.  上篇:android WebView详解,常见漏洞详解和安全源码(上)  转载请注明出处:http ...

  2. android WebView详解,常见漏洞详解和安全源码(上)

    这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析.  由于博客内容长度,这次将分为上下两篇,上篇详解 WebView ...

  3. SpringMVC接受JSON参数详解及常见错误总结我改

    SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...

  4. python中yaml模块的使用_详解Python yaml模块

    一.yaml文件介绍 yaml是一个专门用来写配置文件的语言. 1. yaml文件规则 区分大小写: 使用缩进表示层级关系: 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元 ...

  5. c#listbox使用详解和常见问题解决

    c#listbox使用详解和常见问题解决 参考文章: (1)c#listbox使用详解和常见问题解决 (2)https://www.cnblogs.com/whuanle/p/8622830.html ...

  6. python实现日历功能_详解Python日历模块的使用

    calendar模块的函数都是日历相关的,提供了对日期的一些操作方法,和生成日历的方法. calendar模块中提供了三大类: 一.calendar.Calendar(firstweekday=0) ...

  7. 文件系统的详解与常见文件系统模式比较

    目录 1. 文件系统的详解 2. 常见的文件系统比较 2.1 Windows下的文件系统 2.1.1 FAT16文件系统 2.1.2 FAT32文件系统 2.1.3 FAT64文件系统(exFAT文件 ...

  8. 位运算详解+竞赛常见用法总结

    目录 一.位运算详解 二.位运算应用 1.快速幂 2.给定一个数组A, 长度为n,求下面这段程序的值 3.数数字 4.数数字 2 5.nim博弈问题: 6.树状数组 7.判断一个数x是不是2的某次方 ...

  9. CSS中position详解与常见应用实现

    在web前台开发时候,我们必不可少的会用到postion属性进行布局定位. 今天总结了一下position知识点,与常用功能与大家分享,欢迎大家交流指正. 首先我们对postion属性进行详解. 在C ...

  10. rufus中gpt和mrb磁盘_UEFI/BIOS/MBR/GPT启动过程详解与常见系统启动问题

    做系统一大头疼事情就是UEFI/BIOS/MBR/GPT等等的选择.系统平台和硬件日新月异,基本上中文站的解释正确性参差不齐,出了问题也查不到正确解决方案,我也遇到过很多次系统启动的问题(这就是为什么 ...

最新文章

  1. matlab模型参数不匹配怎么办,修改Simulink模型后出现初始状态大小不匹配的错误...
  2. 关于Unity3D中函数说明
  3. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL(转)
  4. php自动按天清空库存,swoole+PHP实现自动取消订单,还原库存等操作
  5. 【Tomcat源码学习】-2.容器管理
  6. android瀑布流效果(仿蘑菇街)
  7. 第六章 培养感恩的习惯
  8. openjudge-1664 放苹果
  9. 软件工程专业的论文答辩_软件工程专业本科毕业答辩?
  10. iOS之 simlator模拟器截屏
  11. vue集成wangeditor3.0版本 解决光标乱跳等问题
  12. 域名注册网站服务比较
  13. 【eBay大赛专访特辑3】华北、中西部赛区人才济济,看他们如何乘风破浪!
  14. 清理winsxs的小工具
  15. 【win10专业版】win10系统下Office2013无法激活的解决方法
  16. 反思:让游戏远离自己的学习生活
  17. 一种简单的小型企业报表实现方式
  18. Java开发中OnlyOffice、OpenOffice和LibreOffice怎么选?
  19. 搭建rac+racdg
  20. 完全二叉树与满二叉树的区别(有图)

热门文章

  1. Linux- 控制 LED 灯设备(LED 子系统)
  2. 如何快速编写一个汇编软件
  3. adobe photoshop cs6 安装
  4. TokenInsight 对话首席——分片技术的现状与未来(下)
  5. shopEx数据库错误,无法连接
  6. 深度:解密50+中老年电视/直播购物最新变化趋势—电视购物转型+直播购物崛起
  7. 一分钟内搞定!熊猫杀毒软件研发提升扫描速度的技术
  8. java 定时发送心跳_RxJava2.0第五篇 interval 定时任务(心跳包)
  9. 小学用计算机画画的课件,小学信息技术绘图课件
  10. 2021高考北京大峪中学成绩查询,2014年北京市各区高考成绩汇总