大家好,我是民工哥!
狭义的理解,云计算是分布式计算的集中,可以将一个复杂的计算任务分解后分配给“云”上的多台设备上。目前,在广义上讲,云计算是一种全新的概念,而不是一种全新的技术。所谓“云计算”,就是把计算资源、存储资源、网络资源等抽象为一个“云”,并且能够对外提供服务。之所以说云计算不是全新的技术,就是因为这种“云”的实现没有使用全新的技术,而是将之前的技术进行了整合,最终退出的一项互联网网络服务。
按照云计算提供的服务不同进行分类,云计算可以分为以下三类:
所谓IaaS,即Infrastructure as a Service,基础设置即服务,云计算提供者向用户提供的是虚拟化的资源,比如计算资源、存储资源、网络资源等等。用户所能够使用的也是这些虚拟化的资源。阿里云、腾讯云、亚马逊云等云服务提供商的虚拟机服务即属于这种。
所谓PaaS,即Platform as a Service,平台即服务,云计算提供者向用户提供的是一个平台,比如一个开发编译环境,PaaS主要面向的是开发者。在各大云服务提供上的基础上,有些服务提供上会在提供虚拟机的基础上,帮助我们来安装一系列的环境,在这种情况下勉强可以算是PaaS。
所谓SaaS,即Software as a Service,软件即服务,云计算提供者向用户提供的是应用软件或者是应用服务。我们常见的百度网盘就可以算作这种。
云计算上述三种服务提供方式的区别如下图所示:
在上图中,黑色部分为云服务提供上需要部署的设备或应用,红色部分为购买云服务的企业或者个人需要部署的设备或应用。
云计算具有以下特点:
云计算使用虚拟化技术,突破了应用底层架构与上层服务之间的联系,因此支持动态扩展集群。
借助虚拟化技术,云计算可以按照用户需求给用户提供不同的服务,提供不同级别的运算、存储、网络等资源。
云计算集群通常兼容性比较好,可以支持大部分的硬件、操作系统。
因为云计算服务的提供依靠的是服务器集群,因此避免了服务器单点故障。一台服务器一旦出现故障,那么该服务器上的应用可以在管理控制平台的操作下转移至其他的服务器,从而不会影响服务的正常提供。
云计算可以将运算、存储和网络等资源统一管理、统一分配、按需供给,用户只需要购买相应的服务即可,而不需要购买昂贵的大型服务器。
OpenStack是由一系列具有RESTful接口的Web服务所实现的,是一系列组件服务集合。Openstack 是一个云平台管理的项目,我们可以使用Openstack来构建一个私有云架构,并提供IaaS的云服务。Openstack包含三大项:计算、网络和存储。其主要目标是简化资源的配置和管理,把计算、网络和存储资源抽象成虚拟资源池,并根据需要对外提供服务。
Openstack官网网址为:https://www.openstack.org/,其首页如下所示:
如下图为OpenStack的概念架构,我们看到的是一个标准的OpenStack项目组合的架构。这是比较典型的架构,但不代表这是OpenStack的唯一架构,我们可以选取自己需要的组件项目,来搭建适合自己的云计算平台,设计的基本原则如下:
云平台用户在经过Keystone服务认证授权后,通过Horizon或者Reset API模式创建虚拟机服务,创建过程中包括利用Nova服务创建虚拟机实例,虚拟机实例采用Glance提供镜像服务,然后使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中,之后再通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume)和Glance提供的镜像(Image)可以通过Swift的对象存储机制进行保存。
虽然上面这幅图看上去很复杂,但是分层去看的话,就可以较为容易的去了解它,OpenStack包括若干个服务的独立组件,像之前我们提到的核心组件以及一些可选组件都是在这幅图里面的,比如nova、keystone、Horizon等,我们先去找到这些组件,然后再去分析下一层。
每个组件里有各自的一些服务,所有服务都需要通过keystone进行身份验证,每个服务之间又可以关联若干个组件,每个服务至少有一个API进程,通过去监听API的请求,并对这些请求进行预处理,并将它们发送到相对于该服务的其他组件,服务之间可以通过公共API进行交互。
服务之间的通信使用AMQP消息代理,将服务的状态信息存储在数据库中。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。
控制节点包括支持服务、基础服务、扩展服务以及管理网络。
只有一个基础服务,Neutron网络服务。负责整个openstack架构的网络通信。整个网络接口又可分为管理网络、数据网络、外部网络。管理网络负责关联其他节点的网络,让控制节点可管控其他节点的网络。数据网络负责整个架构的数据通信。外部网络负责架构与外部物理网络的连接通信。
计算节点包括基础服务、扩展服务、网络接口。基础服务有Nova Hypervisor 和网络插件代理。扩展服务为ceilometer agent 计量代理服务。网络接口为管理网络和数据网络。
存储节点包括cinder和swift两个基础的存储服务和网络接口。网络接口为管理网络和数据网络。
OpenStack 架构由大量开源项目组成。其中包含 8个稳定可靠的核心服务,用于处理计算、网络、存储、身份和镜像;同时,还为用户提供了十多种开发成熟度各异的可选服务。OpenStack 的 8 个核心服务主要担纲系统的基础架构,其余项目则负责管理控制面板、编排、裸机部署、信息传递、容器及统筹管理等操作。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
Nova管理虚拟机的整个生命周期:创建、运行、挂起、调度、关闭、销毁等。这是真正的执行部件。接受 DashBoard 发來的命令并完成具体的动作。但是 Nova 不是虛拟机软件,所以还需要虚拟机软件(如 KVM、Xen、Hyper-v 等)配合。
Neutron 管理网络资源,提供/一组应用编程接口(API),用户可以调用它们来定义网络(如 VLAN ),并把定义好的网络附加给租户。Networking 是一个插件式结构,支持当前主流的网络设备和最新网铬技术。
Swift 是 NoSQL 数据库,类似 HBase,为虚拟机提供非结构化数据存储,它把相同的数据存储在多台计箅机上,以确保数据不会丢失。用户可通过 RESTful 和 HTTP 类型的 API 来和它通信。这是实际的存储项目,类似 Ceph,不过在 OpcnStack 具体实施时,人们更愿意采用 Ceph。
Cinder 管理块设备,为虚拟机管理 SAN 设备源。但是它本身不是块设备源, 需要一个存储后端来提供实际的块设备源(如 iSCSI、FC等)。Cinder 相当于一个管家,当虚拟机需要块设备时,询问管家去哪里获取具体的块设备。它也是插件式的,安装在具体的 SAN 设备里。
Keystone 为其他服务提供身份验证、权限管理、令牌管理及服务名册管理。要使用云计算的所有用户事先需要在 Keystone 中建立账号和密码,并定义权限(注意:这里的“用户”不是指虚拟机里的系统账户,如 Windows 7 中的 Administrator )。另外,OpenStack 服务(如 Nova、Neutron、Swift、Cinder 等)也要在里面注册,并且登记具体的 API,Keystone 本身也要注册和登记 API。
Glance 存取虚拟机磁盘镜像文件,Compute 服务在启动虚拟机时需要从这里获取镜像文件。这个组件不同于上面的 Swift 和 Cinder,这两者提供的 存储是在虚拟机里使用的。
Horizon 提供了一个网页界面,用户登录后可以做这些操作:管理虚拟机、配置权限、分配 IP 地址、创建租户和用户等。本质上就是通过图形化的 操作界面控制其他服务(如 Compute、Networking 等)。当然,如果你熟悉命令,也可以直接采用命令来完成相应的任务。
Ceilometer 结合 Aodh、CloudKitty 两个组件,完成计费任务,如结算、消耗的 资源统计、性能监控等。OpenStack 之所以能管理公共云,一是因为 Ceilometer 的存在,二是因为引人了租户的概念。
更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。
如果要在成千上万个虚拟机里安装和配置同一个软件,该怎么办?采用 Orchestrates 是一个不错的主意,它向每个虚拟机里注人一个名叫 heat-cfntools 的客户端工具,然后就能同时操作很多虚拟机。
使用户能够在 OpenStack 平台上(利用虚拟机)一键式创建和管理 Hadoop 集群,实现类似 AWS 的 EMR(Amazon Elastic MapReduce Service)功能。用户只需要提供简单的配置参数和模板,如版本信息(CDH 版本)、集群拓扑(几个 Slave、几个 Datanode)、节点配置信息(CPU、内存)等,Sahara 服务就能够在几分钟内根据提供的模板快速 部署 Hadoop、Spark 及 Storm 集群。Sahana 是一个大数据分析项目。
把裸金属机器(与虚拟机相对)加人到资源池中。
Zaqar 为 Web 和移动开发者提供多租户云消息和通知服务,开发人员可以通过 REST API 在其云应用的不同组件中通过不同的通信模式(如 生产者/消费者或发布者/订阅者)来传递消息。
是 OpenStack 的密钥管理组件,其他组件可以调用 Barbican 对外暴露的 REST API 来存储和访问密钥。
为虚拟机提供文件共享服务,不过需要存储后端的配合。
其中Compute Service Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源。Neutron主要管理网络连接服务。Cinder主要管理存储。这三个部分是OpenStack中最为重要的部分。
模块松耦合:与其他开源软件相比,OpenStack模块分明。添加独立功能的组件非常简单。有时候,不需要通读整个OpenStack的代码,只需要了解其接口规范及API使用,就可以轻松地添加一个新的模块
组件配置较为灵活:OpenStack也需要不同的组件。但是OpenStack的组件安装异常灵活。可以全部都装在一台物理机上,也可以分散至多个物理机中,甚至可以把所有的结点都装在虚拟机中。
二次开发容易:OpenStack发布的OpenStack API是Rest-full API。其他所有组件也是采种这种统一的规范。因此,基于OpenStack做二次开发,较为简单。而其他3个开源软件则由于耦合性太强,导致添加功能较为困难。
兼容性:OpenStack兼容其他公有云,方便用户进行数据迁移。
可扩展性:模块化设计,可以通过横向扩展,增加节点、添加资源。
参考文章:https://blog.csdn.net/weixin_40228200/ article/details/124716975 https://blog.csdn.net /weixin_40228200/article/details/124718026 https://blog.csdn.net/KY06_Xxy/article/details /110959473