Openstack nova(二)——架构(一)

来源:互联网 发布:网络侦探杰斯兽 编辑:程序博客网 时间:2024/05/17 03:21

架构源自需求

需求分析

软件架构大部分都来自于需求,可以说,有什么样的需求,就会有什么样的架构, 虽然不同时期,不同的人来实现,可能不完全一样。但是总体来说, 架构不会相差太远。

现在假设如果需要自己来实现一个类似Openstack这样功能的软件,会是什么样的呢?

首先,还是再看看前一章中总结的最简单的需求

  1. 物理服务器的管理
  2. 服务器的选择
  3. 虚拟机的创建、开机、关机、挂起、暂停、调整、迁移等操作

物理服务器的管理

要对物理服务器进行管理, 至少要满足以下几个条件

  1. 要有一台做管理用的服务器
  2. 每台服务器至少可以和管理服务进行网络通信
  3. 管理服务器有能力对服务进行一些操作管理

通过上述的分析,通信时至少需要一种通信协议,但为了满足更多的需求,可以考虑支持多种协议, 远程的管理需要远程调用功能。

服务器的选择

同样, 要根据客户的不同配置来选择服务, 至少需要满足以下几个条件

  1. 能够获取服务器的的状态信息, 比如说可用的CPU个数,内在大小, 硬盘大小等
  2. 需要保存服务器的状态信息,作为选择时的输入信息
  3. 需要一些选择过虑的规则

以上的需求,至少需要保存数据的数据库, 和协议有同样的问题,现在的数据库很多,可以考虑支持多种数据库。

虚拟机的创建、开机、关机、挂起、暂停、调整、迁移等操作

在前一章中, 已经强调一点, Openstack只是管理平台,它是不会实现虚拟功能, 还有, 要创建一台虚拟机,至少需要CPU, 内存, 硬件三种硬件,而且虚拟本身就是为提供服务而存在,而现在的大部分服务,都是基于网络服务,所以网络也是必不可少的一种硬件。所以总体的需求大概如下

  1. 各种虚拟化技术的支持管理,目前主流的虚拟化技术如下:
    • Baremetal
    • Docker
    • Hyper-V
    • Kernel-based Virtual Machine (KVM)
    • Linux Containers (LXC)
    • Quick Emulator (QEMU)
    • User Mode Linux (UML)
    • VMware vSphere
    • Xen
  2. 硬盘支持
  3. 网络支持
  4. 镜像支持

隐形需求

  1. 对外的接口,只有对外可操作,才能管理
  2. 用户管理, 不同的用户需要有不同的权限

到此为此, 一些最基本的需求已经出来了。把所有的节点用图表示出来如下:

这里写图片描述

Nova的实现

前面我们从需求的角度出发, 自己分析了如果要满足基本需求, 需要什么样的实现。 那么Nova的真实实现会和我们一样吗?
这里写图片描述

0 0