邱元阳
编者按:新的一年,“高手论技”继续伴随大家前行,身处一线的你,就那些技术上最常遇到的故障、最需要解决的难题、最成熟的应用……都可以在此畅所欲言,各抒己见。是继续围观还是现身说法,新浪微群http://q.t.sina.com.cn/264976,期待您的共同参与。
关于云计算的讨论早已经沸沸扬扬,各种互联网服务都在向“云”靠拢,云平台、云服务、云查杀、云端……各种大“云”小“云”雨后春笋般露出头角,似乎与云不沾边就已经落伍于时代。本刊也开辟过多期云计算辅助教学的专栏,但“云”的技术实现尤其是在校园网上的技术实现还未曾涉及。《高手论技》将分两期,来对私有云在校园网上的技术实现问题展开讨论。
在InfoWorld网站公布的可能影响未来十年的十项新技术中,HTML5排在第十位,而私有云却排在第一位。在云计算大行其道的今天,私有云技术快速成长并迅速崛起,在企业应用和Web部署中开始为众多网络管理人员所瞩目。
在校园环境中,我们从说云,用云,到建云,一步步地接近云计算,似乎云计算已是触手可及,私有云技术的桌面实现也指日可待。
云计算的教育应用开展得如火如荼,但是其技术实现却讳莫如深。校园网中如何实现基于虚拟化的私有云技术,有无必要在教育应用的网络环境中构建自己的私有云,对于网络管理人员来说,还是一种彷徨和观望。
● 拨开迷雾——什么是私有云
我们回顾一下计算模式的重大变化:首先是大型机计算模式,随后是客户机/服务器计算模式,最后又有了一种新的计算模式,就是“云计算”。它是第三代IT应用模式,也是分布式计算和数据中心发展道路上的新阶段。
云计算的出现给IT的发展趋势带来了一抹亮丽的曙光,在短短的几年内,其应用范围已经渗透到从企业到学校、从网络服务到安全工具的各个方面,从软件即服务(SaaS)、平台即服务 (PaaS)到基础结构即服务(IaaS),云计算已将硬件(服务器、存储和网络基础结构)抽象处理为一组计算、存储和连接功能。为使云计算能更适合小范围的Web部署和应用,微软提出了私有云技术解决方案,实现现有信息基础架构上的高性能应用。
随着集群、网格等分布式计算架构的出现和成熟,它们开始直接用于云计算模式。事实上,云计算就是集群、网格计算的一种自然延伸,它帮助我们更方便、灵活地管理和使用计算资源。
从服务的角度来看,云计算也是提供IT服务的一种方式而非产品。云计算的应用类型,大致可以分为公共云、私有云、混合云三种形式(如图1)。
公共云(Public Cloud):服务提供商通过互联网向客户提供计算、存储及其他IT资源,个人和组织机构都可以获得云服务。典型的公共云有亚马逊的弹性计算云(EC2)、IBM的蓝云(Blue Cloud)和谷歌的应用程序引擎(App Engine)等。
私有云(Private Cloud):指一个单位运用虚拟化等云计算技术来构建一个数据中心的模型,它部署在防火墙后面的专有网络或数据中心内。
混合云(Hybrid Cloud):多种云服务和云资源形式的组合、整合,由内部和外部两个提供方维护。
公共云基于标准云计算服务模式,在公共云中,服务供应商创造资源,如应用和存储,公众可以通过网络获取这些资源。
私有云被用来池化内部IT资源以便共享,同时还可以有效管理对外部资源的访问。在私有云中,资源为自己所调度和使用。
私有云是虚拟技术的全方位应用。设计为私有云的数据中心在应用和服务方面与公共云很相似。所有计算资源都集中在一个“池”中,以此向外按需提供应用和服务。它们的唯一区别是计算资源池只能通过这个单位的内部数据中心访问,而不是公共的Internet。这意味着计算资源必须是虚拟化和可迁移的,它们可以在网络中实时移动。
私有云通过共享提高了IT资源的利用率,减少了所需的服务器数量及数据中心的占地面积,也降低了电力、运营和管理成本。
很多公司都提出了自己的私有云解决方案,从硬件到应用程序的各个传统层级都可以提供相应服务,归纳起来,有下列几种基本类型。
软件即服务(SaaS):特色是根据需要作为服务提供的一整套应用程序。软件的单个实例运行在云上,为多个最终用户或机构提供服务,如salesforce.com、Google Apps等。
平台即服务(PaaS):把软件层平台作为服务提供,可用来构建更高水平的服务,如谷歌的App Engine。
基础架构即服务(IaaS):通过网络作为标准化服务提供基本存储和计算能力。服务器、存储系统、交换机、路由器和各种系统都是合用,可用来处理从应用程序组件到高性能计算应用程序的工作负荷,如Joyent。
私有云是为单个用户构建和使用的,因而能够提供对数据、安全性和服务的最有效控制。通常,可用一个6层模型来描述私有云的参考架构(如图2)。
● 亦真亦幻——再谈虚拟化
虚拟化是云计算的基石。
在校园网环境中,常常有多台服务器,运行着多种应用,然而服务器常常是很有限的,还是远远满足不了更多应用需求。在高可靠性和大并发访问的需求下,我们不得不采用网络存储和集群来解决应用需求,这又不得不增加服务器开销。目前的服务器配置,CPU的处理能力和内存容量已经不是问题,甚至还有节余,4核甚至8核的CPU都很常见,48G的内存也不为过,数十TB的存储系统也足够使用,如何充分利用校园网现有的服务器资源,充分发挥硬件的作用和软件的性能?将服务器虚拟化,利用集群实现数据中心的虚拟化,私有云技术也许是一个很好的解决方案。
服务器虚拟化能够避免采购过多的服务器,从而节省大量的支出。实际情况中占用率极低的服务器为数众多,虚拟化技术可以使一台物理服务器完成多台服务器的工作。随着虚拟化技术的普及,IT部门不再满足于这种节省成本的战术性手段,开始采用更具战略意义的方式来实现虚拟化,这就是私有云技术。
以一个普通的校园网为例,我们给出一个私有云的框架示意。图3所示,每台服务器上运行着多个虚拟机,分别用来跑教学平台、教学管理系统、学校办公系统等,然后将每个服务器中运行相同应用的虚拟机进行集群,既不会增加服务器数量,又保证了服务能力,当一台服务器宕机时,不会造成某个应用停止。如果采用传统的方式,每台服务器上运行一个应用,不仅需要多台服务器,还容易在服务器宕机时使相应服务停止,若用多台物理机集群,又增加了服务器数量。可见,以虚拟化为基础,结合集群技术,可以在现有基础设施上实现更多更安全的应用,降低了成本,提高了性能。
要实现这样的框架,虚拟化是最开始就需要解决的。服务器虚拟化常常是构建私有云的第一步。
构建私有云时,所使用到的一些基本组件,就是服务器、存储和虚拟化软件,然后才可构建集群。集群运转后便可以预配置虚拟服务器了,形成一种包含服务器层、网络层和虚拟化层的分层架构,在每一层都需要有相应的管理工具来实现自动化(如图4)。比如选择VMware作为虚拟化软件,CA的Service Assurance套件作为监控工具,IBM的Tivoli、BMC的BladeLogic作为自动化管理工具。
新的CPU生产技术都已经支持CPU的硬件虚拟化,这种支持也为在服务器上运行裸机虚拟机提供了可能。当然,在万不得已的情况,也可以在操作系统上运行虚拟机,不过性能肯定会大打折扣。
谈到虚拟化,我们都会想到VMware。VMware的虚拟机软件产品众多,在私有云架设中常用到的有VMware ESX和VMware vSphere等。我们做网络实验时用的VMware Workstation最好不要用到这里的虚拟化上,这里涉及虚拟化的三种架构类型。
为了不间断地支持多工作负载迁移的能力,需要Hypervisor来支撑并实现这个基本功能。Hypervisor是一种在虚拟环境中的“元”操作系统,也可叫做VMM(虚拟机监视器)。Hypervisor运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件,是所有虚拟化技术的核心。各种Hypervisor的架构存在一些差异,主要架构类别有:
Type I(裸机虚拟化Bare-metal):虚拟机直接运行在系统硬件上,创建硬件全仿真实例,即“裸机”型。其代表有VMware ESX Server、微软Hyper-V、Citrix Xen Server、Linux KVM等。
Type II(主机虚拟化Hosted):虚拟机运行在传统操作系统上,同样创建的是硬件全仿真实例,即“托管(宿主)”型。其代表有VMware Server(GSX)、VMware Workstation、微软Virtual PC、Virtual Server等。
Type Ⅲ(操作系统虚拟化OS-Level):虚拟机运行在传统操作系统上,创建一个独立的虚拟化实例(容器),指向底层托管操作系统,如Parallels的Virtuozzo和OpenVZ等。
三种类型中,操作系统虚拟化所有虚拟机共享内核空间,性能最好,耗费资源最少,但会造成操作系统唯一。主机虚拟化VM(虚拟机)的应用程序调用硬件资源时需要经过VM内核→Hypervisor→主机内核,导致性能是最差的。这就是前面提到的不要在操作系统上用VMware Workstation创建虚拟机的原因。
在私有云中,Hypervisor一般是裸机型和宿主型的,以裸机型最为常见,直接安装在硬件服务器上,操作系统安装并且运行在Hypervisor之上。
可用的虚拟化软件还有VMware vSphere、IBM PowerVM、Red Hat Enterprise Virtulization、VirtualBSD等。为了方便对Hypervisor管理,常常需要操作系统级的集成工具,如微软的System Center等。
Eucalyptus则是著名的开源云计算软件,用Xen和KVM作为虚拟化的管理程序。Eucalyptus的Enterprise版已经对vSphere ESX/ESXi提供了支持。
Eucalyptus的组件包括云控制器(CLC)、集群控制器(CC)、节点控制器(NC)、存储控制器(SC)等,Eucalyptus可以从源代码安装,也可以从面向特定Linux发布版的包安装。
● 舍我其谁——向私有云迁移
有多种途径可以实现从现有的C/S基础架构转向云计算,其中三种途径是最主要和最有效的。
从虚拟机迁移到云:对于已经在虚拟机上部署了应用程序的用户来说,可以将虚拟服务器结合起来,形成可管理的虚拟机集群,部署虚拟化管理平台来自动调配虚拟机和跨虚拟机集群的计算资源,从而形成内部运营的私有云。
从网格迁移到云:通过部署云管理软件,采用虚拟化技术和资源配置工具可以将网格变成私有云。
从桌面迁移到云:应用程序可以从专用服务器迁移到共享基础架构上,并从客户端设备进行访问。
然而,私有云的技术实现却并非轻而易举。在没有足够技术支持的条件下,往往需要采用一些大型云服务公司的既定解决方案。这些方案常常是包含硬件设施、软件基础和服务在内的成套技术。目前较有市场的主流私有云“套餐”主要有四类。
IBM CloudBurst:IBM在2009年提出来的云基础架构,一般认为它是由“蓝云”架构衍生出来的企业私有云解决方案,可以看作是“蓝云”架构在“企业云”场景中的实例。
最新的CloudBurst 2.1基于4~28个HS22V刀片服务器(每个刀片配置72GB主存),1~2个BladeCenter机箱,可运行100~960个虚拟机。管理软件使用的是Tivilo Provising Manager V7.1,Monitoring V6.2.1和System Director6.1.1,而VMware ESXi 3.5管理程序则直接内置在每个HS22刀片主板的闪存中。
VCE Vblock:它是虚拟计算环境联盟的简称,也是VMware、Cisco和EMC的缩写。Vblock于2009年推出,是三家公司联手打造的基础架构包,集合了三者的核心技术,是一款用于打造企业私有云的尖端产品。
Vblock有三种配置,包含了思科统一计算系统、EMC Celerra unified storage(或EMC CLARiiON CX4、Symmetrix VMAX)和VMware vSphere 4,可以支持300~6000个虚拟机。
HP CloudStart:CloudStart是惠普在2010年推出的私有云解决方案,号称可以在30天内帮助企业建立自己的私有云。
CloudStart基于HP的刀片矩阵系统(BladeSystem Matrix),是将BladeSystem Matrix和一些预定义的服务打包到一起形成的一个私有云套餐,形成一个结合了服务器、存储、网络和软件的平台,为用户提供了VMware、微软Hyper-V和思杰HyperVisor的支持选项。
Oracle Exalogic Elastic Cloud:它于2010推出,瞄准企业级的数据中心整合与私有云建设,被戏称作是“盒子里的云”(Cloud-in-a-box),在标准的19英寸宽、42U高的机柜里,集成了服务器、存储、网络、VM、操作系统和中件间等软硬件资源。其特色是使用InfiniBand中间件互连,让所有配置在一起可以形成一个独立高效的大型计算机。
Exalogic的计算节点使用的是1U双路12核机架服务器,配置64位 X86处理器,基于InfiniBand的I/O架构,96GB的内存,2个16GB的名为FlashFire的SSD 固态磁盘和40TB的磁盘存储。1/4机架设置的Exalogic有8个计算节点。
上面这些主流的私有云解决方案,可以非常方便地构建私有云。然而采用以上这些“套餐”的成本,常常在几百万元以上,不是一般的校园网能够承受得起的。因此,利用虚拟化和集群技术,自己部署校园网的私有云,才是可行的方法。
● 不折不扣——校园网上实现私有云
云计算的观念早已深入人心,自2010年度VMworld大会之后,私有云更是为众多企业所青睐。然而,在部署私有云的实施过程中,几乎每一步都是一个技术壁垒,这也使得众多网络技术人员不得要领,望而生畏。
对于稍大一些的校园网,已经具备了搭建私有云的资源基础,无论是作为实际应用还是平台试验,都可以进行一下技术尝试。私有云的实现涉及很多的前沿技术,头绪较多,由于篇幅所限,无法给出详细的实施过程,这里仅对私有云在校园网上的技术实现作一简单阐述,勾勒出一个明晰的框架,期望在大家着手实施时会有所帮助。
考虑到简便性和可操作性,这里给出基于Eucalyptus的私有云实现过程。
Eucalyptus随着Linux发行版Ubuntu的高度集成迅速窜红,在Ubuntu 9.10版中,就已经成了安装菜单的一个选项,让云的架设更加贴近普通用户。这个开源并且免费的云平台正是我们所需要的。
这里以Ubuntu 10.04为例子,简述基于UEC的私有云搭建过程。因为篇幅所限,省去了过程中的截图,实现过程参考了Ubuntu官方网站中的英文帮助文档,更详细的资料和截图可以访问网址https://help.ubuntu.com/community/UEC/CDInstall(英文)获取。
1.准备工作
①一个前端,用于运行云控制器(CLC)、集群控制器(CC)、Walrus(类似于S3的存储服务)、存储控制器(SC);一个或多个节点,用于运行节点控制器(NC)。二者最好都有较快的CPU、较大的内存和硬盘以及较高的网络带宽支持。
②从网上下载Ubuntu 10.04 Server光盘(镜像)。
2.安装前端服务器(云/集群/存储/Walrus)
①用Ubuntu 10.04 Server光盘(镜像)启动,选择第二项——“Install Ubuntu Enterprise Cloud”。
②安装程序将检测是否存在其他Eucalyptus组件。
③根据你选择的拓扑结构选择要安装的组件。
④给集群起个名字,如cluster1。
⑤填写局域网上公用的IP地址范围,云可以将其分配给运行的实例,例如 192.168.1.200-192.168.1.249。
3.安装节点控制器
①首先要确保节点机器所在的网络上,云/群集控制器已在运行。
②在节点机器上用同一个光盘(镜像)引导启动。
③同样选择“Install Ubuntu Enterprise Cloud”。
④系统会自动检测集群环境并会预先为你选择“节点安装”方式。
⑤确认分区方案。
⑥安装的剩余部分将自动进行,节点安装完成后重新启动。
4.注册节点
如果是按照UEC/CDInstall方法安装的,对于Ubuntu 10.04 LTS来说,所有组件的注册都是自动的,包括:正确交换公共SSH密钥、正确配置服务、服务广播它们的存在、合适的UEC组件监听器在运行、验证注册;如果是使用UEC/PackageInstall方法安装,这些步骤就需要手工进行(因为繁琐而复杂,此处略去)。因为前面我们已经选择了光盘启动安装,这些步骤将会自动完成。
5.获取证书
在安装和启动云控制器之后,云的用户需要获取他们的证书。这个可以通过浏览器或命令行来完成。
①通过浏览器进行。
在浏览器(远程机器的浏览器或者在Ubuntu服务器上的浏览器均可)访问URL“https://
默认的用户名和密码都是“admin”,用它登录上去,然后按照屏幕上的提示更改管理员密码和邮件地址。
第一次配置过程结束后,点击屏幕左上方的“credentials”标签,再点击“Download Credentials”按钮来获取证书,将证书保存到“~/.euca”。
将下载的zip文件解压并保存到一个安全的位置(~/.euca):
unzip -d ~/.euca mycreds.zip
②通过命令行进行。
如果是在云控制器的命令行下,可以运行下列命令提取和使用你的证书:
mkdir -p ~/.euca
chmod 700 ~/.euca
cd ~/.euca
sudo euca_conf --get-credentials mycreds.zip
unzip mycreds.zip
ln -s ~/.euca/eucarc ~/.eucarc
cd –
取得证书后,需要在服务器上使用X.509证书来设置EC2 API和AMI工具。
还需要安装必要的云用户工具:
sudo apt-get install euca2ools
为了验证这一切都正常工作,可以查看一下本地集群可用性的详细信息:
6.安装镜像
将镜像添加到UEC的最简单的方法是通过UEC web界面的Image Store来安装。
通过如下URL来访问web界面(确认你是使用 https):
https://
输入你的登录名和密码,点击“Store”标签。
浏览可用的镜像,在想要安装的镜像上点击“Install”。
镜像被下载并安装完成后,可以点击显示在映射按钮下的“How to run?”来查看用来实例化(启动)该镜像的命令。该镜像也将显示在Image标签上给出的列表里。
7.运行镜像
有多种方法来实例化UEC里的一个镜像,如使用命令行、使用一个和UEC兼容的管理工具(如Landscape)、使用Firefox浏览器的ElasticFox插件等。
这里以命令行方法为例进行讲解。
①在运行镜像的一个实例之前,应该首先创建一个当实例启动后可以用来以root用户登录到你的镜像的密钥对(ssh密钥)。密钥会被存储起来,只需要创建一次即可。运行下面的命令:
if [ ! -e ~/.euca/mykey.priv ]; then
mkdir -p -m 700 ~/.euca
touch ~/.euca/mykey.priv
chmod 0600 ~/.euca/mykey.priv
euca-add-keypair mykey > ~/.euca/mykey.priv
这里密钥的名字是“mykey”,如果不小心忘记了,可以运行“euca-describe-keypairs”来获取存储在系统里的已经创建的密钥的列表。
②必须确保在运行任何eucatools工具之前运行命令“source ~/.euca/eucarc”,可能最后的办法是将这条命令加入到.bashrc脚本文件的底部。
③必须开放实例的22端口:
euca-authorize default -P tcp -p 22 -
s 0.0.0.0/0
④接下来,可以创建已经注册的镜像的实例:
euca-run-instances $EMI -k mykey -t m1.small
注意:如果遇到有关image_id的一个错误,可以通过查看Images页面找到它,或者在Store页面上点击“How to Run”查看示例命令。
⑤第一次运行某个实例时,系统会从将要创建该实例的机器上为这个镜像设置缓存。VM镜像通常相当大,在第一次运行某个实例时,这个过程通常需要一段时间。要监测你的实例的状态,可以运行命令:
watch -n5 euca-describe-instances
在输出中,可以看到有关该实例的信息,包括它的状态。当第一次缓存正在进行的时候,实例的状态是“pending”。
⑥当实例已经完全启动,上述状态将变为“running”。在输出里看到分配给你的实例的IP地址,然后连接到它:
IPADDR=$(euca-describe-instances | grep $EMI | grep running | tail -n1 | awk '{print $4}')
ssh -i ~/.euca/mykey.priv ubuntu@$IPADDR
⑦最后,在实例上的工作完成后,退出SSH连接,然后关闭实例:
INSTANCEID=$(euca-describe-instances | grep $EMI | grep running | tail -n1 | awk '{print $2}')
euca-terminate-instances $INSTANCEID
至此,基于UEC的私有云创建完成,但也仅仅是云的基础设施而已,具体到各种应用的部署和优化,还有非常多的工作要做。
创建和实现私有云的方法很多,可选择的类型和云系统软件及虚拟化软件也很多,以上只是其中的一种具体方法,尚不是完整的过程,实施细节还需要在实际部署过程中摸索。虽然如此,我们也已经开始在从“说云”、“用云”到自己“建云”的道路上迈步前进了。但愿在不长的时间内,我们可以看到众多的私有云在校园里绽放并为教育服务。
(下期应用沙龙,更精彩)