一、keystone
1、keystone的功能
(1)管理用户及其权限
(2)维护openstack各服务的endpoint
(3)认证和鉴权

2、与keystone相关的名词:user、credentials、authentication、token、project、service、endpoint、role
(1)user:用户或者其他服务
(2)Credentials(证明):user用来证明自己身份的信息,通常是用户名/密码或者Token
(3)Authentication(认证):是keystone验证user身份的过程,user提供用户名/密码,keystone签发Token的过程
(4)Token:由数字和字母组成,user成功认证后,由keystone分配给user,有效期默认24小时
(5)Project:用于将OpenStack的资源(计算、存储、网络)进行分组和隔离
(6)Service:计算、存储、镜像、网络等服务,每个服务都会提供若干个endpoint,user通过endpoint访问资源和执行操作
(7)Endpoint:是一个网络上可访问的地址,通常是一个URL(统一资源定位符),service通过endpoint暴露自己的API

二、Glance
1、Glance架构及组件功能(画图)
(1)Glance-api:对外提供REST API,响应image查询、获取和存储的调用,glance-api不会真正处理请求。
(2)Glance-registry:处理image的元数据。
(3)Store backend:存放image。支持多种方式存储,包括文件系统、Swift、http、Amazon S3等。
(4)Database:image的元数据会保存到database中,默认是MySQL。

三、Nova
1、描述“从虚机创建流程看nova-*子服务如何协同工作”(画图)
(1)nova-api:接收和响应客户的调用
(2)RabbitMQ:作为自服务的信息中转站,协调各子服务之间的通信。
(3)Scheduler:根据计算节点的资源使用情况,选择最合适的计算节点来运行虚机。
涉及到Filter scheduler调度器:调度过程分为两步:
a:通过过滤器filter选择满足条件的计算节点
b:通过权重计算选择最优的计算节点创建虚机
(4)nova-compute:在计算节点上运行,负责管理节点上的虚机。
(5)nova-conductor:nova-compute需要获取和更新数据库中虚机的信息,但不会直接访问数据库,是通过nova-conductor实现访问数据库。
(6)Database:存放组件的状态数据等。
流程:
(1)客户向nova-api发送请求:“帮我创建一个虚机”。
(2)nova-api接收请求并处理后,向RabbitMQ发送消息:“让Scheduler创建一个虚机”。
(3)Scheduler接收到RabbitMQ的请求,开始执行调度算法,从若干计算节点中选出计算节点A。
(4)Scheduler发送消息到RabbitMQ:“在计算节点A上创建这个虚机”。
(5)RabbitMQ向计算节点A的nova-compute发送消息,然后在本节点的Hypervisor上启动虚机。
(6)nova-compute如果需要查询和更新数据库信息,会通过RabbitMQ发送消息到nova-conductor,nova-conductor负责数据库访问。

四、Cinder
1、Cinder架构及组件功能(画图)
(1)cinder-api:接收API请求,调用cinder-volume执行操作。
(2)Message queue(RabbitMQ):通过消息队列,实现进程间通信和相互协作。
(3)Cinder-scheduler:scheduler通过调度算法选择最合适的存储节点创建volume。
(4)Cinder-volume:管理volume的服务,与volume provider协同工作,管理volume的生命周期。运行cinder-volume服务的节点被称作为存储节点。
(5)Volume provider:为volume提供物理存储空间(创建volume)。
(6)Database:cinder的数据需要存放在数据库中,一般使用MySQL。数据库是装在控制节点上的。

五、Neutron
1、Neutron架构及组件功能(画图)
(1)neutron server:对外提供openstack网络API,接收请求,并调用Plugin处理请求。
(2)Plugin:接收neutron server请求,调用Agent处理请求。
(3)Agent:接收Plugin请求,负责在network provider上真正实现各种网络功能。
(4)Network provider:提供网络服务的虚拟或者物理网络设备,例如Linux Bridge、Open vSwitch虚拟交换机或者其他支持Neutron的物理交换机。
(5)Queue:负责各子服务之间的通信。
(6)Database:存放网络状态信息,包括network、subnet、port、router等。

2、Neutron功能
Neutron为整个openstack环境提供网络支持,包括二层交换、三层路由、负载均衡、防火墙和VPN等。
(1)二层交换:虚机是通过虚拟交换机连接到虚拟二层网络。neutron支持多种虚拟交换机,包括linux bridge和OVS。利用linux bridge和OVS,neutron除了可以创建传统的VLAN网络,还可以创建基于隧道技术的Overlay网络,比如VXLAN和GRE(Linux bridge目前只支持VXLAN)。
(2)三层路由:虚机可以配置不同网段的IP,neutron的虚拟路由器实现虚机跨网段通信。
(3)负载均衡:提供了将负载分发到多个虚机的能力。

3、Neutron管理的网络资源
包括network、subnet、port
(1)network是一个隔离的二层广播域,Neutron支持多种类型的network,包括:
a.local
b.flat
c.VLAN
d.VXLAN
e.GRE
VLAN:是一个二层的广播域,同一VLAN中的虚机可以通信,不同VLAN只能通过虚拟路由器通信。VLAN网络可以跨节点。
VXLAN:是基于隧道技术的overlay网络。VXLAN网络通过唯一的VNI与其他VXLAN网络区分。VXLAN中数据包会通过VNI封装成UDP包进行传输。因为二层的包通过封装在三层传输,能够克服vlan和物理网络基础设施的限制。
GRE:与VXLAN类似的一种overlay网络。主要区别在于使用IP包而非UDP进行封装。
(2)subnet是一个IPV4或者IPV6的地址段。虚机的IP从subnet中分配,每个subnet需要定义IP地址的范围和掩码。
(3)port可以看做是虚拟交换机的一个端口。port上定义了MAC地址和IP地址,当虚机的虚拟网卡绑定到port时,port会将MAC和IP分配给虚拟网卡。

4、plugin和agent
plugin分为两类:core plugin和service plugin
core plugin维护Neutron的network、subnet和port相关资源的信息。对应的agent包括linux bridge、OVS。
sevice plugin提供路由、防火墙、负载均衡等服务。也有对应的agent。

ML2 Core Plugin
传统的core plugin无法同时使用多种network provider,而ML2 core plugin可以解决这个问题,在不同节点上分别部署linux bridge agent、OVS agent。