根据相关资料整理 OpenStack 的相关概念。

OpenStack 的定义

以下内容翻译自 Openstack 官网

OpenStack 是一个开源的云操作系统,可以通过具有通用身份验证机制的 API 进行管理和配置,来控制整个数据中心的大量计算、存储和网络资源池。

OpenStack 提供了一个仪表板,可以让管理员进行控制,同时授权其用户通过 Web 界面配置资源。

OpenStack 还提供了编排、故障管理和服务管理等等其他服务,以确保用户应用程序的高可用性。

OpenStack 组件概览

图片来源于官网:

OpenStack landscape

下面只关注部分组件的功能,大部分内容翻译自 OpenStack Tutorial

  • Nova:基本计算引擎,管理着大量处理计算任务的虚拟机和其他实例。
  • Swift:提供对象存储的组件。
  • Cinder:提供块存储的组件。
  • Neutron:提供网络功能的组件,确保每个组件都与其他组件良好连接,从而在它们之间建立通信。
  • Horizo​​n:仪表板,为系统管理员提供了访问和管理云的所有可能性。
  • Keystone:提供身份验证的组件。
  • Glance:提供映像服务的组件。
  • Placement:实现统一的资源管理。
  • Tempest:提供自动化测试的组件。

OpenStack 的部署

OpenStack 的部署相对比较复杂,可以根据官网的教程。如果只是希望部署一个开发环境来学习 OpenStack,也可以使用官方的自动部署脚本 DevStack

以部署 DevStack 为例,建议运行脚本前进行以下修改:

  • 添加 pypi 镜像:比如设置清华源
  • local.conf 中指定 Git 镜像:比如设置 GIT_BASEhttps://github.com
  • 添加 stack 用户后修改目录访问权限:比如 sudo chmod 755 /opt/stack

如果中途因为网络问题而失败,直接通过 ./unstack.sh && ./stack.sh 再次运行脚本即可。

相关概念的补充说明

云计算模式

云计算的模式主要有三种:IaaS、PaaS 和 SaaS。其中,OpenStack 主要部署为 IaaS 模式。

云计算模式的比较可以用一张图片概括(图片来源于阿里云):

云计算模式的比较

更多资料可以参考 SaaS vs PaaS vs IaaS: What’s The Difference & How To Choose

AMQP

AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是为 MOM(Message-oriented middleware,面向消息中间件)设计的开放标准应用层协议。

更多内容可以参考 RabbitMQ(一):RabbitMQ快速入门

REST

REST(Representational State Transfer,表述性状态传递)是一种软件架构风格,可以降低开发的复杂性,提高系统的可伸缩性。

更多内容可以参考 rest api 介绍

RPC

RPC(Remote Procedure Call,远程过程调用)是相对于本地过程调用而言的,能像调用本地函数一样调用远程函数的协议。

更多内容可以参考谁能用通俗的语言解释一下什么是 RPC 框架? - 洪春涛的回答

ETCD

ETCD 是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。

更多内容可以参考 ETCD 简介 + 使用

Django

Django 是一个 Python Web 框架,采用了 MVT 的软件设计模式,即模型(Model),视图(View)和模板(Template),被 Horizon 组件所使用。

更多内容可以参考 Django 教程

个人理解

OpenStack 是由 Python 编写的一系列工具的集合,它是由若干个项目组成的。OpenStack 社区也是仅次于 Linux 的第二大开源社区。

OpenStack 的各个组件并不是直接操控计算机系统的,而是借助于各种系统工具、函数库来管理计算机系统。相当于在现有操作系统上再进行了一层封装,来实现对多个计算机系统的管理。

OpenStack 对内使用 AMQP 进行调用,对外则提供 REST API。