OpenStack系统架构设计实战
上QQ阅读APP看书,第一时间看更新

1.3 OpenStack入门体验

1.3.1 初探OpenStack

由于OpenStack安装过程时间较长且复杂,并且构建不同的云环境可以选择各种各样的排列组合方式,为了避免初学者在较长时间的安装过程中失去对OpenStack探索的热情,我们先来认识一下OpenStack的用户界面,以便对它有个感性认识。

OpenStack的用户界面由两部分组成:一是Web界面,二是Shell界面。Horizon负责展现Web仪表盘,用户可以通过浏览器直接操作、管理、运维OpenStack的一些功能。由于OpenStack项目队伍不断壮大,Dashboard并不能展现所有的OpenStack功能,因此,最新的功能一般会先开发Shell命令行,也就是将CLI(Command Line Interface)提供给Linux用户操作。

通过浏览器输入仪表盘的地址,可以看到如图1-9所示的OpenStack登录界面。OpenStack仪表盘可以安装在任意节点处,通常将其安装在Nova API的管理节点处,以方便访问。Horizon与nova-client一样,需要Keystone的用户名及密码认证,以及Keystone的Token进行授权才能访问。这些都是在Horizon内部实现的,普通用户只要有用户名及密码就能登录仪表盘进行日常操作。这里,先登录OpenStack的仪表盘,为了方便演示,可使用admin用户。

图1-9 OpenStack登录界面

登录控制面板,可以发现有管理员视图(仅管理员可见)和项目视图(仅可以操作当前用户被授权的项目)。目前的仪表盘已经进行了国际化,中国用户可以使用熟悉的中文来管理“云”。管理员用户可以从整体视角来观察“云”的一举一动,可以看到整个资源池的大小状况及健康状况。如果资源不够用,那么可以以人工方式进行干预。目前,因为OpenStack的Auto Scaling还不尽如人意,所以一些工作只能通过人工干预的方式进行。

OpenStack界面的左侧是导航栏,如图1-10所示。在OpenStack的图标下可以看到两个选项:项目和管理员。这两个选项下面分别有各自的服务菜单。项目选项可以从概览(Overview)、实例(Instance)、卷(Volume)、镜像和快照(Image&Snapshots)、访问和安全(Access&Security)几个方面来管理“云”。管理员选项下有概览、实例、卷、套餐(Flavor)、镜像(Image)、项目(Project)、用户(User)、系统信息(System info)。项目选项和管理员选项中的内容有交叉,但是这些是从不同角度去观察“云”所得到的结果。在“云”环境中,很多时候需要从不同的角度去观察。从多角度观测,才能得到想要的全部信息。

图1-10 OpenStack界面

1.3.2 创建OpenStack虚拟机实例

在Dashboard左侧导航栏中,选择“项目”→Instances,然后单击Launch Instance,便可通过图形界面方式来创建虚拟机,如图1-11所示。

图1-11 创建虚拟机界面

当单击Launch Instance时,会弹出模态窗口,在此可进行创建实例的具体配置,包括实例的细节(Detail)、访问和安全(Access&Security)、磁盘配置(Volume Option),以及实例启动后的自定义初始化脚本(Post-Creation)。

实例细节的配置包括了实例的来源类型(镜像文件或快照文件)、镜像模板、实例名、套餐、创建实例个数。右侧还列出了更详细的信息,供管理员3种当前实例的创建对整个项目有何影响。

访问和安全包括虚拟机SSH密钥的设置及安全组的设置。磁盘配置可以让用户选择是否在卷存储上进行虚拟机的启动引导(Boot)。自定义初始化脚本主要是实例在启动后,可以运行一些用户自定义的脚本。除了实例的细节设置,如果没有特殊需求,其他设置默认即可。当确认一切设置无误后,可以单击Launch按钮进行实例创建。

创建OpenStack虚拟机实例前有很多先决条件,如Horizon本身能正常运行并对外提供创建服务;建立在OpenStack三个核心组件之上等。这3个核心组件是Keystone、Glance、Nova。Keystone负责授权认证、租户管理、项目权限和配额以及服务目录管理。Glance负责为Nova提供创建实例所需要的镜像文件,这种镜像文件可以包含很多格式,大多数都是常见的镜像格式,如raw、qcow2。Nova负责虚拟机生命周期的管理,以及宿主机资源调度。Nova还决定了虚拟机实例建立在哪一台Hypervisor物理机之上。由这3个核心组件协作,Horizon将用户的HTTP请求转换为RESTful请求,然后将RESTful请求分发给Nova API,进行实例创建。当创建后,虚拟机实例会进入Build状态,任务状态将是Spawning。这期间会将镜像文件从Glance下载到Nova节点,并进行一些虚拟机的配置。当一切正常后,虚拟机将会进入Active状态,此时用户可以享受“云”带来的便捷。创建所需的时间一般由创建实例的镜像文件大小、传输镜像图带宽,以及创建的Hypervisor磁盘性能来决定。有时创建过程会持续5~10min。

Horizon并不是唯一可以管理虚拟机的用户界面。OpenStack还有基于Python的CLI,虚拟机创建之后可以通过nova-client进行管理。通过命令行输入Nova list,可以看到所有OpenStack实例的运行情况,以及实例相应的信息。后面在讲解Nova组件时,将详细讲解各种命令的操作及命令之间的关联关系,以及如何实现自定义命令、命令行扩展,还有如何运用好一系列OpenStack命令来进行日常的管理、运维操作。

当虚拟机创建成功后,双击虚拟机名,进入这个虚拟机视图进行详细观察,如图1-12所示。可以看到标签页,包括概览(Overview)、日志(Log)、控制台(Console)。概览中可以看到虚拟机的一系列详细信息。日志中可以看到虚拟机当前的启动引导日志,不用登录虚拟机就可以看到虚拟机的引导情况,可检查是否有错误或者异常发生。通过控制台界面可以对虚拟机进行操作。这是一个VNC控制台,不必像以前使用虚拟机那样,登录到Hypervisor端配置VNC端口信息,然后再通过VNC Client登录管理虚拟机。OpenStack将这些日常操作抽象出来,进行自动化,整个过程无须用户进行任何配置,当构建好OpenStack云后,剩下的事就交给OpenStack来做。

图1-12 虚拟状态展示

单击More按钮,可以进行更多的操作,可以对虚拟机实例进行一些操作,这些操作包括启动、停止、挂起、激活、快照、迁移、备份、诊断、恢复、重建、销毁等一系列虚拟机生命周期管理。这些操作都由Nova提供,部分操作会有其他组件参与。对于OpenStack这样的一个分布式系统,完成一件事,基本上都会涉及一系列的组件。这些组件协同工作,在“云”中扮演着各种角色。之后我们将具体探讨这些组件在OpenStack中扮演什么样的角色,哪些组件必不可少,以及如何通过各种组件的排列组合来组建合适的“云”。

1.3.3 创建虚拟机的流程概述

创建虚拟机的步骤如下:

1)Horizon通过Keystone获取Compute组件的访问地址(URL),并获取授权令牌(Token)。

2)携带授权令牌,发送创建虚拟机指令,如图1-13和图1-14所示。

3)nova-compute组件通过glance-api下载虚拟机镜像,Glance镜像中有缓存机制,通常将缓存文件放入名为_base的目录中(base缓存),如图1-15所示。镜像分两个阶段,第一个阶段是:如果base缓存中没有此次的虚拟机镜像文件,则从Glance下载镜像到base缓存;第二个阶段是:从base缓存复制到本地镜像目录。base缓存可关闭,默认为开启。建议不要修改此默认值,因为如果每次镜像都通过Glance下载,会消耗大量的网络带宽。base缓存的存在就是为了解决虚拟机镜像文件传输消耗带宽的问题。

图1-13 创建虚拟机的流程1

图1-14 创建虚拟机的流程2

图1-15 创建虚拟机的流程3

4)Glance检索后端镜像,Glance后端存储不一定要使用Swift,只要能存放镜像的文件系统就可以,如图1-16所示。

5)获取网络信息,决定虚拟机网络模式及建立网络连接,如图1-17所示。

6)nova-compute发送启动虚拟机指令,如图1-18所示。

图1-16 创建虚拟机的流程4

图1-17 创建虚拟机的流程5

图1-18 创建虚拟机的流程6

至此,虚拟机创建完成。