OpenStack基础内容分享

01

基础

我们经常听到某某厂商说他们的云是基于OpenStack,然后进行二层开发和安全加固!那么OpenStack是什么呢?不像云计算定义有很多,它是有它的标准定义:OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。

Open即开放、开源之意,国际国内大厂纷纷加入,表现,Stack堆栈,即意味着OpenStack是松耦合的,所服务件都可以按需解耦。

02

服务与组件

1.服务:OpenStack包含了网络、虚拟化、操作系统等的各个方面,像Cinder、Nova、Neutron、Swift等都是服务,可以理解为解耦后的具体的服务项目单元。

2.组件:组件是由单个服务向下分解得到的,为了实现服务而实际组成的部分。如Nova服务,它就包括nova-api,nova-compute、rabbit-mq server等组件。

3.常见的服务及作用:

之前文章给大家罗列过一次,其中Cinder、Nova、Neutron为3个关键的服务。

服务名称

服务

描述

Horizon

仪表板

用于管理云的图形化用户界面

Keystone

身份识别

认证、授权和 OpenStack 服务信息

Nova

计算

建立、管理和终止虚拟机

Cinder

块存储

磁盘卷(比实例更持久)和实例快照

Swift

对象存储

共享的、复制的和冗余的存储,用于存储图片、文件和其他可通过超文本传输协议(Hypertext Transfer Protocol,HTTP)访问的媒体文件

Neutron

网络

提供安全的租户网络

Glance

镜像

提供虚拟机镜像和快照的存储与访问

Heat

编排

通过模板编排计算机、网络和其他资源组

Designate

DNS

创建域并在 DNS 基础设施中记录

Ceilometer

计量

监控整个云的资源使用情况

Trove

数据库

提供私有租户数据库的访问

Ironic

裸机

在物理硬件上启动实例

Magnum

容器

在实例中管理容器

Murano

应用

在多个实例上部署打包应用

Sahara

数据处理集群

将 Hadoop 或 Spark 集群作为服务提供

03

版本与发展

1.历史与发展:开始于2010年的OpenStack今年已经7岁了,基金会员达到了8万(去年大概是4万),白金会员和黄金会员今年也新增了8个,其中5个来自中国。用户方面,越来越多的客户选择了OpenStack,用户类型也日趋多样化。

2.命名与发布:OpenStack版本是每6个月发布一次,每次版本的顺序按照A-Z进行排序,并以年份及当年内的排序作为版本号。各个厂商也纷纷进行定制开发,发布了自己的OpenStack。

04

架构

1.逻辑架构图

OpenStack基础内容分享_第1张图片

2.三种核心服务的架构

OpenStack基础内容分享_第2张图片

3.各组件之间的通信(以创建VM为例)

OpenStack基础内容分享_第3张图片

主要通信流转如下:

OpenStack并不仅仅是虚拟化管

1.登录管理界面或命令行形式通过RESTfulAPI向keystone获取认证信息。

2.keystone验证并通过用户请求认证信息,并生成auth-token返回给对应的认证请求。

3.界面或命令行通过RESTfulAPI向nova-api发送一个bootinstance的请求(并携带auth-token)。

4.nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token。

5.keystone验证token是否有效,如有效则返回有效的认证和对应的角色(注:有些操作需要有角色权限才能操作)。

6.通过认证后nova-api和数据库通讯。

7.初始化新建虚拟机的数据库记录。

8.nova-api通过rpc.call向nova-scheduler请求是否有创建虚拟机的资源(HostID)。

9.nova-scheduler进程侦听消息队列,获取nova-api的请求。

10.nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机。

11.对于有符合虚拟机创建的主机,nova-scheduler更新数据库中虚拟机对应的物理主机信息。

12.nova-scheduler通过rpc.cast向nova-compute发送对应的创建虚拟机请求的消息。

13.nova-compute会从对应的消息队列中获取创建虚拟机请求的消息。

14.nova-compute通过rpc.call向nova-conductor请求获取虚拟机消息。(Flavor)

15.nova-conductor从消息队队列中拿到nova-compute请求消息。

16.nova-conductor根据消息查询虚拟机对应的信息。

17.nova-conductor从数据库中获得虚拟机对应信息。

18.nova-conductor把虚拟机信息通过消息的方式发送到消息队列中。

19.nova-compute从对应的消息队列中获取虚拟机信息消息。

20.nova-compute通过keystone的RESTfullAPI拿到认证的token,并通过HTTP请求glance-api获取创建虚拟机所需要镜像。

21.glance-api向keystone认证token是否有效,并返回验证结果。

22.token验证通过,nova-compute获得虚拟机镜像信息(URL)。

23.nova-compute通过keystone的RESTfullAPI拿到认证k的token,并通过HTTP请求neutron-server获取创建虚拟机所需要的网络信息。

24.neutron-server向keystone认证token是否有效,并返回验证结果。

25.token验证通过,nova-compute获得虚拟机网络信息。

26.nova-compute通过keystone的RESTfullAPI拿到认证的token,并通过HTTP请求cinder-api获取创建虚拟机所需要的持久化存储信息。

27.cinder-api向keystone认证token是否有效,并返回验证结果。

28.token验证通过,nova-compute获得虚拟机持久化存储信息。

29.nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机。

这里面可以看出组件之间的通讯都是通过restapi实现的。

05

与虚拟化管理平台的区别

OpenStack并不仅仅是虚拟化管理平台,虽然它们存在很多相似性,但并非完全相同。OpenStack 和虚拟化管理平台都位于虚拟化资源层之上,可帮助用户发现、报告和自动执行位于不同供应商产品环境中的业务流程。诚然,虚拟化管理平台的主要目的是方便利用虚拟资源的特性和功能,而实际上,OpenStack 是使用虚拟资源来运行工具组合的。这些工具所创建的云环境符合美国国家标准与技术协会的5大云计算标准:一个网络、池化资源、一个用户界面、部署能力和自动化资源控制/分配。

06

用途

1.私有云

私有云在OpenStack 上运行的效果要优于 DIY 方法。由于 OpenStack 具有易安装性和易管理性,虚拟机的数量只增加了6%,因此采用 OpenStack 比您自己创建私有云更具性价比。很多厂商也推出了自己的基于OpenStack解决方案,如EasyStack、99cloud等。

2.公有云

OpenStack 是用于打造公共云环境的领先开源方案。无论是市值数十亿美元的上市公司,还是初创公司,您都可以使用 OpenStack 来构建可与云提供商相媲美的公共云服务。

3.网络功能虚拟化

OpenStack 用于网络功能虚拟化 (NFV), 从而将网络的一些重要功能分离出来以便在各环境中分配,几乎全球所有通信服务提供商都已将此提上议事日程。

4.容器

OpenStack 为私有云和公共云提供了可靠的基础。容器则加快了应用的交付速度,同时简化了应用的部署和管理。采用 OpenStack 平台运行容器,可将容器的优势从单个独立的团队扩展并惠及整个企业各部门的业务运营。

07

优势

a.开放性

OpenStack 的开放架构,使得红帽、思科、IBM、甲骨文、Mirantis积极参与,如此一来,可以减少厂商传统的软硬件捆绑,采用OpenStack 意味着企业云平台会更加自主可控,并实现技术沉淀和自动化运维水平的提升。

b.模块松耦合

与Eucalyptus、OpenNebula和CloudStack等开源软件相比,OpenStack模块分明。添加独立功能的组件非常简单。有时候,不需要通读整个OpenStack的代码,只需要了解其接口规范及API使用,就可以轻松地添加一个新的模块。

c.组件配置灵活

OpenStack的组件安装异常灵活。可以全部都装在一台物理机上,也可以分散至多个物理机中,甚至可以把所有的结点都装在虚拟机中。同时,OpenStack 自身就是个高扩展性的系统。它被设计为松耦合、基于消息通信的架构,这些技术在已经在各种中级到高级扩展的系统中得到应用和验证,它们也可以适应小规模的部署。问题在于当你配置和部署 OpenStack 时所做的设计上的决定。

d.二次开发容易

OpenStack发布的OpenStack API是Rest-fullAPI。其他所有组件也是采种这种统一的规范。因此,基于OpenStack做二次开发,较为简单。开源软件则由于耦合性太强,导致添加功能较为困难。

e.兼容性

首先,Openstack对硬件没有什么特殊要求。其次,OpenStack是一个云的管理标准,它将包容和协调更多的云(对接企业现有的公有云平台和自建的私有云平添),成为云能互通互控的基石。

你可能感兴趣的:(OpenStack基础内容分享)