前言
OpenStack是目前最流行的开源云操作系统,学习和掌握开源OpenStack知识将帮助云计算从业者打好坚实的基础。
本文是HCIP-Cloud Computing-OpenStack认证第一章,帮助读者初步了解OpenStack,为后续的深入学习打下基础。
OpenStack简介
OpenStack定义
OpenStack是开源云操作系统,可控制整个数据中心的大型计算,存储和网络资源池。用户能够通过web界面、命令行或API接口配置资源。
OpenStack社区网站:www.openstack.org
OpenStack和虚拟化、云计算的关系
OpenStack是虚拟化和云计算之间的纽带。
虚拟化提供资源,
OpenStack对外提供服务,同时也可以管理下面这些资源。
-
OpenStack不是虚拟化
- OpenStack的架构定位与技术范畴
OpenStack只是系统的控制面
OpenStack不包括系统的数据面组件,如Hypervisor、存储和网络设备等。 - OpenStack和虚拟化有着关键的区别
虚拟化是OpenStack底层的技术实现手段之一,但并非核心关注点
- OpenStack的架构定位与技术范畴
-
OpenStack不是云计算
- OpenStack只是构建云计算的关键组件
内核、骨干、框架、总线 - 为了构建云计算,我们还需要很多东西
- OpenStack只是构建云计算的关键组件
OpenStack的设计思想
- 开放
- 开源,并尽可能重用已有开源项目
- 不要“重复发明轮子”
- 灵活
- 不使用任何不可替代的私有/商业组件
- 大量使用插件方式进行架构设计与实现
- 可扩展
- 由多个相互独立的项目组成
- 每个项目包含多个独立服务组件
- 无中心架构
- 无状态架构
Apache 2.0 License
约70%的代码(核心逻辑)使用python开发
缺点:开源部分过多,使得系统变得相对比较繁琐。各组件之间的交互理解起来也比较麻烦。如果不熟悉OpenStack,遇到问题排错很难。
OpenStack历史版本
- OpenStack每年两个大版本,一般在4月和10月中旬发布,版本命名从字母A-Z。
OpenStack架构
OpenStack架构图
- 粗体字标识为OpenStack核心服务
- OpenStack的服务分为如下几大类:
- 计算
- 存储
- 网络
- 共用服务
- 硬件生命周期
- 编排
- 工作流
- 应用程序生命周期
- API代理
- 操作界面
- OpenStack服务组件通过消息队列(Message Queue)相互通信。
- OpenStack组件众多,建议重点关注计算、存储和网络服务组件,其他服务可以在实际工作需要时再进行学习。
OpenStack生产环境部署架构示例
- 生产环境中,一般会有专门的OpenStack部署服务节点、控制节点、计算节点、网络节点和存储服务节点等。
- 生产环境的控制节点建议三台以上,其他节点按要求部署。
- 如果只是测试,OpenStack服务可以部署在单节点上。
OpenStack核心服务简介
认证服务Ketstone
- Keystone
认证服务
首次出现在OpenStack的“Essex”版本中。 - 简介
Keystone提供身份验证,服务发现和分布式多租户授权。
Keystone支持LDAP,OAuth,OpenID Connect,SAML和SQL。- LDAP:Lightweight Directory Access Protocol,轻量目录访问协议
- OAuth:Open Authorization,为用户资源的授权提供了一个安全的,开放而又简单的标准。
- OpenID Connect:OpenID和OAuth2的合集。
- SAML:Security Assertion Markup Language,安全断言标记语言,是一个基于XML的开源标准数据格式,它在当事方之间交换身份验证和授权数据尤其是在身份提供者和服务提供者之间交换。
- 依赖的OpenStack服务
不依赖其他OpenStack服务,为其他OpenStack服务提供认证支持。
操作界面Horizon
- Keystone
操作界面
首次出现在OpenStack的“Essex”版本中。 - 简介
Horizon提供基于Web的控制界面,使云管理员和用户能够管理各种OpenStack资源和服务。 - 依赖的OpenStack服务
Keystone
镜像服务Glance
- GLANCE
镜像服务
首次出现在OpenStack的“Bexar”版本中。 - 简介
Glance提供发现、注册和检索虚拟机镜像功能。
Glance提供的虚拟机实例镜像可以存放在不同地方,例如本地文件系统、对象存储、块存储等。 - 依赖的OpenStack服务
Keystone
计算服务Nova
- Nova
计算服务
首次出现在OpenStack的“Austin”版本中。 - 简介
Nova提供大规模、可扩展、按需自助服务的计算资源。
Nova支持管理裸机、虚拟机和容器。 - 依赖的OpenStack服务
Keystone、Neutron(网络)、Glance(镜像服务)
块存储服务Cinder
- Cinder
块存储服务
首次出现在OpenStack的“Folsom”版本中。 - 简介
Cinder提供块存储服务,为虚拟机实例提供持久化存储。
Cinder调用不同存储接口驱动,将存储设备转化成块存储池,用户无需了解存储实际部署的位置或设备类型。 - 依赖的OpenStack服务
Keystone
对象存储服务Swift
- Swift
对象存储服务
首次出现在OpenStack的“Austin”版本中。 - 简介
Swift提供高度可用、分布式、最终一致的对象存储服务。
Swift可以高效、安全的且廉价的地存储大量数据。
swift非常适合存储需要弹性扩展的非结构化数据。 - 依赖的OpenStack服务
为其他OpenStack服务提供对象存储服务。
网络服务Neutron
- Neutron
网络服务首次出现在OpenStack的“Folsom”版本中。 - 简介
Neutron负责管理虚拟网络组件,专注于为OpenStack提供网络即服务。 - 依赖的OpenStack服务
Keystone
编排服务Heat
- Heat
编排服务
首次出现在OpenStack的“Havana”版本中。 - 简介
Heat为云应用程序编排OpenStack基础架构资源。
Heat提供OpenStack原生Rest API和CloudFormation兼容的查询API - 依赖的OpenStack服务
Keystone
OpenStack服务间交互示例
创建一个VM需要的资源
在OpenStack中创建虚拟机,资源需求和物理PC类似。
OpenStack创建VM,服务间交互示例
- OpenStack核心工作之一是虚拟机生命周期管理。
- 虚拟机实例创建时,各OpenStack服务协调工作,完成任务。
OpenStack动手实验:体验OpenStack
OpenStack Training Labs环境安装步骤
OpenStack Training Labs脚本安装流程
- 安装OpenStack Training Labs环境时,只需执行一条脚本命令:
$./st.py -b cluster
- 脚本会自动化完成OpenStack培训环境搭建过程,安装完成后,会有一个OpenStack控制节点和一个OpenStack计算节点。