引子 想要明白Openstack Nova是怎么工作的,先要明白Openstack及Nova是干什么的?
先看看百度百科介绍:
OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。
计算(Compute):Nova。一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。自Austin版本集成到项目中。
可以看出, Openstack是IaaS的管理平台,注意这里的管理,这意味着它不是实现平台, 所有功能的实现, 是通过其它的工具来实现的, Openstack完成的工作,只是管理。这个很重要, 因为只有这样才能更好地去理解它要做什么。
创建虚拟机
既然是IaaS, 那么它主要的工作就是建立虚拟机以及虚拟机之间的连接。
首先如果不用Openstack,应该怎样去创建一个虚拟机。这里方法有很多,各个平台也会有不同的方法,现在以linux命令行为例子。
qemu-system-i386 img1.cow
这是一个创建虚拟机的最简单的方式,它使用img1.cow为硬盘启动一个vCPU的虚拟机。
那如果是用Openstack, 怎么样去创建一个虚拟机呢?当前Openstack提供了三种方法.
- RESTful风格的API
- nova的命令行工具
- HTTP的GUI界面
不管用那种方法,他们的步骤过程其实都差不多。
- 使用用户名及密码去Keystone进行认证,获得命令执行的权限
- 选择IMAGE, 也就相当于选择操作系统
- 选择对应的CPU,内存,硬盘等相关配置的Flavor(这些配置的集合)
- 选择网络
- 使用之前的参数创建虚拟机
可以看出,以上的步骤并不简单,比用命令行的方式要复杂很多, 那么问题来了,既然这么复杂, 为什么还要用呢?而且还有这么多的企业及爱好者去开发。
Why
首先想象下,如果你是一个提供IaaS服务公司的职员,现在公司有1000台服务器对外提供服务,你的工作就是对这些机器进行管理以及客户操作的管理。
Case 1
客户需要申请一台2个vCPU, 4G内存, 100G硬盘及1M的宽带的虚拟机。
- 在1000台服务器中找出能满足需求的一台服务器
- 在对应的服务器上配置对应的网络
- 创建对应的虚拟机,并且通知客户
看起来虽然只有三步,但是要在1000台找出一台满足需求的,这事也就只能是想想了。
Case 2
客户的服务器因为扩容问题,需要调整服务器的配置。
这个问题其实和Case1差不多, 只是可能会多出一步迁移的过程
这里只列出这两个简单的Case,虽然简单,但也大概可以看出Nova要干些什么, 也知道为什么要这样做。
What
从前面的两个简单Case, 我们大概可以看出需要做些什么
- 物理服务器的管理
- 服务器的选择
- 虚拟机的创建、开机、关机、挂起、暂停、调整、迁移等操作