一、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 个概念纳入到生活当中,是不是一下子全理解并且记住了

openstack核心组件关系图 openstack的核心模块_openstack核心组件关系图

Keystone 架构

openstack核心组件关系图 openstack的核心模块_openstack_02


Keystone的服务(Service)是由Token、Catalog、Identity、Policy四大后端模块所支持的。

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

工作流程

openstack核心组件关系图 openstack的核心模块_公有云底层_03

二、Glance 镜像服务

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

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

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

为什么使用 Image 呢?

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

Glance 架构

openstack核心组件关系图 openstack的核心模块_openstack_04

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

openstack核心组件关系图 openstack的核心模块_云计算_05

磁盘与容器

磁盘格式(Disk format)

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

容器格式(Container format)

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

Glance 工作流程

openstack核心组件关系图 openstack的核心模块_openstack核心组件关系图_06

三、Placement 放置服务

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

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

Placement 工作流程

openstack核心组件关系图 openstack的核心模块_openstack核心组件关系图_07

四、Nova 计算服务

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

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

Nova 架构

openstack核心组件关系图 openstack的核心模块_公有云底层_08

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

Nova 工作流程

openstack核心组件关系图 openstack的核心模块_运维_09

五、Neutron 网络服务

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

Neutron 架构

openstack核心组件关系图 openstack的核心模块_公有云底层_10

  • 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网络模式

openstack核心组件关系图 openstack的核心模块_云计算_11

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

openstack核心组件关系图 openstack的核心模块_公有云底层_12

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

Neutron 工作流程

openstack核心组件关系图 openstack的核心模块_运维_13

六、Dashboard 仪表盘

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

七、Cinder 块存储服务

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

Cinder 架构

openstack核心组件关系图 openstack的核心模块_openstack核心组件关系图_14

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

Cinder 工作流程

openstack核心组件关系图 openstack的核心模块_云计算_15