2分钟

实验背景

实验预计耗时:120分钟

1. 课程背景

1.1 课程目的

本课程的主要目的是帮助云运维从业者或云架构师快速掌握OpenStack私有云的搭建,理解云平台架构运作原理,以及站在用户视角如何基于云平台便捷的申请创建云资源的方法。

1.2 课前知识准备

1.相关概念

【云计算相关】

  • 虚拟化:指的是通过虚拟化技术将一台物理计算机虚拟成多台逻辑计算机的方法。每台逻辑计算机各有独立的虚拟化操作系统,基于逻辑计算机运行的应用程序相互独立互不影响。
  • 云计算:云计算是一种按量付费的模式,用户可以通过网络的方式按需购买和使用计算资源共享池内(网络、服务器、存储、应用软件等)的资源,而只需要很少的管理工作或与供应商做很少的交互即可。
  • 软件定义网络:软件定义网络(SDN)是一种数据平面与控制分离、软件可编程的新型网络体系架构,在OpenStack架构中,基于软件定义网络的思想,定义虚拟路由器、虚拟网桥等资源,实现虚拟机与虚拟机之间的网络通信。
  • 私有云:云计算在企业环境下的部署,通常认为有公有云、私有云和混合云,其中私有云指的是客户在企业数据中心的防火墙内部部署云设施资源,专供企业内部使用,不对外提供云服务,客户对云相关所有资源具有完全的控制权限,属于企业专有的资源。

【Linux相关】

  • CentOS:CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定放出的源代码编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS完全开源。

【OpenStack相关】

  • OpenStack:诞生于2010年由NASA和Rackspace合作发起,一系列软件开源项目的组合,一套完整的开源云计算管理平台项目,通常被企业用于构建一套完整的私有化IaaS云解决方案。OpenStack的开源版本按照A、B……的顺序进行排列,从初始的两个模块,发展至今大大小小有几十个之多,具体的版本及模块请参考:https://releases.openstack.org/ ,最核心的几个模块如下表所示:

模块

功能描述

Keystone

整个OpenStack的注册表,用户账号的认证核心,其他各服务都需要在keystone中注册自己的endpoint,便于各个组件之间的相互访问

Neutron

提供网络管理的组件,管理整个OpenStack架构中的网络通信

Nova

管理虚拟机实例生命周期的组件

Glance

提供镜像注册管理的功能

Cinder

块存储组件,为云上虚拟机实例提供块存储卷服务

Swift

对象存储组件,为云上镜像等资源提供对象存储的空间

Horizon

提供dashboard图形化面板服务

Heat

在OpenStack中提供编排服务的功能

Ceilometer

在OpenStack中提供监控和计量的功能

2.相关原理

  • OpenStack架构模块运作原理(这里选取OpenStack最核心的几个模块进行介绍)
1-1 OpenStack架构图

OpenStack架构原理描述:

这里以用户通过Dashboard或CLI的方式创建一台虚拟机发起申请开始,介绍OpenStack各个模块间相互协作的流程,这里重点讲解Nova组件:

(1)用户通过Dashboard或CLI的方式登录OpenStack平台,向keystone组件发起验证请求;

(2)经keystone组件验证通过后用户登录OpenStack平台,并获取用户的token权限凭据;

(3)用户向Nova组件发起创建虚拟机实例创建的请求,将用户凭据和请求一并发送给Nova组件;

(4)Nova组件中的Nova-api模块收到创建虚拟机请求后,将用户token发送给keystone组件进行验证;

(5)keystone收到请求后,校验用户token的合法性,并把验证通过的结果返回给Nova-api模块;

(6)Nova-api模块向Nova的DB写入发起创建虚拟机请求的信息;

(7)数据写入成功后,将结果返回给Nova-api模块;

(8)Nova-api模块发起创建虚拟机的任务,发送至消息队列中等待被其他模块消费;

(9)Nova-scheduler模块从消息队列中获取Nova-api模块下发的任务消息,并进行处理;

(10)Nova-scheduler模块向Nova数据库查询OpenStack集群中处于ready状态的计算节点列表;

(11)Nova数据库把数据查询结果返回给Nova-scheduler组件;

(12)Nova-scheduler组件根据虚拟机资源调度算法从节点列表中选取负载低且满足创建要求的计算节点信息,把创建虚拟机请求发送给消息队列;

(13)指定计算节点上的Nova-compute模块从消息队列中获取创建虚拟机实例的请求,并检查当前节点的状态;

(14)Nova-compute模块把节点满足创建虚拟机请求的消息发送给消息队列,这里为了安全性考虑,在计算节点上的Nova-compute组件不与Nova的数据库直接交互;

(15-18)Nova-conductor从消息队列中获取来自Nova-compute模块的消息,跟Nova数据库交互,最后把消息写入到数据库中;

(19)Nova-compute模块要创建虚拟机,需要有镜像,网络和存储资源支撑,这里首先向Glance组件发起镜像创建请求(含用户的token);

(20)Glance组件收到来自Nova-compute请求后,先验证用户的token,鉴权通过后,将结果返回给Glance,Glance组件查询已注册的镜像列表;

(21)Glance组件把Nova-compute需要的镜像发送给Nova-compute模块;

(22-27)同样的,Nova-compute模块创建虚拟机还需要网络资源和块存储卷的资源,分别由Neutron和Cinder组件提供,当然这里也会伴随类似Glance组件向keyston组件验证用户token的过程;

(28)当Nova-compute模块获取创建虚拟机所需各种资源后,向底层的Hypervisor层发起创建虚拟机的请求,底层的虚拟化软件创建虚拟机,并将创建好的虚拟机结果返回给前端用户,用户就能看到正在孵化(spawn)中的虚拟机实例。

3.相关命令介绍

【Linux相关命令】

  • 使用yum安装packstack工具:
yum -y install openstack-packstack
  • 使用packstack工具allinone安装OpenStack平台:
packstack --allinone
  • 创建目录:mkdir <目录名>
  • 跳转到指定目录:cd <目录名>
  • 使用Vim编辑器创建/打开文件:vim <文件名>

【Vim相关命令】

  • 进入编辑模式,在当前字符前插入光标:i
  • 进入命令行模式:ESC
  • 保存并退出文件(命令行模式下)::wq