OpenStack学习笔记

OpenSack学习笔记

1、现阶段Openstack的架构图

2、Openstack八大核心组件

nova:提供计算服务

neutron:提供网络服务

cinder:提供块存储服务,为虚拟机实例提供持久化存储

swift:提供分布式对象存储服务

keystone:提供认证鉴权服务目录服务

heat:提供服务编排服务

ceilometer:提供计量监控服务

glance:提供镜像服务


Keystone详解

提供认证鉴权服务目录等功能


keystone组件

Keystone API:接收外界请求

Keystone Middleware:安装在其他组件侧,代替其他组件如nova访问Keystone,缓存Token,减轻Keystone Services的压力

Keystone Services:判断调用后端DB还是AD

Keystone Backends:也就是AD或者是DB,存放用户信息或者密码

Keystone Plugins:对接Backends


Keystone模型

1、Token

Token一般包含User信息。Project信息或者Domain,Role信息。

Token种类包括:

1、UUID:32位随机字符串,不带其他信息

2、PKI/PKIZ:基于数字签名

3、Fernet:对称加密

主要是根据Keystone server 的负载和region的数量来选择token的类型的。

Keystone server 负载低,region少于3个,采用UUID令牌。

Keystone server负载高,region少于3个,采用PKI/PKIZ令牌。

Keystone server 负载低,region大于或等于3个,采用UUID令牌。

Keystone server 负载高,region大于或等于3个,目前OpenStack新版本默认采用Fernet令牌。

2、policy.json

Keystone只保存用户的角色信息,而不保存用户的权限信息,具体信息由用户拿着token去各个服务查询,策略文件目录为:/etc/服务名/policy.json

3、catalog(服务目录)

catalog服务提供用于查询端点的端点注册表

4、endpoint

提供服务入口,本质就是一个url,有如下几种

a.Public:给公共组件使用

b.internal:给用户使用

c.admin:给管理员使用

用户提交用户名、密码后,Keystone验证后生成Token,操作OpenStack服务的请求必须携带Token,通过端点URL访问服务。


Glance

Glance为我们提供镜像发现,镜像注册,检索等功能,Glance自己不会保存镜像,通常保存在cinder,或者swift中。


glance组件详解

glance-api:接收用户请求

glance-registry:镜像元数据

glance-db:存放镜像的信息

image-store:存放镜像的后端存储(构想出来的组件,其实没有)


镜像磁盘格式

  • raw
  • vhd:vmware,VirtualBox
  • vhdx
  • vmdk
  • iso:光盘
  • qcow2:QEMU支持的磁盘格式。

镜像缓存机制

会在glance-api本地存放原始镜像一个副本。

glance-cache-pruner       #周期清理镜像缓存
glance-cache-cleaner      #清理状态异常的cache文件
glance-cache-manage --host=IP queue-image 镜像ID   #将镜像缓存到api节点
glance-cache-manage --host=IP delete-cached-image 镜像ID  #手动删除镜像

镜像制作

自己制作镜像

首先使用virt-manager创建一个虚拟机并安装系统

$ sudo apt install cloud-init      #安装cloud-init
$ sudo shutdown -h now             #关闭虚拟机
$ sudo virt-sysprep -d VM ID       #预清理虚拟机
$ virsh undefine VM ID             #释放虚拟机定义
$ qemu-img create                  #制作镜像
$ openstack image create           #上传镜像

NOVA

nova提供计算能力,负责管理虚拟机的生命周期的管理。


组件介绍

nova-api:接收用户的请求

nova-scheduler:过滤权重出合适的主机

nova-conductor:复杂流程控制(热迁移,冷迁移,创建,虚拟机规格调整,虚拟机重建),代替nova-compute访问数据库

nova-compute:虚拟机生命周期的真正执行者,对接底层虚拟化平台,资源刷新

nova还有很多组件,比如nova-network,但是已经都不用了。


创建虚拟机的流程

1、用户通过Dashboard/CLl申请创建虚拟机,并以REST API方式来请求KeyStone授权

2、Keystone鉴定后和送回auth-token(用来通过REST-call向其他组件发送请求)

3、Dashboard或者CLI将创建虚拟机请求转换成REST API形式并发送给nova-api

4、nova-api收到请求后向keystone发送请求验证auth-token并获取权限

5、Keystone验证token并发送角色和权限更新的认证报头

6、nova-api联系nova-database,为新的实例创建初始数据库条目(此时虚拟机状态开始变成building)

7、nova-api发送请求给nova-scheduler,以获得适合安装虚拟机的主机

8、nova-scheduler从 queue中拿到请求

9、nova-scheduler联系nova-database通过过滤与权衡来查找最合适的主机

10、nova-scheduler在过滤与权衡后返回最适合安装虚拟机的主机的ID

11、nova-scheduler发送请求给nova-compute,请求创建虚拟机

12、nova-compute通过传递auth-token给glance-api进行REST调用,向glance请求使用镜像服务

13、glance-api与keystone验证auth-token,nova-compute得到镜像元数据

14、nova-compute通过传递auth-token给Neutron-api进行REST调用,以获取网络服务

15、Neutron-api与keystone验证auth-token,nova-compute得到网络信息

16、nova-compute通过传递auth-token给Cinder-api进行REST调用,以获取快存储服务

17、cinder-api与keystone验证auth-token,nova-compute 得到块存储信息

18、nova-compute 生成驱动数据,驱动hypervisor生成虚拟机,完成虚拟机创建


cinder

cinder通过driver对接后端存储,从而为虚拟机提供块存储服务。


组件介绍

cinder-api:接受用户的请求

cinder-scheduler:过滤,权重出合适的节点

cinder-volume:接入不同厂商的设备

cinder-db:存放相关信息


cinder创建卷流程


swift

提供高可靠分布式对象存储


组件

proxy server:接收用户请求

account:不是用户,相当于什么存储

container:相当于什么存储的什么文件夹

object:相当于真实数据

数据:/account/container/object


Neutron

遵循软件定义网络的灵活和自动化原则


虚拟化网络实现技术

网卡虚拟化 交换机虚拟化 网络隔离
TAP:模拟二层设备 Linux Bridge:虚拟交换机 Network Namespace
TUN:模拟三层设备 Open vSwitch
VETH:虚拟网口

Neutron常用概念

Network:一个隔离的二层广播域

类型:local(本地)flat(untag),VLAN(tag),VXLAN,GRE

subnet:子网,可加DNS,网关IP

port:端口

Router:路由器,连接租户内同一Network或不同Network之间的子网

Fixed IP:固定IP

Floating IP:浮动IP

Provider Network:直接对应物理网络的一个网段

self-service Network:自助服务网络

external Network:外部网络


Neutron架构

Neutron Server:对外提供api,并调用Plugin处理请求

Plugin:调用相应Agent处理请求

Agent:处理Plugin的请求

L2 agent:处在虚拟化层,通常是虚拟网卡

L3 agent:通常是路由器等


Heat_很重要

提供应用编排服务


Heat组件

heat-api:接受用户的请求与模板

heat-engine:将用户的模板转换成对nova,cinder等组件的具体操作。


Heat模板类型

cfn:亚马逊的格式

hot:openstack格式


Heat模板的编写

很重要,我现在还没用到,等用到的时候在添加


文章内容仅用于作者学习使用,如果内容侵犯您的权益,请立即联系作者删除,作者不承担任何法律责任。

×

喜欢就点赞,疼爱就打赏