技术流ken

运维拯救世界

云计算系列:云计算介绍(一)–技术流ken

云计算介绍

 

众所周知Google谷歌是一家致力于互联网搜索、云计算、广告技术等领域的科技企业,一直在努力为全球无数的用户提供着大量基于互联网的产品与服务,而Amazon亚马逊则是全美国最大的网络电子商务公司,销售内容涉及方方面面,业务范围更是遍布全球,对于这种互联网巨头企业自然少不了庞大的基础设施的支撑,但是传统的硬件设施一旦投入就要一大笔钱,并且在业务的淡季也要一直的空闲,这样无疑产生了资源和资金的巨大浪费,所以最初的云计算便是由Google与Amazon分别提出的,核心理念之一就是通过云计算服务降低用户对资源拥有的成本。

 

当用户能够通过互联网方便的获取到计算、存储等服务时,我们比喻自己使用到了“云计算”,云计算并不能被称为是一种计算技术,而更像是一种服务模式。每个运维人员心里都有一个对云计算的理解,而最普遍接受的是NIST(美国国家标准与技术研究院)的定义:

 

云计算是一种按使用量付费的服务模式,这是一种能够提供可用的、便捷的、按需求的网络访问模式,计算共享池能够快速的为用户提供网络、服务器、存储、应用软件及其他服务,并且只需要花费很少的管理时间。

 

 

IT系统架构的发展

 

目前为止大致可以分为3个阶段

  1. 物理机架构 这一阶段,应用部署和运行在物理机上。 比如企业要上一个ERP系统,如果规模不大,可以找3台物理机,分别部署Web服务器、应用服务器和数据库服务器。 如果规模大一点,各种服务器可以采用集群架构,但每个集群成员也还是直接部署在物理机上。 我见过的客户早期都是这种架构,一套应用一套服务器,通常系统的资源使用率都很低,达到20%的都是好的。
  2. 虚拟化架构 摩尔定律决定了物理服务器的计算能力越来越强,虚拟化技术的发展大大提高了物理服务器的资源使用率。 这个阶段,物理机上运行若干虚拟机,应用系统直接部署到虚拟机上。 虚拟化的好处还体现在减少了需要管理的物理机数量,同时节省了维护成本。
  3. 云计算架构 虚拟化提高了单台物理机的资源使用率,随着虚拟化技术的应用,IT环境中有越来越多的虚拟机,这时新的需求产生了: 如何对IT环境中的虚拟机进行统一和高效的管理。 有需求就有供给,云计算登上了历史舞台。

计算(CPU/内存)、存储和网络是 IT 系统的三类资源。 通过云计算平台,这三类资源变成了三个池子 当需要虚机的时候,只需要向平台提供虚机的规格。 平台会快速从三个资源池分配相应的资源,部署出这样一个满足规格的虚机。 虚机的使用者不再需要关心虚机运行在哪里,存储空间从哪里来,IP是如何分配,这些云平台都搞定了。

 

公有云、私有云和混合云

  • 公有云(Public Cloud) 
    通常指第三方提供商为用户提供的能够使用的云,公有云一般可通过 Internet 使用,可能是免费或成本低廉的,公有云的核心属性是共享资源服务。这种云有许多实例,可在当今整个开放的公有网络中提供服务。例如:aws,阿里云,青云,百度云,腾讯云。 
    优点:价格低廉,使用方便
  • 私有云(Private Clouds) 
    是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。该公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。私有云可部署在企业数据中心的防火墙内,也可以将它们部署在一个安全的主机托管场所,私有云的核心属性是专有资源。 
    优点:可控,数据安全(银行必然使用私有云
  • 混合云(Hybrid Cloud) 
    混合云融合了公有云和私有云,是近年来云计算的主要模式和发展方向。我们已经知道私企业主要是面向企业用户,出于安全考虑,企业更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源,在这种情况下混合云被越来越多的采用,它将公有云和私有云进行混合和匹配,以获得最佳的效果,这种个性化的解决方案,达到了既省钱又安全的目的,例如在一次活动中,只需要暂时几台机器,在私有云存在的情况,考虑混合云的使用,是最合理化的。 
    优点:集合的使用方式更完美,可扩展,更节省

 

 

服务层次

 

NIST还针对于云计算的服务模式提出了3个服务层次:

云平台是一个面向服务的架构,按照提供服务的不同分为 IaaS、PaaS 和 SaaS。 请看下图

 

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

IaaS(Infrastructure as a Service)提供的服务是虚拟机。 IaaS 负责管理虚机的生命周期,包括创建、修改、备份、启停、销毁等。 使用者从云平台得到的是一个已经安装好镜像(操作系统+其他预装软件)的虚拟机。 使用者需要关心虚机的类型(OS)和配置(CPU、内存、磁盘),并且自己负责部署上层的中间件和应用。 IaaS 的使用者通常是数据中心的系统管理员。 典型的 IaaS 例子有 AWS、Rackspace、阿里云等。

PaaS(Platform as a Service)提供的服务是应用的运行环境和一系列中间件服务(比如数据库、消息队列等)。 使用者只需专注应用的开发,并将自己的应用和数据部署到PaaS环境中。 PaaS负责保证这些服务的可用性和性能。 PaaS的使用者通常是应用的开发人员。 典型的 PaaS 有 Heroku、Google App Engine、IBM BlueMix 等。

SaaS(Software as a Service)提供的是应用服务。 使用者只需要登录并使用应用,无需关心应用使用什么技术实现,也不需要关系应用部署在哪里。 SaaS的使用者通常是应用的最终用户。 典型的 SaaS 有 Google Gmail、Salesforce 等。

 

 

OpenStack项目

 

OpenStack官方网站:https://www.openstack.org/

Openstack项目的版本按照ABCDEFG……的顺序发布,每6个月更新一次。

Openstack最初是由NASA和Rackspace共同发起的云端计算服务项目,该项目以Apache许可证授权的方式成为了一款开源产品,目的是将多个组件整合后从而实现一个开源的云计算平台,目前Openstack项目正在被红帽、IBM、AMD、Intel、戴尔、思科、微软等超过一百家厂商共同研发,并已经支持了几乎所有的常见云计算环境,拥有了良好的可扩展性,而且部署搭建Openstack服务也变得十分简单,目前国内对于云计算的需求也逐渐增加,华胜天成、高德地图、京东、阿里巴巴、百度、中兴、华为等中国企业也加入到了Openstack项目研发当中,Openstack项目也正在随着全球内得到了众多厂商的参与支持而快速成熟。

第22章 使用openstack部署云计算服务环境。第22章 使用openstack部署云计算服务环境。

Open是开放,Stack则是堆砌之意,合起来就是将众多的功能服务堆积起来的集合,让人们通过Openstack云计算项目,能够将诸如计算能力、存储、网络和软件等资源抽象成服务,以便让用户可以通过互联网远程来享用,付费的形式也变得因需而定,调整方便,拥有极强的虚拟可扩展性,是公共和私有云的建设与管理软件中的优秀开源项目。

 

Openstack作为一个云平台的管理项目,其功能组件覆盖了网络、虚拟化、操作系统、服务器等多个方面,每个功能组件交由不同的项目委员会来研发和管理,目前核心的项目包括有:
功能 项目名称 描述
计算服务 Nova 负责虚拟机的创建、开关机、挂起、迁移、调整CPU、内存等规则。   (核心服务)
对象存储 Swift 用于在大规模可扩展系统中通过内置的冗余及高容差机制实现对象存储的系统。(可选服务)
镜像服务 Glance 用于创建、上传、删除、编辑镜像信息的虚拟机镜像查找及索引系统。  (核心服务)
身份服务 Keystone 为其他的功能服务提供身份验证、服务规则及服务令牌的功能。   (核心服务)
网络管理 Neutron 用于为其他服务提供云计算的网络虚拟化技术,可自定义各种网络规则,支持主流的网络厂商技术。(核心服务)
块存储 Cinder 为虚拟机实例提供稳定的数据块存储的创建、删除、挂载、卸载、管理等服务。(核心服务)
图形界面 Horizon 为用户提供简单易用的Web管理界面,降低用户对功能服务的操作难度。
测量服务 Ceilometer 收集项目内所有的事件,用于监控、计费或为其他服务提供数据支撑。
部署编排 Heat 实现通过模板方式进行自动化的资源环境部署服务。
数据库服务 Trove 为用户提供可扩展的关系或非关系性数据库服务。

 

 

在上面的这些服务中,哪些是 OpenStack 的核心服务呢? 核心服务就是如果没有它,OpenStack 就跑不起来。 很显然:

  1. Nova 管理计算资源,是核心服务。
  2. Neutron 管理网络资源,是核心服务。
  3. Glance 为 VM 提供 OS 镜像,属于存储范畴,是核心服务。
  4. Cinder 提供块存储,VM怎么也得需要数据盘吧,是核心服务。
  5. Keystone 认证服务,没它 OpenStack 转不起来,是核心服务。
  6. Swift 提供对象存储,不是必须的,是可选服务。
  7. Ceilometer 监控服务,不是必须的,可选服务。
  8. Horizon 大家都需要一个操作界面吧。

 

swift和cinder区别:

 

swift是object storage(对象存储),将object(可以理解为文件)存储到bucket(可以理解为文件夹)里,你可以用swift创建container,然后上传文件,例如视频,照片,这些文件会被replication到不同服务器上以保证可靠性,swift可以不依靠虚拟机工作。所谓的云存储,OpenStack就是用swift实现的

cinder是block storage(块存储),你可以把cinder当做U盘管理程序来理解。你可以用cinder创建volume,然后将它接到(attach)虚拟机上去,这个volume就像虚拟机的一个存储分区一样工作。如果你把这个虚拟机terminate了,这个volume和里边的数据依然还在,你还可以把它接到其他虚拟机上继续使用里边的数据。cinder创建的volume必须被接到虚拟机上才能工作。

 

Openstack服务组件协同工作拓扑图

 

中间菱形VM是虚拟机,围绕 VM 的那些长方形代表 OpenStack 不同的模块

 

OpenStack 本身是一个分布式系统,不但各个服务可以分布部署,服务中的组件也可以分布部署。 这种分布式特性让 OpenStack 具备极大的灵活性、伸缩性和高可用性。 当然从另一个角度讲,这也使得 OpenStack 比一般系统复杂,学习难度也更大。

 

openstack架构及优势

 

OpenStack为私有云和公有云提供可扩展的弹性的云计算服务,这种服务云必须是简单部署并且扩展性强。

1、模块松耦合

2、组件配置较为灵活

3、二次开发容易

 

注: 松耦合

松耦合系统通常是基于消息的系统,此时客户端和远程服务不知道对方是如何实现的。客户端和服务之间的通讯由消息的架构支配。只要消息符合协商的架构,则客户端或服务的实现就可以根据需要进行更改,而不必担心会破坏对方。有助于降低客户端和远程服务之间的依赖性。

 

 

 

 

OpenStack共享服务组件

 

数据库服务( Database Service ):MairaDB 及 MongoDB
消息传输(Message Queues):RabbitMQ
缓存(cache): Memcached 时间(time sync):NTP
存储(storge provider):ceph、GFS、LVM、ISICI等
高可用及负载均衡:pacemaker、HAproxy、keepalive、lvs等

 

OpenStack核心组件

身份服务( Identity Service ):Keystone
计算( Compute ): Nova
镜像服务( Image Service ): Glance
网络 & 地址管理( Network ): Neutron
对象存储( Object Storage ): Swift
块存储 (Block Storage) : Cinder
UI 界面 (Dashboard) : Horizon
测量 (Metering) : Ceilometer
部署编排 (Orchestration) : Heat

1 thought on “云计算系列:云计算介绍(一)–技术流ken

  1. Howdy! I know this is somewhat off topic but I was wondering which blog platform are you using for this site?

    I’m getting sick and tired of WordPress because I’ve had
    problems with hackers and I’m looking at alternatives
    for another platform. I would be fantastic if you could point
    me in the direction of a good platform.

发表评论

邮箱地址不会被公开。