OpenStack入门笔记(一)

笔者从事OpenStack社区开发转眼也两年了,决定抽时间记录一下本人对OpenStack以及云计算的相关理解和认识,不一定正确,欢迎拍砖;


云计算(部分内容摘自网络)

---------

按照美国国家标准与技术研究院(NIST)的定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。


而云计算服务通常被分为三个层面:

IaaS: Infrastructure-as-a-Service(基础设施即服务):服务商提供给用户的是基础设施,即虚拟的硬件(CPU,网卡,路由器等),用户需要自己根据需求搭建上层的各种服务;即用户不在需要去购买实际的物理设备,而是从服务商处按需、按时、按量购买(租赁)这些设施,而用户不需要维护这些设备,服务提供商会维护IT基础设施,用户只需要关注其部署的上层应用;对用户的能力要求较高;

PaaS: Platform-as-a-Service(平台即服务):第二层就是所谓的PaaS,某些时候也叫做中间件。你公司所有的开发都可以在这一层进行,节省了时间和资源。 PaaS公司在网上提供各种开发和分发应用的解决方案,比如虚拟服务器和操作系统。这节省了你在硬件上的费用,也让分散的工作室之间的合作变得更加容易。网页应用管理,应用设计,应用虚拟主机,存储,安全以及应用开发协作工具等;

SaaS: Software-as-a-Service(软件即服务):最高层的就是SaaS,服务商提供用户的就是软件,例如日常中最常见的iCloud、各类网盘都是SaaS;

不同层面有着不同的客户群体,IaaS一般面对的就是大型企业,包括电信运营商,大型制造业,大型IT公司等,其都有行业专用的上层软件;而PaaS则面对中小的技术开发企业,为其直接提供可用于产品开发的平台,如SDK等;而SaaS则一般直接面向个人或小型企业用户,提供方便快捷的应用服务;


云计算的商业模式又可以分为公有云和私有云:

公有云就是面向全部公众开放可用的云服务,可以包括上述的三个层次的服务,知名的公有云包括亚马逊AWS,阿里云等;

私有云就是专门为某一企业定制的企业云,主要为该企业提供云化的IT基础设施,比较知名的有VMware;


关于OpenStack:

OpenStack是由NASA和Rackspace公司发起的开源云操作系统平台,技术细节后面会写到,OpenStack可以用来搭建公有云和私有云商业产品,可以这样形象的理解:AWS和VMware就好比是手机里的IOS而OpenStack就是Android;和智能手机领域一样,对于没有掌握市场先机的公司来说,参与OpenStack,使用OpenStack是目前能找到的最好的在云计算市场分一杯羹的途径。


虚拟化和云操作系统

---------------------------

上面说到,云计算的本质实际上是将物理的设备虚拟化,并提供给用户使用;一般来说,是将一台高性能的物理设备通过虚拟化技术虚拟成若干个满足客户需求规格的虚拟设备,而对于用户来说使用虚拟设备和使用真实的物理设备唯一的区别就是需要有网络链接(好比实际的U盘和云盘,在实际使用上并没有什么区别);而这一切首先得益于最底层的虚拟化技术;简单来说,虚拟化技术需要从最底层的硬件一路支持到操作系统层面;这里要说的是OpenStack本身并不是虚拟化软件,其没有虚拟化能力,而是对虚拟化能力的一层封装,简单来说,一台服务器可能最多能虚拟成八台服务器,但是这就是“云计算”么?显然其规模不够,也不能提供商业产品所需要的各种运维手段,因此需要在其上面封装一层复杂的调度管理软件,让成千上万台具备虚拟化能力的服务器具备“云”的规模,满足商业产品的各种运维诉求,这就是OpenStack了;


OpenStack本身支持多种虚拟化技术,包括Libvirt+KVM、Xen、VMware、Hyper-V等等,其中KVM是Linux的内核支持的,因此也是OpenStack社区最为推荐的,因为开源精神,Xen也是开源实现;而VMware和Hyper-V则是VMware公司和微软的商业产品。这里还需要补充的是KVM只是虚拟化技术,为了开发人员更方便使用,RedHat封装了Libvirt的SDK使得其可以更方便的通过API的方式暴露给开发者(Libvirt本身也支持多种底层虚拟化技术)。


OpenStack

--------------

结合上面的知识,OpenStack本身就变得比较容易理解了,OpenStack是一套云计算的管理软件,包括了友好的用户界面、计算虚拟化能力调度、存储虚拟化能力调度、网络虚拟化能力调度等等,目标就是为了让用户更方便的使用云资源,同时对于服务提供者来说可以更合理的调度、安排资源分配,实时的进行管理。


借用官方的架构图,OpenStack所包含的服务已经上百了,这里只标出了核心服务:


OpenStack采用了解耦的设计理念,将各类服务尽可能的解耦,每个服务组成一个项目并起一个专有的名字,
就像上面的图一样, OpenStack看似复杂且服务众多,其实理解起来并不困难;而所谓核心服务就是我们搭建
云平台最重要的服务;

OpenStack最初的目标是搭建Iaas云平台,既向用户提供基础设施,举个形象的例子来说,我作为服务商向你
提供IT基础设施服务,你以前是去电脑城组装电脑,自己挑选CPU、显卡、网卡、硬盘;自己安装操作系统;而
现在,云化了之后的IT基础设施可以通过在服务商处购买虚拟的设备用来组装你所想要的那台电脑;也是一样的
选择CPU核心数,内存大小,硬盘大小,网络性能等等;而基于之前说的OpenStack解耦化的设计,每一种硬件
资源都在OpenStack中由单独的服务来管理;Nova负责管理计算资源,例如CPU,内存等等(当然Nova所做的
不止这些,这样说并不完全准确,但是这样可以更容易的理解整个OpenStack);Cinder负责提供硬盘;Neutron
负责网络相关的管理;Glance用来管理镜像,相信自己装过系统的都知道,就是网上我们下载的ISO文件,总得
有个地方存吧;而Swift就是我们一般常用的网盘,是用来做对象存储的,这里我们先不细讲;而Heat和Ceilometer
则是运维层面的东西,这里不用过多在意;最后还有一个就是Keystone,也很好理解,一个服务商是有很多客户
的,这些客户之间的资源是要相互隔离开的,而Keystone就是用来在OpenStack中进行用户身份验证和管理的。

OpenStack结合之前介绍的虚拟化技术和云计算的区别可以更详细的讲一下OpenStack的作用;从上面图的箭头
指向可以看到,众多复杂模块最终提供给用户的是一台VM(虚拟机)这台虚拟机对于用户来说和真正的电脑没有
区别,同样有CPU,硬盘,网卡等等;其实不借助任何软件,在一台Linux服务器(最新的Linux均支持kvm)上完
全可以手工创建出这样一台虚拟机,需要提供的是一份几百行长的xml配置定义文件,而这份文件对于普通用户来
说如同天书,而OpenStack其实就是经过各个组件之间的相互配合,为用户提供了一套简单的几条命令就能对虚拟机
生命周期进行管理的软件,在进一步研究代码后我们就会发现,OpenStack中一套复杂的流程处理的最终产物其实
就是为底层的虚拟化技术提供了一份满足客户需求的配置文件,底层的虚拟化技术完成了它自身的任务后,在通过
OpenStack暴露给用户,同时OpenStack在其自身的数据库中记录有用的信息,用来进行权限管理等云运维的工作。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值