云计算的知识梳理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云计算的知识梳理相关的知识,希望对你有一定的参考价值。

参考技术A 一、云计算的定义:

官方:云计算是一种按使用量付费的模式(资源服务模式),该模式可以实现随时随地、便捷按需的从可配置资源共享池中获取所需的资源。包括网络、服务器、存储、应用及服务,资源能够快速供应并释放,大大减少了资源管理工作的开销。

百度百科:云计算 是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。

特点:1.超大规模 2.虚拟化 3.高可靠性 4.按需服务 5.高可扩展性

二、OpenStack的历史版本:

云计算:2010年 元年,因为出现了OpenStack的第一个版本Austin(2010-10-21),目前已经到最新版本Queens,前一个版本是Pike版本,发行版本的规律:字母表顺序A-Z来命名的

三、OpenStack的难点在哪里?

1、OpenStack涉及的知识领域极广

2、OpenStack是一个平台,并不是一个具体的实施方案

OpenStack的Cinder(存储服务)定义了上层API,分布式存储软件,Ceph、HDFS对应的驱动

3、OpenStack本身是一个分布式系统:All-in-one部署

对于一个小白来说,OpenStack的搭建无疑是一个痛点,这个门槛有点高,我在开始学习的时候,也是煞费苦心,所以学好基础知识真的非常重要。

四、什么是虚拟化?

1)、虚拟化与虚拟化技术是什么?

虚拟化是云计算的基础,

虚拟化:软件模拟硬件的过程

具体定义:虚拟化使一台物理机上可以跑多台虚拟机,虚拟机共享物理机的CPU、内存、IO等硬件资源,每一台虚拟机逻辑上是相互隔离的。

行业内专用术语:

1、物理机:宿主机Host

2、虚拟机:客户机Guest

2)、虚拟化分类(按照虚拟化实现结构):

1、1型虚拟化

定义:Hypervisor直接安装在物理机(裸机)上,多个虚拟机在Hypervisor上运行。

特点: 1型虚拟机本身就是一个操作系统,不需要其他操作系统的支持

举例:VMware的ESXI(workstation、server)

2型虚拟化

    物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。Hypervisor 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。KVM、VirtualBox 和 VMWare Workstation 都属于这个类型。

虚拟化技术:一种运行在基础物理服务器和操作系统之间的中间软件层,可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisor协调着这些硬件资源的访问,以及各个虚拟机之间的防护。服务器启动时,它会加载所有虚拟机客户端的操作系统,同时为虚拟机分配内存、磁盘和网络等。也可叫做VMM( virtual machine monitor ),即虚拟机监视器。

1型和2型虚拟化的对比:

1、前者性能比后者好

2、前者不需要操作系统支持,后者需要

3、后者更加灵活,特点:支持虚拟机的嵌套

使用虚拟化的原因:

打破实体结构间不可切割的障碍,使用户能更好的利用这些资源

没有虚拟化:服务器的IT资源30%

有虚拟化:服务器的IT资源70%

3)、虚拟化的优点

1、提高IT资源利用率

2、显著减少了服务器的数量,企业不动资产和管理成本。

3、加速应用部署

4、提高应用兼容性

五、云计算服务三层架构:根据提供服务的不同(会在下一篇详细讲解三种服务)

1、IaaS:infrastructure as a Service

定义:基础服务层

功能:提供的服务是存储、计算、网络等硬件资源  OpenStack

特点:负责管理虚拟机的整个生命周期,虚拟机创建、修改、启动停止、快照/备份、销毁

举例:阿里云、腾讯云、亚马逊的AWS(Amazon webserice)

2、PaaS:platform as a service

定义:平台服务层

功能:提供的服务是应用程序的运行环境和一系列中间件服务

特点:负责保证服务的性能和可用性。

举例:大数据和深度学习容器云平台

3、SaaS:Software as a service

定义:软件服务层

功能:提供的服务是软件/应用程序。

特点:用户需要登录并使用它,"拿来即用"

举例:facebook、twitter、instagram、QQ、微信

网上还有人说Docker的CaaS(container as a service)容器服务层。

六、OpenStack是什么?

OpenStack is a cloud operating system that controls large pools of storage, compute,and networking resources throughout a datacenter,all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface。

官方定义:OpenStack是一个(可以管理整个数据中心里存储、计算及网络资源的)云操作系统。

OpenStack 作为一个操作系统,管理资源是它的首要任务;

OpenStack 管理资源主要有三个方面:计算、存储和网络。

整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。这四个节点也可以安装在一台机器上,单机部署(All-in-one部署)

控制节点 负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等

计算节点 负责虚拟机运行

网络节点 负责对外网络与内网络之间的通信

存储节点 负责对虚拟机的额外存储管理等等

下面我给出一张官方架构图(给出中文版方便理解):

OpenStack的组件:

Nova:计算管理服务,提供了对计算节点的Nova的管理,使用Nova-API进行通信 (核心服务)

Neutron:网络管理服务,提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理面板(核心服务)

Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制作相应的模板(核心服务)

Keystone:认证管理服务,为OpenStack的其他组件提供认证(auth)服务 (核心服务)

Cinder:提供管理存储节点的Cinder相关(为虚拟机提供存储卷(虚拟硬盘)) (核心服务)

Swift:为Glance和Cinder提供对象存储服务

Ceilometer:为OpenStack提供监控(monitor)、计量服务;提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作

Heat:提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。

Horizon:控制台服务,提供了以Web的形式对所有节点的所有服务的管理  (核心服务)

第一次写关于技术方面的文章,不足之处后面还会修改补充,希望自己坚持下去。

OpenStack入门之核心组件梳理——Keystone篇

OpenStack入门之核心组件梳理(1)——Keystone篇

前言

? 先前的文章中笔者从整体上介绍了有关OpenStack相关内容,包括:概念、主要组件及项目、部署节点类型以及整体架构。那么从本文开始我们将介绍有关OpenStack核心项目的理论知识,逐一详细介绍各个服务项目。

? 友情链接:下面的三篇文章对于初学者或多或少可以帮你在宏观上了解云计算以及OpenStack。

? 云计算浅谈

? OpenStack概念以及核心组件概述

? OpenStack部署节点类型和架构

? 那么,首先来讲一下核心项目之一的Keystone相关的内容。本文将从概念作用、主要组成、模式架构、工作原理四个部分层层介绍,最后对Keystone这个项目做一个总结。

一、Keystone的概念作用

? 通过前面的文章,应该对OpenStack的核心组件服务有了整体上的认知了。本文将针对OpenStack集群服务中Keystone项目服务进行讲解。本小节将详述Keystone的概念。

? Keystone是OpenStack组件之一——Identity Service(认证服务)成立的核心项目。该项目整体上相对于其他项目并不复杂,其类似于一个服务总线,也可以理解为整个OpenStack服务框架的注册表,OpenStack中其他项目通过Keystone可以注册其服务然后获得该服务的Endpoint(服务的访问端口,或者理解为入口),这个Endpiont可以是一个也可以是多个。此外,任何服务之间的调用也需要通过Keystone的认证才能获得目标服务的Endpoint来访问对应服务。

? 当然,既然是认证服务,就有一定的认证机制,那么思考一下在生活中可以想到有什么类似认证的例子?

? 其实,这样的例子很多,家家户户的锁匙就是一种认证机制,再比如支付宝账号密码登录也是认证机制的典型例子,再如,各种门票入场券都可以认为是一种认证机制。

? 总而言之,Keystone项目就是通过相应的认证授权形式来向其他服务或其他服务之间提供服务支持,其主要功能就是对用户和服务进行管理的。因此我们要理解如何管理用户以及服务,就需要对Keystone的主要模块构成熟悉理解。

二、Keystone的主要组成

? 本小节将介绍Keystone对用户和服务进行管理层面上对应组成概念及作用的介绍,介绍过程中涉及的术语都会在下文进行详细介绍,可以自行查阅理解。

2.1 User

? 表示使用服务的用户,可以是人,服务或者系统,只要是使用了openstack服务的对象都可以称为用户。当User对OpenStack进行访问时,Keystone会对其身份进行验证,验证通过的用户可以登录OpenStack云平台并且通过其颁发的Token(下面会讲解)去访问资源,用户可以被分配到一个或者多个tenant或project(下文给出介绍)中。

2.2 Tenant

? 表示使用访问的租户,作用是对资源进行分组,或者说是为了使提供的资源之间互相隔离,可以理解为一个一个容器,也称为Project。

? 在一个租户中可以拥有很多个用户,用户也可以隶属于多个租户,但必须至少属于某个租户。租户中可使用资源的限制称作Tenant Quotas,联想一下Linux系统磁盘管理的磁盘配额,这个Quotas的含义就是配额、限额。用户可以根据权限的划分使用租户中的资源。

2.3 Token

? 表示提供进行验证的令牌,是Keystone分配的用于访问OpenStack API和资源服务的字符串文本。用户的令牌可能在任何时间被撤销(revoke),就是说用户的Token是具有时间限制的,并且在OpenStack中Token是和特定的Tenant(租户)绑定的,也就是说如果用户属于多个租户,那么其就有多个具有时间限制的令牌。

2.4 Credential

? 表示用户凭据,用来证明用户身份的数据,可以是用户名和密码、用户名和API Key,或者是Keystone认证分配的Token。

2.5 Authentication

? 表示身份认证,是验证用户身份的过程。将上面的几个结合起来简单说明一下该过程。

? 首先,用户申请访问等请求,Keystone服务通过检查用户的Credential确定用户身份;然后,在第一次对用户进行认证时,用户使用用户名和密码或用户名和API Key作为Credential;其次,当用户的Credential被验证之后,Keystone会给用户(用户必定至少属于一个租户)分配一个Authentication Token来给该用户之后去使用。

2.6 Service

? 表示服务,有OpenStack提供,例如Nova、Swift或者Glance等等,每个服务提供一个或多个Endpoint(服务的入口)来给不同角色的用户进行资源访问以及操作。

2.7 Endpoint

? 表示服务的入口,是一个由Service监听服务请求的网络地址。客户端要访问某个service,就需要通过该service通过的Endpoint(通常是可以访问的一个URL地址)。在OpenStack服务架构中,各个服务之间的相互访问也需要通过服务的Endpoint才可以访问对应的目标服务。

2.8 Role

? 表示角色,类似一访问控制列表——ACL的集合。主要是用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。其实在Keystone的认证机制中,分配给用户的Token中包含了用户的角色列表。

? 换言之,Role扮演的作用可以理解为:当服务被用户访问时,该服务会去解析用户角色列表中的角色的权限(例如可以进行的操作权限、访问哪些资源的权限)。

2.9 Policy

? 表示策略,用于控制某一个Tenant中的某一个User是否具备某个操作的权限。也就是说,通过Policy机制,依据配置文件(默认是在/etc/keystone/目录下的policy.json文件),可以决定User可以执行什么操作,不能执行什么操作。

? 该文件内容格式如下(大致了解一下即可):

1 {
2 "admin_required": "role:admin or is_admin:1",
34 "identity:get_project": "rule:admin_required",
35 "identity:list_projects": "rule:admin_required",
......
45 "identity:delete_user": "rule:admin_required",
46 "identity:change_password": "rule:admin_or_owner",
47}

三、Keystone的架构理解

上篇文章介绍OpenStack的架构的时候给出过如下的一个架构图,不知道是否有所印象或者之前在其他的文章中看见过:

技术图片

? 通过该图,我们可以直观上了解Identity Service的Keystone服务是一个提供统一整体认证的项目,不仅建立自身与用户之间的关系,也是其他服务之间进行资源访问等操作的纽带。

? Keystone内部结构图如下所示:

技术图片

? 该结构非常简单,上面是Keystone的服务和管理的API,下面是对应的各个后端服务应用,例如:令牌、编目、策略以及身份等方面的服务集合。说到这里,需要补充一点,Keystone可以集成普遍使用的目录服务,如LDAP(轻量级目录访问协议)。

?

四、Keystone的工作原理

? 通过以上内容,想必对Keystone概念主要作用、组成部分以及结构模型有了自己的理解了。那么下面来理一下Keystone是如何进行工作的,或者说它的响应的流程是怎样的。

? 下面通过一个用户创建实例的过程中对于Keystone认证过程,结合示意图来介绍整个Keystone服务的响应流程。在阅读整个过程的同时体会理解上面的9个组成部分的作用,进行自己的思考加深理解。

技术图片

? 下面以该创建实例虚拟机为例描述Keystone与其他服务之间的响应流程:

一次建立:

1、用户首先向Keystone发送如用户密码之类的身份信息(用户名和密码或者用户名和API key),Keystone验证成功后向用户配发Token;

三次请求,三次确认:

2、之后用户向Nova发出带有Token的实例创建请求,Nova接收到请求后向Keystone验证Token的有效性,确定该Token是否有效;

3、上述的Token被证实有效后,由Nova向Glance服务发出带有Token的镜像传输请求,Glance同样要到Keystone去验证Token的有效性;

4、上述的Token被证实有效后Glance向Nova正式提供镜像目录查询和传递服务,Nova获取镜像后继续向Neutron发送带有Token的网络创建服务,再由Neutron向Keystone求证Token的有效性;

5、Token被证实有效后,Neutron允许Nova使用网络服务;

一个最终结果:

6、Nova启动虚拟机成功,同时向用户返回创建实例成功的通知。

五、Keystone的理论总结

? 本文旨在介绍Keystone的作用和工作原理,重点在于Keystone提供的认证服务,包含的9个主要部分内容,脑海里有其与其他组件以及用户之间的关系,最为重要的就是Keystone是如何工作的,要对整个响应的工作流程非常熟悉理解。

? 笔者能力有限,如果有什么疏漏之处还望指出,谢谢阅读!

以上是关于云计算的知识梳理的主要内容,如果未能解决你的问题,请参考以下文章

OpenStack构架知识梳理

OpenStack架构知识梳理

考研级《计算机网络》知识梳理——第三期

考研级《计算机网络》知识梳理——第四期

考研级《计算机网络》知识梳理——第九期

考研级《计算机网络》知识梳理——第一期