参考资料:
OpenStack入门科普,看这一篇就够啦!:https://zhuanlan.zhihu.com/p/35598437
不懂OpenStack?看这篇就够了!:https://zhuanlan.zhihu.com/p/151323403
为何OpenStack在国内这么受欢迎?:https://zhuanlan.zhihu.com/p/52696122
《OpenStack 实战指南》黄凯 毛伟杰 顾骏杰著
OpenStack 是当今最流行的开源云平台管理项目,可以控制整个数据中心计算、存储和网络资源的大型资源池。从它的名字可以看出它大致的含义,Open 顾名思义为开源软件,开放式的设计理念、开放式的开发模式、开放式的社区,Stack 意为堆,可以理解为云计算是靠每一块小瓦砾堆砌而成,也就是说 OpenStack 并不是单独的一个软件,它由多个组件一起协作完成某些具体工作。OpenStack 本身就是一个巨大的开源软件集合,集各种开源软件之大成,是公有云和私有云领域开发的两种旧解决方案的综合。
OpenStack 的优势:
OpenStack 的劣势:
OpenStack 的硬件组成:
OpenStack 的设计原则如下:
OpenStack 的组件主要包括身份认证(代号 Keystone)、计算(代号 Nova),网络管理(代号 Neutron)、块存储(代号 Cinder)、对象存储(代号 Swift)、镜像服务(代号 Glance)和 UI 服务(代号 Horizon)以及其他多种可选组件。
组件按照服务类型的不同可以分为如下四类:
基础服务:实现 OpenStack 基本功能所需部署的,提供基础功能的组件。
OpenStack 基础服务 | OpenStack 组件名称 | 描述 |
---|---|---|
Dashboard | Horizon | 以 web 形式界面提供用户界面与 openstack 各个组件实现交互,例如创建虚拟机,创建虚拟硬盘等等 |
Compute | Nova | 负责 openstack 平台上所有计算实例(虚拟机)的生命周期的管理,例如虚拟机的创建,销毁和配置更改等,可以支持多种类型的虚拟化解决方案。 |
Networking | Neutron | 管理整个 openstack 环境中的虚拟网络,例如创建网络,虚拟路由器,虚拟防火墙等等,是一个纯原生的 SDN 解决方案。 |
存储服务:顾名思义,就是与数据存储相关的部件。OpenStack 支持多种数据存储方式。包括对象存储、块存储、共享文件等等。
OpenStack 存储服务 | OpenStack 组件名称 | 描述 |
---|---|---|
Object Storage | Swift | 负责为整个 openstack 平台的计算示例提供对象存储服务,例如实例镜像即可存放于对象存储中。 |
Block Storage | Cinder | 负责为整个 openstack 平台的计算示例提供块存储服务,即我们通常时候用到的磁盘设备,可以支持 tvm 或者磁阵等多种后端存储类型,可以支持 IPSAN 或着 FCSAN 等不同的存储网络协议。 |
Shared Filesystem | Manila | 负责为整个 openstack 平台的计算示例提供共享文件系统服务,例如 NFS 等需要多个实例同时访问的分布式存储系统。 |
共享服务:包括为其他组件提供公共服务的组件。
OpenStack 共享服务 | OpenStack 组件名称 | 描述 |
---|---|---|
Identity Service | Keystone | 为 openstack 平台提供认证和授权服务,openstack 中各个组件的互相访问均需要通过 openstack 授权。 |
Image Service | Glance | 为 openstack 平台的计算实存储和提供虚拟机镜像,在创建新的虚拟机实例的时候会用到这个服务。 |
Telemetry | Ceilometer | 为整个 openstack 云平台提供监控,计景,计费,统计等功能。 |
后台服务:平台需要的服务支撑,对用户是透明的。
OpenStack 后台服务 | OpenStack 组件名称 | 描述 |
---|---|---|
SQL Database | Mariadb | Openstack 整个平台的后台核心数据库,存储所有组件的相关配置以及元数据信息。 |
Message Queue | RabbitMQ | Openstack 使用消息列队来协调各个服务组件之间的操作和状态信息。 |
Cache | Memcached | Openstack 使用 Memcached 来为 Keystone 认证服务提供 tokens 的缓存。 |
OpenStack 组件项目有如下一些共同点:
OpenStack 组件特点:
OpenStack 是由一系列具有 RESTful 接口的 Web 服务所实现的,是一系列组件服务集合。它是一个构建云环境的工具集,所有的 OpenStack 组件都可以单独部署,而组件中的模块也可以单独部署。OpenStack 领先的分布式架构,可以让部署人员以类似搭积木的方式,按需求选取所需要的组件,灵活地构建云环境。
OpenStack 项目并不是单一的服务,其含有子组件,子组件内由模块来实现各自的功能。通过消息队列和数据库,各个组件可以相互调用,互相通信。这样的消息传递方式解耦了组件、项目间的依赖关系,所以才能灵活地满足我们实际环境的需要,组合出适合我们的架构。