随着云计算技术不断发展,IaaS 层云平台已经成为私有云建设的核心底座。OpenStack 作为开源的云计算管理项目,能够实现计算、存储、网络、镜像、身份认证等资源的统一调度与管理,也是理解云平台底层原理非常经典的学习对象。
之前我陆续记录过 OpenStack 各组件部署与实操的系列博客,时隔一段时间,我将重新从云计算(Cloud Computing)的视角梳理 OpenStack 完整知识体系。本系列文章会从基础概念入手,结合原理、架构、实操,一步步拆解 OpenStack 各个核心服务,记录学习过程中的理解、踩坑与实践,方便后续复盘查阅,也希望可以给正在学习云计算的同学提供参考。
本章主要讲述OpenStack的起源、版本演进及其作用,同时会介绍OpenStack的整体架构组成,概述其核心组件,最后阐述OpenStack与虚拟化、云计算的区别。
1、openstack起源
2006 年亚马逊推出AWS(EC2->对象存储),正式开启云计算的新纪元;
2010 年 7 月美国国家航空航天局(NASA)与 Rackspace 合作,共同宣布 OpenStack 开放源码计划,由此开启了属于 OpenStack 的时代;
OpenStack 从诞生之初对标 AWS,一直在向 AWS 学习,同时开放接口去兼容各种 AWS 服务。
什么是openstack?
openstack即Cloud OS(云操作系统),是虚拟机、裸金属和容器的云基础架构;对下openstack可控制整个数据中心的大型计算、存储和网络资源池(管理控制资源);对上所有的资源都可以通过API和WEB界面进行控制(提供服务)。
2、openstack工作原理
OpenStack 实际上由一系列叫作脚本的命令(使用Python编写)组成。 这些脚本会被捆绑到名为项目的软件包中,这些软件包则用于传递创建云环境的任务,为了创建这些环境,OpenStack还会使用 2 种其他类型的软件:
■ 虚拟化软件(SDC-软件定义计算、SDS-软件定义存储、SDN-软件定义网络),用于创建从硬件中抽象出来的虚拟资源层;
■ 基础操作系统(OS),用于执行 OpenStack 脚本发出的命令;
OpenStack本身不会虚拟化资源,但会使用虚拟化资源来构建云;OpenStack、虚拟化和基础操作系统,这3种技术协同工作服务用户
3、开源openstack版本演练
openstack每年会有两个大版本,一般会在4月和10月中旬发布,版本命名从A-Z

在2023年已经进入了第二轮版本命名的更新(重新从A开始)。
4、openstack设计理念
开放:开源,尽最大可能会重用已有开源项目
灵活:架构可裁剪,大量使用插件化方式进行架构设计与实现(使用者可选择性部署自己所需要的组件)
可扩展:由多个独立项目组成,每个项目包含多个独立服务组件,无中心架构(所有组件使用网状结构进行通信,不依赖某个程序,各个组件通过服务api进行通信),无状态架构。
5、openstack与虚拟化
OpenStack不是虚拟化,OpenStack只是系统的控制面,不包括系统的数据面组件,如Hypervisor、存储和网络设备等;
虚拟化是OpenStack底层的技术实现手段之一,但并非核心关注点;
两者区别:
虚拟化(代表:KVM、QEMU、VMware‑ESXi)
作用:做硬件资源抽象 ,把一台物理服务器的 CPU、内存、硬盘,切割成多台独立虚拟机。
能力:只负责单台 / 少数机器的虚拟出来,创建虚拟机、销毁虚拟机。
局限:本身没有大规模集群管理、租户、配额、统一页面 API。如果你几十上百台机器,手动管理非常麻烦。
简单比喻:厨师,负责把食材(物理硬件)做成一份份饭菜(虚拟机)
OpenStack
OpenStack本身不能产生虚拟机 ,它自己不实现虚拟化。
作用:它是调度管理层 :调用底层 KVM 等虚拟化软件,批量管理成千上百台服务器上的虚拟机、存储、网络。
能力:提供租户、项目、配额、API、Web 界面,对外提供完整云平台能力
比喻:餐厅经理,不亲自做饭,指挥厨师(虚拟化)去做菜,管理整个餐厅业务、接待客户
总结:openstack更像是虚拟化的上级,接收到用户请求后下发命令,由虚拟化进行实际操作,同时虚拟化软件的生命周期也由openstack进行监控和管理。
6、openstack与云计算
首先要明白,openstack虽然很强大,但它只是用于构建云计算的关键组件:内核、骨干、架构、总线...
为了构建真正的云计算,我们还需要例如:云控制台、云服务、云运营服务、云运维服务等一系列工具,这些服务也是目前各云厂商的主要自研产品,一个真正的云计算产品应有以下图片中的各个服务共同组成:
