一、Keystone
1.概念
Keystone是一个负责身份管理与授权的组件,给整个openstack的各个组件(nova、cglance...)提供一个统一的验证方式。主要功能:实现用户的身份认证、基于角色的权限管理、openstack其他组件的访问地址和安全策略管理。
两大管理功能:用户管理(3A认证)、服务目录管理
租户(项目)、用户、角色三者需要区分清楚。
一个用户允许有多个租户
一个用户可以绑定到不同的角色(角色代表权限)
一个角色可以绑定到不同的服务
2.组件间的沟通方式
主要过程:第一次user想访问任何组件会先经过Keystone,用户名+密码,如果用户有效且密码正确返回token1,token1对应的含义和权限会进行记录,但是用户必须有相应的租户(项目)才可以访问openstack的组件。如果user不知道当前有哪些租户(通常情况下是不知道的),user拿着token1访问Keystone当前的租户列表(tenant list)有哪些,user才可以在进行下一步访问。
第二次user确定了想访问nova服务,向Keystone提交用户名密码,Keystone放回token2和endpoint(端点),user拿着token2访问对应的endpoint,endpoint并不知道该user有没有权限,endpoint拿着token2提交给Keyston,如果token2认证成功,Keystone直接通知novatoken2是认证成功,你处理一下,nova处理完成后将结果提交给user。
二、Glance镜像服务
1.概念
openstact镜像服务使用户能够发现、注册并检索虚拟机镜像(.img文件),简而言之,就是镜像文件的存储仓库。
镜像URL:<Glance Server Location>/images/<ID> ,一般这三者组成一个全局唯一的URL。如果有两个glance服务,可以更改ID。
镜像的五种状态:
Queued(镜像ID已被保留,镜像还没有上传)
Saving(镜像正在被上传)
Active(镜像已经可以被使用)
Killed(镜像损坏或不可用)
Deleted(镜像已被删除)
2. 组件间工作流程
暴露接口Glance-api, 两种访问方式,一个是通过编程接口,一般上传的是json格式化存储文件,Glance-api下封装Glance-registry和底层,Glance-registry直接连接数据库,并且Glance-registry接口只暴露给Glance-api,不会直接暴露给用户。另外Glance-api可以直接操作底层S3、Object...
三、Nova
1.概念
Iaas的核心组件,也是openstack的核心组件,提供云计算服务、虚拟化服务,Nova本身不支持虚拟化,而是去管理底层的虚拟化(KVM或redhat)。
Nova-api:用于接收请求,请求的发起方可以是用户user通过命令或者程序编程接口或仪表台的套件。
Scheduler:调度服务,如果接收到的是新建虚拟机请求,Scheduler需要选择一个compute去启动一个虚拟机。
Compute Manager:管理虚拟机的启动、关闭、停止,管理虚拟化的整个生命周期。Compute Manager并不直接管理虚拟机,而是通过编写的底层驱动Compute Driver去控制Libvirt(redhat开发的虚拟机管理平台),Libvirt再而控制KVM、Xen等虚拟化平台。
Libvirt支持多种虚拟化监视器(hypervisor)
nova实质上有两种形式,通常由一个Controller和多个Compute计算节点组成,用户通过命令想nova-api发起创建一个虚拟机请求,nova-api向消息队列(queue)编写数据,随后调度Scheduler、nova-network、nova-volumne。调度成功后也向消息队列写数据,最后Compute接收到消息队列的数据开始响应请求。
虚拟机启动流程:如果创建虚拟机没有指定节点,进行权重计算,计算各个节点的剩余资源,Libvirty会自动检测(一般是1分钟)资源并保存在数据库中,nova-Scheduler可以在数据库拿到节点资源,一旦有新的数据写入Compute 节点,会马上更新资源统计并保存在数据库。
三、Netutron
1.概念
Linux环境下网络设备的虚拟化主要有以下几种形式,Neutron也是基于这些技术来完成项目私有虚拟网络network的构建。
(1) TAP/TUN
TAP/TUN是 Linux内核实现的一对虚拟网络设备, TAP工作在二层,TUN工作在三层,Linux内核通过TAP/TUN设备向绑定该设备的用户空间程序发送数据,反之,用户空间程序也可以像操作硬件网络设备那样,通 过 TAP/TUN设备发送数据。
(2) Linux Bridge/VLAN
Linux Bridge (网桥)是工作于二层的虚拟网络设备,功能类似于物理的交换机。
(3) Open vSwitch
Open vSwitch 是一个具有产品级质量的虚拟交换机,它使用C语言进行开发 。可以区分被桥接的物理网卡上流淌的数据包属于哪个VM 、哪 个 OS 及哪个用户。接入到OpenvSwitch上的各个 VM分配到不同的VLAN中实现网络的隔离。
实现了分布式的虚拟交换机( Distributed Virtual Switch),一个物理Server上的vSwtch可以透明地与另一Server上的vSwitch连接在一起。
L3 agent
l3 agent可以为project(租户)创建router,提供Neutron subnet之间的路由服务。路由功能默认通过 IPtables 实现。
neutron agent服务:
(1)plug-in agent(neutron-*-agent)
插件代理,需要部署在每一个运行hypervisor的主机上,它提供本地的vSwitch配置,更多的时候得依赖你具体所使用的插件类型。(常用的插件是OpenvSwitch,还包括Big Switch,Floodinght REST Proxy,Brocade, NSX, PLUMgrid, Ryu)
(2)dhcp agent(neutron-dhcp-agent)
DHCP代理,给租户网络提供动态主机配置服务,主要用途是为租户网络内的虚拟机动态地分配IP地址。
(3)l3 agent(neutron-l3-agent)
L3代理,提供三层网络功能和网络地址转换(NAT)功能,来让租户的虚拟机可以与外部网络通信。
(4)metering agent(neutron-metering-agent)
计量代理,为租户网络提供三层网络流量数据计量服务。
Network--->Vlan
Subnet--->一段地址段(比Network的范围更小)
Router--->三层路由
Port--->虚拟交换机的端口号
Vif--->主机
流程:
主要组件功能:
ML2 Plugin功能实现以及对应协议:
拓网络扑
不同组件上运行的服务是不同的!每台Nova节点都会有ML2-agent代理端,管理端则在Neutron节点上Neutron ML2 plugin。
Per-tenant Routers with Private Network
这是一种最具意义的网络构建方式,不同的租户有各自的路由器,同一个租户可以拥有不同的网段,租户间的通信使用各自的路由器通过浮动网络进行通信,浮动网络后就是物理路由器了,通过物理路由器就可以与外网通信了。
绿色租户,蓝色vlan,每个租户一个路由,一个路由多个vlan。
五、Horizon仪表盘套件
Horizon安装前必须安装Compute、Keystone组件,必须安装Python2.6或2.7,并支持Django。
演示:
六、 Cinder块存储
controller节点运行The Block Storage API服务和Schedule服务,The volume service运行在一个或多个存储节点,存储节点可以是本地磁盘、SAN、NAS等设备,为云主机提供卷存储。
cinder-api:允许API请求,并路由他们到cinder-volume。
cinder-volume:直接与块存储服务通信,支持多种存储类型。
cinder-scheduler daemon:类似于nova-scheduler组件,用于计算节点资源,选择最优的存储节点创建卷。
swift和cinder的区别
swift类似于网盘,而cinder类似于移动硬盘,随意格式化,随意存取。swift对象存储通常存储一些不会修改的数据,比如用于存储 VM 镜像、备份和归档以及较小的文件,例如照片和电子邮件消息。更倾向于系统的管理。