OpenStack VDI知识普及

这篇文章看起来会让你头晕!

头晕就对了!

说明这本书面向的就是您这样的决策者!

其实我也头晕!

透漏个小秘密:这篇文章是我复制、粘贴、精简、整理后编出来的。

头晕为什么还写?

是因为我想告诉大家,这东西很复杂、太复杂。

一般人驯服不了它!

我首先承认我是一般人。

既然驯服不了,为什么还要买它?

既然驯服不了,今后如何独自维护它?

你想去远方看风景,买张飞机票就够了!

何必非要买架私人飞机?

因为你驯服不了它!

除非你很有钱,雇一套专业运维班子。

你想点亮你家的电灯,从主干上接根线就够了!

何必非要买台发电机?

因为你驯服不了它!

除非你遇到紧急情况!

除非你担心电线会泄漏你的隐私!

头晕的文字开始了!

OpenStack是当今最具影响力的云计算管理工具,它通过命令或者基于Web的可视化控制面板来管理云端的资源池(服务器、存储和网络)。

OpenStack最先由美国国家航空航天局(NASA)和 Rackspace在2010年合作研发,现在参与的人员和组织汇集了来自100多个国家的超过9500名的个人和850多个世界上赫赫有名的企业,如NASA、谷歌、惠普、Intel、IBM、微软等。

2013年,OpenStack社区终于在诸多开源云计算项目竞赛中漂亮胜出!

云计算让VDI更上一层楼,从Desktop Virtualization变成了Desktop Cloud,又称为DaaS(Desktop-as-a-Service),云给VDI带来了弹性调度、资源池超分、按需分配、虚拟网络、分布式存储、高可用等雨水气息,它让长期以来Vmware和Citrix两大巨头笼罩下的桌面虚拟化市场终于打开了新局面。

云计算推动着OpenStack持续发展壮大,作为一个具备完整解决方案的云计算平台,OpenStack还为用户从桌面云起步,逐步过渡到服务器的云化、企业应用的云化以及未来的企业IT环境演化打开了一条前景广阔的上云之路。

OpenStack VDI知识普及

OpenStack系统目前被广泛应用在各行各业,包括自建私有云、公共云、租赁私有云及公私混合云,用户包括思科、贝宝(Paypal)、英特尔、IBM、99Cloud、希捷等。

OpenStack支持KVM、Xen、Docker等虚拟机软件或容器,默认为KVM。通过安装驱动,也支持Hyper-V和Vmware ESXi,但有些功能暂时不支持。

OpenStack每半年发行一个新版本,各个版本的发行时间表见网站https://releases.openstack.org/。

OpenStack目前版本Newton包括6个核心组件(Nova、Neutron、Swift、Cinder、Keystone、Glance)和14个可选组件,每个组件包含若干个服务,后续版本中组件分类及数量都可能会发生变化,如下图所示:

OpenStack VDI知识普及

以下是Newton版本(目前最新)中各个组件的功能介绍:

OpenStack VDI知识普及

OpenStack VDI知识普及

各个组件的关系图如下图所示:

OpenStack VDI知识普及

OpenStack的组件众多,根据云端的实施过程,我们来梳理一下各个组件的作用:云端要运行很多虚拟机,所以需要在很多服务器中安装并运行虚拟机软件(如KVM、Xen等),有的客户为了安全起见,愿意出高价直接租赁物理机(裸金属机器),所以要用Ironic组件来池化物理机,以便用户能远程使用。

这些运行了虚拟机软件的服务器和被池化的物理机统称为计算节点。为了让Horizon组件以可视化的Web页面来统一操纵计算节点上的虚拟机,需要在计算节点上安装Nova组件,Nova组件还与其他组件打交道。为了让一台虚拟机能在集群内的任一计算节点上快速漂移,虚拟机对应的镜像文件必须存放在共享场所,到底存放在哪里,由Glance组件指定。

由Glance指定存放在Swift组件内,在实际的实施案例中,也可以存放在Ceph中。虚拟机之间需要联网,由Neutron组件负责。虚拟机里面可能还要使用块设备(如硬盘),这需要Cinder组件的配合;虚拟机里可能需要用到共享文件服务,由Manila组件提供服务。

云端的计算节点很多(如1000台),所以虚拟机就更多(如10万台),如果要给它们统一安装一个软件或配置某项参数,那么是不是需要手工一台一台操作呢?显然,手工操作费时费力,而且容易出错,有了Heat组件,我们就可以轻松完成这个任务。

OpenStack的各个组件都是对外暴露REST API接口,以便于其他程序调用,调用时都要进行身份验证和权限管理,这由 Keystone组件完成。跟踪用户消耗的资源并计费的任务由Ceilometer组件完成(需要Aodh和CloudKitty组件的配合)。

OpenStack组件的主要作用是充当“中间人”,它不履行具体的实际任务,而由各种第三方软件来完成,比如虚拟机软件由KVM承担,网站任务由Apache承担,虚拟网络任务由iptables、DNSmasq、Linux vSwitch、Linux网桥承担或者统一由OpenContrail承担,结构化数据存储任务由MySQL或者PostgreSQL承担,中央存储任务由Ceph承担(也可采用其他产品)。当然,OpenStack中也有实现具体功能的组件,比如Swift做中央存储,我们也可以选择相对发展多年并且被大量使用的第三方产品,如Ceph。

一个云端往往包含成千上万台服务器,而且还可能分布在世界各地,分别服务符合延时半径范围内的用户。OpenStack中的“地区”(Region)就是对应地理位置不同的分中心,如中国北京、美国纽约、英国等。

在同一个Region,还可能包含成千上万台机器,如果用一套OpenStack中的组件来管理,势必会导致这些组件本身成为瓶颈(随着集群规模的不断增大,消息系统和数据库系统很可能最先成为瓶颈),所以人们又引入了Cell功能,以便增强 OpenStack集群的扩展性,即把一个Region划分成多个Cell,这些Cell组成树形结构,父Cell主要用于服务通信,它不包含计算节点,子Cell具有自己的消息队列、数据库和Noval-cell服务。

Nova cell在OpenStack的Newton版本中将成为默认项,之前的版本是可选项。在创建虚拟机时,为了规定它能在哪些计算节点集上运行,人们又提出了两个概念,即“可用域”(Availability Zones,AZ)和“主机集”(Host Aggregates,HA),前者可以看成后者的一个特例。

“主机集”其实就是根据计算节点的某些属性对计算节点进行逻辑分组的方法,比如可以分成如下几个“主机集”:万兆网卡的机器、拥有两路CPU的机器、惠普机器、自组装的机器、A机柜里的机器、由UPS供电的机器等。然后我们创建一台虚拟机,指明在上海云端分部的惠普机器上运行,这样只要全部的惠普机器不同时坏,那么虚拟机就能一直正常运行(但每一时刻只能在一台机器上运行,只有当运行的那台机器出故障时,才会“漂移”到其他惠普机器上继续运行)。

“可用域”是用户可见的,用户把自己的多个虚拟机分散到不同的“可用域”中,是为了降低所有虚拟机同时不可用的概率,而“主机集”是管理员可见的,目的是用来隔离虚拟机,从而降低一些特定虚拟机的运行行为对其他虚拟机产生的影响。

多个Region允许共享Keystone和Horizon服务,也可以完全独立。HA可以跨Cell,但是不能跨越Region,一台机器可以同时属于多个HA,因为AZ是HA的特例,所以一台机器允许同时属于AZ和HA。当一个创建虚拟机的请求到达父Cell的Nova-API时,父Cell会通过Nova-cell向各个子孙Nova-cell广播请求,并一次性决定在哪个子孙Cell中的哪台计算节点上创建虚拟机。

OpenStack VDI知识普及


在具体部署OpenStack时应该遵循“逐步扩展部署法”,如下图所示:

OpenStack VDI知识普及

最小系统具备基本的IaaS功能,能通过命令来进行管理,这一步只需安装OpenStack的Keystone、Neutron、Nova和Glance四个组件;此后再安装Horizon就成了小系统,这时可通过Web图形化界面来执行管理;继续安装Swift和Cinder就成了准系统,这时能给虚拟机附加磁盘块设备,并能满足大规模的存储需求;再加上计费组件Ceilometer,就上升为一般系统,一般系统具备公有IaaS的功能。但是由一般系统跨到生产系统,需要完成的工作就特别多,其中性能和安全是两个不得不面对的棘手问题。

KVM已作为IDV的虚拟化层,通过它提供的带外管理接口,就可以和OpenStack实现对接,共享Glance镜像,使用Cinder的块设备资源实现IDV主机外部的数据存储功能,通过openvswitch实现与Neutron的虚拟网络对接和深度融合。

OpenStack实现了VDI与IDV的深度对接与融合。


分享到:


相關文章: