一.简介
OpenStack是一个云平台管理的项目。OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。Openstack包含两个主要模块Nova和Swift。前者是NASA开发的虚拟服务器部署和业务计算模块;后者是Backpack开发的分布式云存储模块,两者可以一起使用,也可以分开单独使用。
二.工作流程
OpenStack的各个服务之间通过统一的REST风格的API调用,实现系统的松耦合。它内部组件的工作过程是一个有序的整体。诸如计算资源分配、控制调度、网络通信等都通过AMQP(高级消息队列协议)实现。OpenStack的上层用户是程序员、一般用户和Horizon界面等模块。这三者都是采用OpenStack各个组件提供的API接口进行交互,而它们之间则是通过AMQP进行互相调用,它们共同利用底层的虚拟资源为上层用户和程序提供云计算服务。
三.管理流程
OpenStack既然是一个开源的云平台项目,它的主要任务是给用户提供IaaS服务。
1. QEMU
QEMU是一个纯软件的计算机硬件仿真器。通过单独运行QEMU来模拟物理计算机,具有非常灵活和可移植的特点,利用它能够达到使用软件取代硬件的效果。
一般情况下,OpenStack可以部署在Ubuntu的Linux操作系统上,为了进一步提高QEMU的运行效率,往往会增加一个KVM硬件加速模块。KVM内嵌在Linux操作系统内核之中,能够直接参与计算机硬件的调度,这一点是QEMU所不具备的。一般的QEMU程序的执行必然要经过程序从用户态向内核态的转变,这必然会在一定程度上降低效率。所以,QEMU虽然能够通过转换对硬件进行访问,但在OpenStack中往往采用KVM进行辅助,使得OpenStack的性能表现得更为良好。
需要说明的是KVM需要良好的硬件支持,如果有些硬件本身不支持虚拟化,那么KVM则不能使用。
2. Libvirt
Libvirt是一个开源的、支持Linux下虚拟化工具的函数库。实质上它就是为构建虚拟化管理工具的API函数。Libvirt是为了能够更方便地管理平台虚拟化技术而设计的开放源代码的应用程序接口,它不仅提供了对虚拟化客户机的管理,也提供了对虚拟化网络和存储的管理。
最初,Libvirt是只针对Xen而设计的一系列管理和调度Xen下的虚拟化资源的API函数。目前高版本的Libvirt可以支持多种虚拟化方案,包括KVM、QEMU、Xen、VMware、VirtualBox等在内的平台虚拟化方案,又支持Openvz、LXC等Linux容器虚拟化系统,还支持用户态Linux(UML)的虚拟化,它能够对虚拟化方案中的Hypervisor进行适配,让底层Hypervisor对上层用户空间的管理工具可以做到完全透明。
四.系统架构
OpenStack各个组件之间耦合是非常松的。其中,Keystone是各个组件之间的通信核心,它依赖自身REST(基于Identity API)对所有的OpenStack组件提供认证和访问策略服务,每个组件都需要向Keystone进行注册,主要目的是对云平台各个组件进行认证与授权,对云平台用户进行管理,注册完成后才能获取相对应的组件通信的地址,其中包括通信的端口和IP地址,然后实现组件之间和内部子服务之间的通信。
1. Nova
Nova是OpenStack计算的弹性控制器,也是整个云平台最重要的组件。其功能包括运行虚拟机实例、管理网络以及通过用户和项目来控制对云的访问。OpenStack云实例生命期所需的各种动作都将由Nova进行处理和支撑,这就意味着Nova以管理平台的身份登场,负责管理整个云的计算资源、网络、授权及测度。虽然Nova本身并不提供任何虚拟能力,但是它将使用libvirt API与虚拟机的宿主机进行交互。Nova通过自身的API对外提供处理接口,而且这些接口与Amazon的Web服务接口是兼容的。
计算服务(Nova)是云平台的工作负载的核心。如果有些云服务的工作中不包括计算,那么它们充其量只代表静态存储,所有动态活动都会涉及一些计算元素。OpenStack的其他组件依托Nova,与Nova协同工作,组成了整个OpenStack云平台。
2. Glance
OpenStack镜像服务器是一套虚拟机镜像发现、注册和检索系统,用户可以将镜像存储到以下任意一种存储中。
l 本地文件系统(默认)。
= S3直接存储。
= S3对象存储(作为S3访问的中间渠道)。
= OpenStack对象存储。
镜像服务Glance主要提供两个服务。
① Glance-API:主要负责接收响应镜像管理命令的Restful请求,分析消息请求信息并分发其所带的命令(如新增、删除、更新等)。默认绑定端口是9292。
② Glance-Registry:主要负责接收响应镜像元数据命令的Restful请求。分析消息请求信息并分发其所带的命令(如获取元数据、更新元数据等)。默认绑定的端口是9191。
3. Neutron
Neutron网络目的是为OpenStack云更灵活地划分物理网络,在多租户环境下提供给每个租户独立的网络环境。另外,Neutron提供API来实现这种目标。Neutron中用户可以创建自己的网络对象,如果要和物理环境下的概念映射的话,这个网络对象相当于一个巨大的交换机,可以拥有无限多个动态可创建和销毁的虚拟端口。
4. Horizon
Horizon是一个用以管理、控制OpenStack服务的Web控制面板,它可以管理实例、镜像、创建密钥对,对实例添加卷、操作Swift容器等。除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例。
5. Cinder
Cinder是OpenStack Block Storage(OpenStack块存储)的项目名称,Cinder的核心功能是对卷的管理,允许对卷、卷的类型、快照进行处理。然而,它并没有实现对块设备的管理和实际服务(提供逻辑卷),而是通过后端的统一存储接口,支持不同块设备厂商的块存储服务,实现其驱动支持并于OpenStack进行整合。Cinder可以支持如NetAPP、SolidFire、华为、EMC和IBM等知名存储厂商以及众多开源块存储系统。
6. Swift
Swift为OpenStack提供一种分布式、持续虚拟对象存储,它类似于Amazon Web Service的S3简单存储服务。Swift具有跨节点百级对象的存储能力。Swift内建冗余和失效备援管理,也能够处理归档和媒体流,特别是对大数据(千兆字节)和大容量(多对象数量)的测度非常高效。
Swift构筑在比较便宜的标准硬件存储基础设施之上,无需采用RAID(磁盘冗余阵列),通过在软件层面引入一致性散列技术提高数据冗余性、高可用性和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。在OpenStack中,Swift主要用于存储虚拟机镜像,用于Glance的后端存储。在实际运用中,Swift的典型运用是网盘系统,代表是“Dropbox”,存储类型大多为图片、邮件、视频和存储备份等静态资源。
另外还有Heat和Cellometer组件。
五.部署
1.基础环境配置
1)ip地址配置
Controller节点修改部分:
cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
compute节点修改部分:
cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
2)上传镜像
上传XianDian-IaaS-v2.2.iso和CentOS-7-x86_64-DVD-1511.iso两个镜像包至controller节点/root目录中,并将ISO文件挂载至/opt/目录中。
# ll
# mkdir /opt/centos7.2
# mkdir /opt/sxt
# mount /root/CentOS-7-x86_64-DVD-1511.iso /opt/centos7.2/
# mount /root/XianDian-IaaS-v2.2.iso /opt/sxt/
(3)配置YUM源文件
controller节点:
# rm -rf /etc/yum.repos.d/CentOS-*
# cat > /etc/yum.repos.d/local.repo <<EOF
> [centos]
> name=centos
> baseurl=file:///opt/centos7.2
> gpgcheck=0
> enabled=1
> [sxt]
> name=sxt
> baseurl=file:///opt/sxt/sxt-repo
> gpgcheck=0
> enabled=1
> EOF
compute节点:
# rm -rf /etc/yum.repos.d/CentOS-*
# cat > /etc/yum.repos.d/local.repo <<EOF
> [centos]
> name=centos
> baseurl=ftp://192.168.100.0/centos7.2
> gpgcheck=0
> enabled=1
> [sxt]
> name=sxt
> baseurl=ftp://192.168.100.0/sxt/sxt-repo
> gpgcheck=0
> enabled=1
> EOF