openstack重要组件

OpenStack

认证服务keystone

是OpenStack的一核心组件,主要完成OpenStack中组件、用户等角色的身份信息验证,实际上OpenStack中任何组件均依赖于keystone提供的服务

keystone主要工作:

    ➢ 跟踪用户及监管用户权限
    ➢ 为每个组件服务提供一个可用的服务目录和相应的API入口端点

keystone工作流程

keystone工作流程

计算服务nova

Nova为OpenStack提供计算服务

➢ 将服务器抽象成计算资源池,管理虚拟机(实例)的生命周期。
⚫ Nova是OpenStack中最核心的项目
➢ 最初OpenStack只包括Nova和Swift项目。
➢ 为方便开发、管理、运维逐渐将各模块从Nova分离形成其他项目。
⚫ 在OpenStack中负责计算资源管理的项目
➢ 允许用户使用自己的镜像文件,通过 RESTful API 创建、管理和销毁虚拟服务器。
➢ 自身并没有提供任何虚拟化能力,相反它使用libvirt API等来与被支持的Hypervisors交互。

nova结构

nova结构

模块 功能
nova-api 接受rest消息
nova-scheduler 选择适合的主机
nova-conductor 数据库操作和复杂流程控制
nova-compute 虚拟机生命周期管理和资源管理
nova-novncproxy novnc访问虚拟机代理
nova-consoleauth novac访问虚拟机鉴权

nova工作流程

nova工作流程

块存储cinder

块存储可以看作为是硬盘,最明显的特征是不能被操作系统直接访问。可以通过划分逻辑卷、做RAID、LVM(逻辑卷) 等方式将它格式化,可以格式化为你所指定的文件系统(Ext3,Ext4,NTFS,FAT32等),然后才可以被操作系统访问。 常见的DAS、FC-SAN、IP-SAN都是块存储

对象存储,是基于文件系统的一种存储服务。就是通过对象存储文件系统,将多台服务器连接起来,其中分管理节点和 存储节点,存储节点执行存储操作,管理节点统一对外提供读写访问功能。通常以键值对的方式对文件进行存取操作。 常见的对象存储的开源实现有Ceph的RADOS、Openstack的swift、AWS s3等

存储服务的三大组件

Cinder —— 块存储

OpenStack 在Folsom 版本开始,将之前在 Nova 中的部分持久性块存储功能(Nova-Volume)分离了出
来,独立为新的组件 Cinder。

Cinder的核心功能是对卷的管理,允许对卷、卷的类型、卷的快照、卷备份进行处理。它为后端不同的存储
设备提供了统一的接口,不同的块设备服务厂商在 Cinder 中实现其驱动支持以与 OpenStack 进行整合。

Glance

Glance在Openstack中主要为实例创建提供公共镜像服务能力以及镜像/虚拟机快照管理功能。

属于Openstack八大核心组件之一,为Openstack的核心项目之一。

Glance依托于Cinder或Swift进行文件实体的存放。

Swift —— 对象存储
➢ 自 OpenStack 成立以来一直是一个核心项目。Swift 的功能类似于一个分布式、可访问 API 的存储平台,
可直接将它集成到应用程序中,或者用于存储 VM 镜像、备份和归档以及较小的文件,例如照片和电子邮件

网络服务neutron

neutron设计目标是实现“网络及服务”NaaS

neutron结构

neutron包含组件

neutron-server

专门来接受neutron restful API调用的服务器,负责将不同的restful API分发到不同的neutron-plugin上

neutron-plugin

不同网络功能实现的入口,各个厂商可以开发自己的plugin。neutron-plugin接受neutron-server发来的restful API,向neutron DB完成信息的注册,然后将具体要执行的业务操作和参数通知给自身对应的neutron agent

neutron-plugin分为core-pluginservice-plugin两类

  core-plugin:负责管理L2的网络连接。主要包括network、subnet、port三类核心资源,对这三类资源进行操作的Restful API被neutron-server看作core API
  service-plugin:除了core-plugin外所有plugin,主要实现L3-L7的网络服务。对这些资源进行操作的Restful API被neutron-server看作Extension API,需要厂商自行扩展

networkSubnetPort

neutron-agent

neutron-plugin在设备上的代理,接受对应的neutron-plugin通知的业务操作和参数,并转换为具体的设备级操作,以指导设备的动作。当设备发生问题时,neutron-agent会通知neutron-plugin

L2虚拟化实现原理

neutron将虚拟网络对象模型在物理网络上实现:

在linux-br上配置iptable规则,实现安全组
在ovs网桥上,配置流表规则,为不同端口配置不同的vlan tag,实现虚拟机的流量隔离
为网卡命名,neutron将虚拟网络的流量导出网卡

L2虚拟化实现原理

OpenStack和SDN

Neutron server对上响应用户端发送的请求(API)
对下连接着插件(neutron内部的plugin)
这些插件对应着底下各个设备(SDN,服务器)的agent代理
这些插件跟代理之间进行通信(通过opendaylight插件)

对上API把任务发送给插件,插件跟底下的agent去执行
openstack要和SDN相互连接的话,Openstack上先要装opendaylight插件(网络读取操作
在SDN上有agent代理服务的进程,这个进程跟ODL响应
插件和agent通信通过RPC,通过Restful API