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模板的编写
很重要,我现在还没用到,等用到的时候在添加
文章内容仅用于作者学习使用,如果内容侵犯您的权益,请立即联系作者删除,作者不承担任何法律责任。