《OpenStack实战指南》—— 1.6 体验OpenStack

简介:

本节书摘来自华章出版社《OpenStack实战指南》一 书中的第1章,第1.6节,作者:黄 凯 毛伟杰 顾骏杰 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.6 体验OpenStack

1.6.1 初探OpenStack

由于OpenStack安装过程时间较长且复杂,并且构建不同的云环境可以选择各种各样的排列组合方式,为了避免初学者在较长时间的安装过程中失去对OpenStack的探索热情,因此,我们先来认识一下OpenStack的用户界面,从感官角度来见识一下它。
OpenStack的用户界面由两部分组成:一是Web界面,二是Shell界面。Horizon负责展现Web仪表盘,用户可以通过浏览器直接操作、管理、运维OpenStack的一些功能。由于OpenStack项目队伍不断壮大,Dashboard并不能展现所有的OpenStack功能,因此,最新的功能一般会先开发Shell命令行,也就是将CLI(Command Line Interface)提供给Linux用户操作。
通过浏览器输入仪表盘的地址,可以看到如图1-4所示的登录界面。OpenStack仪表盘可以安装在任意节点,我们通常都将其安装在Nova API的管理节点,以方便访问。Horizon和Nova-Client一样,需要Keystone的用户名及密码认证,以及Keystone的Token进行授权访问。这些都是Horizon内部实现的,普通用户只要有用户名及密码就能登录到仪表盘中进行日常操作。让我们先登录到OpenStack的仪表盘中,为了方便演示,使用admin用户。

9b299b2c927b190584b2029cea67d3a97a62fca4

登录到控制面板,可以发现有管理员视图(仅管理员可见)和项目视图(仅可以操作当前用户所授权的项目)。目前的仪表盘已经进行了国际化,可以使用熟悉的中文来管理“云”。管理员用户可以从整体视角来观察“云”的一举一动,可以看到整个资源池的大小状况,以及健康状况。如果资源不够使用,那么可以以人工方式进行干预。目前,因为OpenStack的Auto Scaling并不尽如人意,所以一些工作只能通过人工干预的方式进行。
OpenStack的仪表盘左侧是导航栏,如图1-5所示。在OpenStack的图标下可以看到两个维度:项目和管理员。这两个维度下面分别有各自的服务菜单。项目维度可以从概览(Overview)、实例(Instances)、卷(Volumes)、镜像和快照(Image&Snapshots)、访问和安全(Access&Security)几个方面来管理“云”。管理员维度有概览(Overview)、实例(Instances)、卷(Volumes)、套餐(Flavors)、镜像(Images)、项目(Project)、用户(Users)、系统信息(System info)。项目维度和管理员维度内容有交叉,但是这些是从不同角度去观察“云”所得到的结果。在“云”环境中,很多时候需要从不同的维度去观察。从多维角度观测,才能得到想要的全部信息。
screenshot

1.6.2 创建OpenStack虚拟机实例

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

当单击“Launch Instance”时,会弹出模态窗口,在此可进行创建实例的具体配置,具体包括实例的细节(Details)、访问和安全(Access&Security)、磁盘配置(Volume Options),以及实例启动后的自定义初始化脚本(Post-Creation)。
实例细节的配置包括了实例的来源类型(镜像文件或快照文件)、镜像模板、实例名、套餐、创建实例个数。右侧还列出了更详细的信息,供管理员参考当前实例的创建对整个项目有何影响。
访问和安全包括虚拟机SSH密钥的设置及安全组的设置。磁盘配置可以让用户选择是否在卷存储上进行虚拟机的启动引导(boot)。自定义初始化脚本主要是实例在启动后,可以运行一些用户自定义的脚本。除了实例的细节设置,其他设置如果没有特殊需求,默认即可。当确认一切设置无误后,可以单击“Launch”按钮进行实例创建。
创建OpenStack虚拟机实例前有很多先决条件,如Horizon本身能正常运行并对外提供创建服务;建立在OpenStack三个核心组件之上等。这三个核心组件分别是Keystone、Glance、Nova。Keystone负责授权认证、租户管理、项目权限和配额以及服务目录管理。Glance负责为Nova提供创建实例所需要的镜像文件,这种镜像文件可以包含很多格式,大多数都是我们常见的镜像格式,如raw、qcow2。Nova负责虚拟机生命周期的管理,以及宿主机资源调度。Nova还决定了虚拟机实例建立在哪一台Hypervisor物理机之上。由这三个核心组件协作,Horizon将用户的HTTP请求转换为RESTful请求,然后将RESTful请求分发给Nova API,进行实例创建。当创建后,虚拟机实例会进入Build状态,任务状态将是Spawning。这期间会将镜像文件从Glance中下载到Nova节点,并进行一些虚拟机的配置。当一切正常后,虚拟机将会进入Active状态,此时用户可以享受“云”带来的便捷,如
图1-7所示。创建所需的时间一般由创建实例的镜像文件大小、传输镜像图带宽,以及创建的Hypervisor磁盘性能来决定。有时创建过程会持续5~10分钟。
screenshot

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

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

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

1.6.3 创建虚拟机流程概述

本节将介绍创建虚拟机的步骤,如下:
1)Horizon通过Keystone获取Compute组件的访问地址(URL),并获取授权令牌(Token),如图1-10所示。
2)携带授权令牌,发送创建虚拟机指令,如图1-11所示。
screenshot
screenshot

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

4)Glance检索后端镜像,Glance后端存储不一定要使用Swift,只要能存放镜像的文件系统都可以,如图1-13所示。
5)获取网络信息,决定虚拟机网络模式及建立网络连接,如图1-14所示。
6)nova-compute发送启动虚拟机指令,如图1-15所示。
至此,虚拟机创建完成。

1.6.4 创建OpenStack磁盘实例

本节将通过图形界面方式创建磁盘实例。在Dashboard左侧导航栏中,选择“项目”→“Volumes”,然后单击右侧的“Create Volume”按钮,如图1-16所示。
screenshot

screenshot

screenshot

screenshot

创建磁盘实例的过程与创建虚拟机类似,在弹出的“Create Volume”界面中,只需要进行选择,填写表单,就可以获得想要的磁盘,如图1-17所示。
填写完成后,单击“Create Volume”按钮即可进行创建。Volume创建会交由Cinder进行处理,与Nova API类似,Cinder也有Cinder API模块进行RESTful处理。这些过程与虚拟机实例创建类似,都需要经过Keystone认证,然后交由Cinder组件进行具体调度、创建工作,Horizon则将这一过程展现给用户,如图1-18所示。
screenshot

screenshot

创建完磁盘后,可以将这块磁盘挂载到虚拟机实例上,供虚拟机实例使用。这一挂载操作并不像传统的磁盘挂载方式,虽然原理不变,但其操作模式及服务模式发生了变化,用户只需要单击界面进行设置就可以完成这一系列操作。单击磁盘管理界面中的“Edit Attachments”按钮就可以进行挂载操作,如图1-19所示。
screenshot

挂载后,磁盘管理界面将显示挂载的详细信息。通过virt-manager图形工具查看虚拟机即可看到第二块挂载的磁盘,如图1-20所示。这块磁盘是热挂载形式,不需要虚拟机实例停止运行。
screenshot

1.6.5 创建块存储流程概述

现在来了解一下创建块存储的流程,如下:
1)Horizon通过Keystone获取Cinder组件的访问地址(URL),并获取授权令牌(Token),如图1-10所示。
2)携带授权令牌,发送创建块存储指令,如图1-21所示。
3)携带令牌,发送挂载块存储指令,如图1-22所示。
4)nova-compute组件发送RPC指令以通知Cinder挂载块设备,如图1-23所示。
screenshot

screenshot

screenshot

相关实践学习
基于EBS部署高性能的MySQL服务
如果您通常是通过ECS实例部署MySQL来使用数据库服务,您可以参考本实验操作来搭建高性能的MySQL服务。本实验为您演示如何通过EBS ESSD云盘部署一个高性能的MySQL服务。
相关文章