前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩转企业云计算平台系列(一):OpenStack 基础入门

玩转企业云计算平台系列(一):OpenStack 基础入门

作者头像
民工哥
发布2023-12-28 11:22:19
4580
发布2023-12-28 11:22:19
举报

大家好,我是民工哥!

云计算简介

概念

狭义的理解,云计算是分布式计算的集中,可以将一个复杂的计算任务分解后分配给“云”上的多台设备上。目前,在广义上讲,云计算是一种全新的概念,而不是一种全新的技术。所谓“云计算”,就是把计算资源、存储资源、网络资源等抽象为一个“云”,并且能够对外提供服务。之所以说云计算不是全新的技术,就是因为这种“云”的实现没有使用全新的技术,而是将之前的技术进行了整合,最终退出的一项互联网网络服务。

云计算分类

按照云计算提供的服务不同进行分类,云计算可以分为以下三类:

IaaS

所谓IaaS,即Infrastructure as a Service,基础设置即服务,云计算提供者向用户提供的是虚拟化的资源,比如计算资源、存储资源、网络资源等等。用户所能够使用的也是这些虚拟化的资源。阿里云、腾讯云、亚马逊云等云服务提供商的虚拟机服务即属于这种。

PaaS

所谓PaaS,即Platform as a Service,平台即服务,云计算提供者向用户提供的是一个平台,比如一个开发编译环境,PaaS主要面向的是开发者。在各大云服务提供上的基础上,有些服务提供上会在提供虚拟机的基础上,帮助我们来安装一系列的环境,在这种情况下勉强可以算是PaaS。

SaaS

所谓SaaS,即Software as a Service,软件即服务,云计算提供者向用户提供的是应用软件或者是应用服务。我们常见的百度网盘就可以算作这种。

云计算上述三种服务提供方式的区别如下图所示:

在上图中,黑色部分为云服务提供上需要部署的设备或应用,红色部分为购买云服务的企业或者个人需要部署的设备或应用。

云计算特点

云计算具有以下特点:

动态可扩展

云计算使用虚拟化技术,突破了应用底层架构与上层服务之间的联系,因此支持动态扩展集群。

按需部署

借助虚拟化技术,云计算可以按照用户需求给用户提供不同的服务,提供不同级别的运算、存储、网络等资源。

灵活性高

云计算集群通常兼容性比较好,可以支持大部分的硬件、操作系统。

可靠性高

因为云计算服务的提供依靠的是服务器集群,因此避免了服务器单点故障。一台服务器一旦出现故障,那么该服务器上的应用可以在管理控制平台的操作下转移至其他的服务器,从而不会影响服务的正常提供。

性价比高

云计算可以将运算、存储和网络等资源统一管理、统一分配、按需供给,用户只需要购买相应的服务即可,而不需要购买昂贵的大型服务器。

Openstack简介

OpenStack是由一系列具有RESTful接口的Web服务所实现的,是一系列组件服务集合。Openstack 是一个云平台管理的项目,我们可以使用Openstack来构建一个私有云架构,并提供IaaS的云服务。Openstack包含三大项:计算、网络和存储。其主要目标是简化资源的配置和管理,把计算、网络和存储资源抽象成虚拟资源池,并根据需要对外提供服务。

Openstack官网网址为:https://www.openstack.org/,其首页如下所示:

Openstack架构

如下图为OpenStack的概念架构,我们看到的是一个标准的OpenStack项目组合的架构。这是比较典型的架构,但不代表这是OpenStack的唯一架构,我们可以选取自己需要的组件项目,来搭建适合自己的云计算平台,设计的基本原则如下:

  • 按照不同的功能和通用性来划分不同项目并拆分子系统
  • 按照逻辑计划、规格子系统之间的通信
  • 通过分层设计整个系统架构
  • 不同的功能子系统间提供统一的API接口

云平台用户在经过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物理架构

整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。

  • 控制节点负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等
  • 计算节点负责虚拟机运行
  • 网络节点负责对外网络与内网络之间的通信
  • 存储节点负责对虚拟机的额外存储管理等等
控制节点

控制节点包括支持服务、基础服务、扩展服务以及管理网络。

  • 1)因为控制节点是管理整个OpenStack进行运作的,所有需要keystone身份认证服务以及Harizon控制面板服务这样的全局组件来对OpenStack进行管控和操作。
  • 2)为虚拟机提供一些相对应的基础资源,比如glance镜像服务为虚拟机提供磁盘镜像文件、network网络服务对网络资源进行管理,提供/一组应用编程接口(API),用户可以调用它们来定义网络以及nova计算服务管理虚拟机的整个生命周期。
  • 3)数据的存储以及通信支持,我们使用到的是Mysql与RabbitMQ,后续我们需要对数据进行管理需要使用Cinder、Swift以及trove服务,并且提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作的ceilometer计量服务,而且还需要基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性的heat服务。
  • 4)管理私有网段与公有网段的通信,以及管理虚拟机网络之间的通信/拓扑,所以需要网络接口和外面进行连通。
网络节点

只有一个基础服务,Neutron网络服务。负责整个openstack架构的网络通信。整个网络接口又可分为管理网络、数据网络、外部网络。管理网络负责关联其他节点的网络,让控制节点可管控其他节点的网络。数据网络负责整个架构的数据通信。外部网络负责架构与外部物理网络的连接通信。

计算节点

计算节点包括基础服务、扩展服务、网络接口。基础服务有Nova Hypervisor 和网络插件代理。扩展服务为ceilometer agent 计量代理服务。网络接口为管理网络和数据网络。

存储节点

存储节点包括cinder和swift两个基础的存储服务和网络接口。网络接口为管理网络和数据网络。

Openstack服务

OpenStack 架构由大量开源项目组成。其中包含 8个稳定可靠的核心服务,用于处理计算、网络、存储、身份和镜像;同时,还为用户提供了十多种开发成熟度各异的可选服务。OpenStack 的 8 个核心服务主要担纲系统的基础架构,其余项目则负责管理控制面板、编排、裸机部署、信息传递、容器及统筹管理等操作。更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。

OpenStack核心组件
Compute(计算服务)Nova

Nova管理虚拟机的整个生命周期:创建、运行、挂起、调度、关闭、销毁等。这是真正的执行部件。接受 DashBoard 发來的命令并完成具体的动作。但是 Nova 不是虛拟机软件,所以还需要虚拟机软件(如 KVM、Xen、Hyper-v 等)配合。

Network(网络服务)Neutron

Neutron 管理网络资源,提供/一组应用编程接口(API),用户可以调用它们来定义网络(如 VLAN ),并把定义好的网络附加给租户。Networking 是一个插件式结构,支持当前主流的网络设备和最新网铬技术。

Object Storage(对象存储服务)Swift

Swift 是 NoSQL 数据库,类似 HBase,为虚拟机提供非结构化数据存储,它把相同的数据存储在多台计箅机上,以确保数据不会丢失。用户可通过 RESTful 和 HTTP 类型的 API 来和它通信。这是实际的存储项目,类似 Ceph,不过在 OpcnStack 具体实施时,人们更愿意采用 Ceph。

Block Storage(块存储服务) Cinder

Cinder 管理块设备,为虚拟机管理 SAN 设备源。但是它本身不是块设备源, 需要一个存储后端来提供实际的块设备源(如 iSCSI、FC等)。Cinder 相当于一个管家,当虚拟机需要块设备时,询问管家去哪里获取具体的块设备。它也是插件式的,安装在具体的 SAN 设备里。

Identity(身份认证服务) Keystone

Keystone 为其他服务提供身份验证、权限管理、令牌管理及服务名册管理。要使用云计算的所有用户事先需要在 Keystone 中建立账号和密码,并定义权限(注意:这里的“用户”不是指虚拟机里的系统账户,如 Windows 7 中的 Administrator )。另外,OpenStack 服务(如 Nova、Neutron、Swift、Cinder 等)也要在里面注册,并且登记具体的 API,Keystone 本身也要注册和登记 API。

Image Service(镜像服务)Glance

Glance 存取虚拟机磁盘镜像文件,Compute 服务在启动虚拟机时需要从这里获取镜像文件。这个组件不同于上面的 Swift 和 Cinder,这两者提供的 存储是在虚拟机里使用的。

Dashboard(控制面板服务)Horizon

Horizon 提供了一个网页界面,用户登录后可以做这些操作:管理虚拟机、配置权限、分配 IP 地址、创建租户和用户等。本质上就是通过图形化的 操作界面控制其他服务(如 Compute、Networking 等)。当然,如果你熟悉命令,也可以直接采用命令来完成相应的任务。

Telemetry(计量服务)Ceilometer

Ceilometer 结合 Aodh、CloudKitty 两个组件,完成计费任务,如结算、消耗的 资源统计、性能监控等。OpenStack 之所以能管理公共云,一是因为 Ceilometer 的存在,二是因为引人了租户的概念。

更多关于云计算服务 Openstack 系列的学习文章,请参阅:企业云计算平台 Openstack ,本系列持续更新中。

可选组件以及其他组件
Heat

如果要在成千上万个虚拟机里安装和配置同一个软件,该怎么办?采用 Orchestrates 是一个不错的主意,它向每个虚拟机里注人一个名叫 heat-cfntools 的客户端工具,然后就能同时操作很多虚拟机。

Sahana

使用户能够在 OpenStack 平台上(利用虚拟机)一键式创建和管理 Hadoop 集群,实现类似 AWS 的 EMR(Amazon Elastic MapReduce Service)功能。用户只需要提供简单的配置参数和模板,如版本信息(CDH 版本)、集群拓扑(几个 Slave、几个 Datanode)、节点配置信息(CPU、内存)等,Sahara 服务就能够在几分钟内根据提供的模板快速 部署 Hadoop、Spark 及 Storm 集群。Sahana 是一个大数据分析项目。

Ironic

把裸金属机器(与虚拟机相对)加人到资源池中。

Zaqar

Zaqar 为 Web 和移动开发者提供多租户云消息和通知服务,开发人员可以通过 REST API 在其云应用的不同组件中通过不同的通信模式(如 生产者/消费者或发布者/订阅者)来传递消息。

Barbican

是 OpenStack 的密钥管理组件,其他组件可以调用 Barbican 对外暴露的 REST API 来存储和访问密钥。

Manila

为虚拟机提供文件共享服务,不过需要存储后端的配合。

其中Compute Service Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源。Neutron主要管理网络连接服务。Cinder主要管理存储。这三个部分是OpenStack中最为重要的部分。

OpenStack的网络模式

  • Local模式:一般测试时使用,只需一台物理机即可
  • GRE模式:隧道模式,VLAN数量没有限制,性能有点问题
  • VLAN(虚拟局域网)模式:vlan数量上限为4096
  • VXLAN(虚拟扩展局域网)模式:vlan数量没有限制,且性能比GRE好
  • Flat模式:管理员创建租户直接到外网,不需要NAT

OpenStack 组件通信关系

  • 基于HTTP协议进行通信:通过各项目的API建立的通信关系,API都是RESTful Web API
  • 基于SQL的通信:用于各个项目内部的通信
  • 基于AMQP协议的通信:用于每个项目内部各个组件之间的通信
  • 通过Native API实现通信:Openstack各组件和第三方软硬件之间的通信

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 民工哥技术之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 云计算简介
    • 概念
      • 云计算分类
        • 云计算特点
        • Openstack简介
        • Openstack架构
        • Openstack服务
          • OpenStack核心组件
            • 可选组件以及其他组件
            • OpenStack的网络模式
            • OpenStack 组件通信关系
            • Openstack优势
            相关产品与服务
            数据保险箱
            数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档