在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中扮演什么样的角色,哪些组件必不可少,以及如何通过各种组件的排列组合来组建合适的“云”。