OpenStack主要由七部分组成,分别是Identify, Image, Network, Compute, Block Storage, Object Storage, Dashboard,分别表示认证模块,镜像模块,网络模块,计算模块,块存储模块,对象存储模块和管理模块.
为其他几个模块提供认证服务,所有的认证操作都会通过keystone来进行。
整个keystone其实就是在数据库中建立用户(user)、角色(role)、Tenant、服务(service)、endpoint以及其相互对应关系。Tenant在之前的版本中叫做Project,Tenant是一个独立的资源容器。每个Tenant都可以定义独立的VLAN, volumes, instances, images, keys, users等。服务指的是OpenStack所提供的那几种服务(network, volume, image, identify, compute, swift)。endpoint是指各服务的内部、外部及管理接口址(REST API)。
提供镜像服务,创建虚拟机什么的都会从这里拉取镜像模板。
你可以将镜像通过Glance来上传到相应目录并在数据库里标记镜像的位置、属性及相关权限。使用nova来创建instance的时候就是从Glance的数据库中来查找镜像文件及相关属性、权限。
提供网络服务,即创建虚拟机的IP地址分配及网络分配都由它来支配。
Openstack在Havana版本之前的网络模块组件名称叫Quantm,Openstack在Havana版本上将Quantum更名为Neutron。
在OpenStack的网络管理流程中,通常需要经过以下几个步骤:
1. 创建一个网络;
2. 创建一个子网;
3. 启动一个虚机,将一块网卡对接到指定的网络上;
4. 删除虚机;
5. 删除网络端口;
6. 删除网络;
提供计算服务,nova是运行在libvirt上层的的一个管理工具,用来管理操作虚拟机。
计算服务是OpenStack的核心服务,它由nova-compute模块通过libvirt、XenAPI等管理hypervisor,从而管理虚机,此外它还通过nova-api服务向外提供如EC2兼容、管控功能等的接口,通过nova-scheduler模块提供虚机调研逻辑等;这些模块间的通信全部通过消息队列完成。
提供块存储服务,持久存储虚拟机上的数据,即一台虚拟机上面会挂载其他磁盘如vdb/vdc/vdd等,这个虚拟的磁盘就是Cinder在宿主机上创建的raw或qcow2文件
对象存储,存储的是一些资源文件,如图片、代码等文件。对象存储服务是OpenStack最早期的两个服务之一(另一个是计算服务),在OpenStack平台中,任何的数据都是一个对象。
管理这些模块的web平台,大部分操作都可以在Dashboard中进行。
1 https://raw.githubusercontent.com/chenzhiwei/linux/master/openstack/README.mkd
2 http://blog.csdn.net/xiangmin2587/article/details/7737778