openstack(二)openstack组件详解

2021年11月23日 阅读数:3
这篇文章主要向大家介绍openstack(二)openstack组件详解,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

   小生博客:http://xsboke.blog.51cto.comweb

   

  

 

                             -------谢谢您的参考,若有疑问,欢迎交流算法


目录:数据库

1、keystone详解     --------------- (openstack认证服务)swift

2、glance详解       ---------------(openstack镜像服务)api

3、nova详解        ---------------(openstack计算服务)安全

4、neutron详解      ---------------(openstack网络服务)服务器

5、cinder详解       ---------------(openstack存储服务)网络






1、 Keystone概述架构

   openstack(二)openstack组件详解_keystone

  1. Keystone提供认证、权限、服务列表三大功能:并发

1)认证:身份验证(identify)、令牌(token

2) 权限:admin(管理员)、user(用户)

3)服务列表:体如今用户登陆openstack后,可以使用的计算、存储、网络等服务列表

  2. Keystione的关键术语:

1)一个user(用户)能够关联一个或多个tenant(租户/项目)

2) 一个项目(tenant/project)由一个或多个虚拟机组成

3)一个项目(tenant/project)能够关联一个或多个user(用户),每一个user能够拥有不一样的权限

4)Role(角色):定义用户的权限,openstack有几个内置的角色,admin,member

5)Token(令牌):定义了令牌的有效时间和令牌中用户的权限,项目等基本信息

6)Service:对应业务模型服务,如计算(compute,存储(volume,镜像(Glance)等

7)Endpoint:服务的访问入口每一个服务都会有本身的访问入口,也称之为访问端点。

 Endpoint使用对象分为三类:

  • admin url >admin用户使用,Post35357

  • internal url > OpenStack内部服务使用来跟别的服务通讯,Port5000

  • public url >其它用户能够访问的地址,Post5000

openstack(二)openstack组件详解_nova_02

  3. keystone验证流程:以建立虚拟机的流程为例

   openstack(二)openstack组件详解_nova_03

  • 用户向keystone发送用户名和密码,经过验证后,keystone会返回一个临时token和一个service catalog的列表。

  • 用户用这个临时的tokencatalog列表中keystoneendpoint请求用户对应的tenant信息,keystone验证token经过后会返回用户对应的tenant列表。

  • 用户从列表中选取tenant,再次向keystone请求,keystone验证经过后,返回与该tenant相关的catalog信息和token

  • 用户用该token以及tenant/user信息向catalog中的nova服务器端点请求开启虚拟机服务。novakeystone请求验证:<1>.token是否合法<2>.这个租户和用户是否有权限来向nova请求服务?

  • keystone返回给nova:<1>.租户-用户具有访问nova权限。<2>. token合法<3>. token属于该租户-用户。

  • nova根据本身的规则判断用户是否具有开启虚拟机的权限,若是具有,启动虚拟机,并向用户报告状态。

2、 glance概述

openstack中的镜像管理模块,存储了镜像的元数据

功能:虚拟机的查找、注册和检索等操做

Glanceopenstack中的位置:

openstack(二)openstack组件详解_keystone_04

  1. Glance的概念

    image identifiers/image URI:镜像标识

  2. Image 状态

l  queued:镜像ID已经被保留,镜像的metadata已经被写到数据库中,但镜像尚未上传

l  saving:镜像正在被上传

l  active:镜像可使用了

l  killed:镜像损坏或者不可用

l  deleted:镜像被删除

  3. disk format:镜像磁盘格式(取决于虚拟化类型)

  • raw:分配多少占用多少空间,性能好

  • vhdvmware,xen,microsoft,virtualbox支持的格式

  • vmdkcommon format 开源社区通用的,规范化的磁盘格式

  • vdivirtualbox,qemu emulator这两类hypervisor支持的格式

  • iso optical disc光盘镜像,主要用来作归档之用

  • qcow2:主要用于qemu类型的虚拟机,特色是磁盘大小动态扩展,占多少用多少,可是其性能比raw

  • akiariami:亚马逊

  4. container format:容器格式

1)容器的做用:

  • 整合建立虚拟机的相关选项,如:购买华为云时选择云主机的配置

2)容器的格式:

  • Bare:当不肯定磁盘格式时,使用。

  • Ovf:模版

  • akiamiari:亚马逊

3) image-create命令至少要接收三个参数:

  • --name:指定建立的镜像名

  • --container_format:用于代表镜像文件是否包含了虚拟机的元数据信息,然而,目前compute服务并未使用此信息,所以,在不肯定的状况下能够将其指定为bare,而经常使用的格式主要有bare(没有container或元数据信息)、ovfakiariami几种。

  • --disk_format:用于指明磁盘镜像文件的格式,包括rawqcow2vhdvmdkisovdiakiariami等。

  5. Glance的基本组件

   openstack(二)openstack组件详解_keystone_05

  • Glance API:对外提供镜像接口服务,包括镜像的上传和下载,更改信息以及虚拟机、云硬盘快照管理等接口服务。

  • Glance Registry(注册服务):存储镜像元数据信息与数据库交互实现镜像基础信息存储

  • store adapter(存储适配器):镜像自己的存储,提供多种存储适配,支持亚马逊云存储S3(Simple Storage Service简单存储服务)openstack自由的swift(对象存储)以及经常使用的文件存储系统,固然也能够自行开发拓展到其余存储上。

  • glanceDBglance存在数据库中的镜像元数据

3、 nova概述

novaopenstack中用于提供计算服务,由多个组件组成

nova的核心组件:

  • nova-api:对外提供入口

  • scheduler:调度服务

  • compute:计算服务

  • compute driver:用于调度hypervisor的驱动

novaopenstack中的位置

openstack(二)openstack组件详解_openstack_06

  1. nova的架构(组件)

    openstack(二)openstack组件详解_nova_07

    openstack(二)openstack组件详解_openstack_08

    openstack(二)openstack组件详解_keystone_09

    openstack(二)openstack组件详解_openstack_10

    openstack(二)openstack组件详解_openstack_11

    openstack(二)openstack组件详解_openstack_12

 2. 经过一个云主机的建立流程了解openstack及其组件nova的工做流程

大概流程来讲:

  • 第一步:用户经过horizonweb)登陆openstack,通过keystone认证并获取token

  • 第二步:用户请求链接nova进行相关操做,nova找到keystone验证用户和token

  • 第三部:用户的请求在nova中的MQ被提取,而后放入novacompute

  • 第四步:novacompute链接glance,而后glance找到keystone验证用户和token,获取镜像信息

  • 第五步:novacompute链接neutron,而后neutrom找到keystone验证用户和token,获取网络信息

  • 第六步:novacompute链接cinder,而后cinder找到keystone验证用户和token,获取存储

  • 第七步:novacompute交由底层的hypervisor建立虚拟机

    openstack(二)openstack组件详解_nova_13

虚拟机启动过程以下:

  • 界面或命令行经过RESTful APIkeystone获取认证信息。

  • keystone经过用户请求认证信息,并生成auth-token返回给对应的认证请求。

  • 界面或命令行经过RESTful APInova-api发送一个boot instance的请求(携带auth-token)。

  • nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token

  • keystone验证token是否有效,若有效则返回有效的认证和对应的角色(注:有些操做须要有角色权限才能操做)。

  • 经过认证后nova-api和数据库通信。

  • 初始化新建虚拟机的数据库记录。

  • nova-api经过rpc.callnova-scheduler请求是否有建立虚拟机的资源(HostID)

  • nova-scheduler进程侦听消息队列,获取nova-api的请求。

  • nova-scheduler经过查询nova数据库中计算资源的状况,并经过调度算法计算符合虚拟机建立须要的主机。

  • 对于有符合虚拟机建立的主机,nova-scheduler更新数据库中虚拟机对应的物理主机信息。

  • nova-scheduler经过rpc.castnova-compute发送对应的建立虚拟机请求的消息。

  • nova-compute会从对应的消息队列中获取建立虚拟机请求的消息。

  • nova-compute经过rpc.callnova-conductor请求获取虚拟机消息。(Flavor

  • nova-conductor从消息队队列中拿到nova-compute请求消息。

  • nova-conductor根据消息查询虚拟机对应的信息。

  • nova-conductor从数据库中得到虚拟机对应信息。

  • nova-conductor把虚拟机信息经过消息的方式发送到消息队列中。

  • nova-compute从对应的消息队列中获取虚拟机信息消息。

  • nova-compute经过keystoneRESTfull API拿到认证的token,并经过HTTP请求glance-api获取建立虚拟机所须要镜像。

  • glance-apikeystone认证token是否有效,并返回验证结果。

  • token验证经过,nova-compute得到虚拟机镜像信息(URL)

  • nova-compute经过keystoneRESTfull API拿到认证ktoken,并经过HTTP请求neutron-server获取建立虚拟机所须要的网络信息。

  • neutron-serverkeystone认证token是否有效,并返回验证结果。

  • token验证经过,nova-compute得到虚拟机网络信息。

  • nova-compute经过keystoneRESTfull API拿到认证的token,并经过HTTP请求cinder-api获取建立虚拟机所须要的持久化存储信息。

  • cinder-apikeystone认证token是否有效,并返回验证结果。

  • token验证经过,nova-compute得到虚拟机持久化存储信息。

  • nova-compute根据instance的信息调用配置的虚拟化驱动来建立虚拟机。


4、 neutron概述

  • neutron是在openstack m版才开始使用的,主要用于网络管理。

  • Neutron就是openstacknetworking server 代码名称

  • Neutron为使用者提供了整合多个不一样的网络技术来最大化发挥网络功能的机制,并提供了经过三层转发及NAT配置和管理网络功能的API以实现负载均衡,边缘防火墙及ipsec ***

  1. neutron的功能

  • 提供网络模型:flatflatdhcpvlan

  • IP地址管理:novanetwork须要管理虚拟机使用的IP地址,这些地址包含两类,一类是fixed ip,在虚拟机的整个生命周期中该IP地址都不会发生变化;另外一类是floating ip,是动态的分配给虚拟机的,随时均可以收回

  • Dhcp功能:在flatdhcpvlan模式下,虚拟机是经过DHCP来获取其fixed ip的;novanetwork会启动dnsmasq做为虚拟机的DHCP服务器,该虚拟机分配ip

  • 安全防御:出于安全的考虑,nova中的虚拟机能够防止IP/MAC洪泛,不能随便修改虚拟机的MAC地址,修改后虚拟机就不能上网了,这项功能主要是经过ebtables/iptables实现的。

  2. Openstack早期版本的网络方案

Flat:扁平

  • 全部虚拟机在同一网段,

  • 没有网路隔离功能,不须要dhcp

  • 须要经过文件注入的方式设置网络,

  • 经过网络控制器(nova-network节点)对虚拟机实例进行NAT转换,实现与外部的通讯

  • FLAT模式须要在安装openstack时须要手工配置好网桥(br100),全部的系统实例都是和同一个网桥链接,网桥与链接到网桥的实例组成一个虚拟网络。

Flatdhcp模式

  • 与扁平模式相似,也只有一个子网

  • 不须要文件注入

  • 经过dhcp server的方式监听网桥上的dhcpdiscoverdnsmasq)的包的方式为虚拟机分配IP地址,虚拟机启动时经过DHCP获取其fixed ip

Vlan模式

  • 每一个项目(project)分配一个vlan id,每一个项目也能够有本身的独立的ip地址段,属于不一样project的虚拟机链接到不一样的网桥上,所以不一样的project之间是隔离的,不会相互影响

  • 访问一个项目的全部虚拟机须要建立一个***虚拟机,以此虚拟机做为跳板去访问该project的其余虚拟机

  • 每一个project启动一个dnsmasq来配置虚拟机的fixedip

  3. Neutron服务简介

neutron 是一个分层架构,全部的请求都先到 neutron server 上, neutron server 有多个 API ,用于提供各类功能,用户调用 API 后,内部经过 RPC 机制调用 agent 层的一些服务,这些 agent 有二层、三层的, agent 至关于一个中间代理层, agent 再会调用设备层相应的驱动来完成用户 API 所请求的功能。

   openstack(二)openstack组件详解_openstack_14

  • 全部获取网络的请求——neutron server(多个API组成)——经过调用api接口来访问neutron提供的功能——而后基于RPC调用agent——经过agent提供的相关驱动调用服务——经过服务调用设备层的设备完成请求

  4. Neutron的基本概念

  1. Networking APINetworkingAPI经过软件方式定义了虚拟网络(network),子网(subnet),port(端口)等抽象层,用来描述网络资源

  2. 网络(network):用于划分虚拟网络,neutron网络是一个能够被用户建立的对象,至关于交换机

  3. 子网(subnet):子网就是一个地址池,不一样的子网间通讯须要路由器的支持,子网隶属于网络端口(port):至关于交换机的逻辑端口路由器(router):和物理环境下的路由器相似,Neutron中的路由器也是一个路由选择和转发部件。只不过在Neutron中,它是能够建立和销毁的软部件。

  4. Dhcp:为租户(也叫项目,project)网络提供DHCP服务,即IP地址动态分配,另外还会提供metadata请求服务

  • Dhcp aget:负责处理dhcp请求,为网络分配IP

  • DHCP agent schedulerDHCP agentnetwork的调度,即某个网络的DHCP请求要发向那个DHCP agent,如采用轮询调度算法

  5. Neutron部署模式/模型

   1) Single FLAT Network:单一扁平网络

  • 全部虚拟机在赞成网段

  • 可使用dhcp分配ip地址

  • 不支持浮动IPfloating ip,不使用后释放)

   2)Mutiple FLAT network:多个扁平网络模式

  • 能够建立多个子网,每一个项目能够链接一个或多个子网

  • 不支持floatingip

   3) provider router with privatenetwork:租户私有网络单个路由器

  • 容许每一个租户拥有多个本身的私有网络,私有网络经过路由器router链接至外部网络

  • 支持浮动ipfloating ip

   4)Per-tenant Routers with privatenetwork:多路由器私网模式

  • 子网重叠(overlapping):支持不一样网络的子网重叠

  • 每一个租户能够本身定义本身的虚拟路由器和私有网络,为虚拟机绑定floating IP,目前此种部署模式是最经常使用且先进的。

  • 部署novanetwork时至少须要两块网卡,一块做为public network,主要承载公网流量和openstack各个组建之间的流量,要可以访问公网,ip地址能够为内网地址也能够为公网地址;另外一块做为internal network,承载虚拟机之间相互通讯的流量,不须要为其分配ip地址,只须要保证它们物理上能够互联便可

  5. nova network的主要配置选项有

   openstack(二)openstack组件详解_nova_15

  • Multihost:多主机模式,能够下降neutron的负载

  • multihost模式下,首先须要将multi_host设置为True,而后在每一个计算节点上都安装好nova-network nova-api-metadata nova-compute

5、 cinder块存储

  • 只负责提供虚拟机存储

  • openstack中,硬盘以vdavdbvdc这种方式显示

  • 存储具体实现机制如图:

    openstack(二)openstack组件详解_keystone_16


nova存储实现机制包括如下几个关键环节:

  • nova-api调用nova-compute主机接口run_instance

  • nova-compute调用存储接口volume-apicreate方法,建立存储。

  • volume-api存储接口将存储信息经过调度方式发送至调度引擎scheduler

  • 调度引擎scheduler根据必定的算法,选择具体一个存储节点,发指令至该节点cinder-volume

  • cinder-volume接收到建立云硬盘(create_volume)指令值,建立逻辑卷LV,并发布逻辑单元(LUN

  • nova-compute接收到云硬盘建立成功的反馈后,调用其虚拟化实现,如Libvirt DriverSCSI实现,实现ISCSI initiator链接至对应的存储逻辑单元LUN,将该块设备分配给虚拟机。