植基于 FCA 之虚拟丛集部署与调度
朱家玉 颜增昌 高胜肋 中兴大学 信息科学研究所摘 要
由 CPU 直接提供虚拟化(Virtualization)的功能是信息科学上一个方兴未艾的课 题,由 Intel 及 AMD 兩大 CPU 制造商分别提出 Intel Virtualization Technology 及 AMD Secure Virtual Machine 虚拟化技术,即可見其端倪。虚拟机器(virtual machine)的概 念自 1960 年代提出后,其实作也不断地推陈出新,如 IBM 的 VM 及 VMware 公司的 WMware 等。虚拟机器的高度安全性及扩充性使其应用領域从早期的系统仿真到目前的网路科技 上,如作为 sandbox,honeypot,与各种服务器主机等。因为虚拟主机应用的普及,本論 文针对由虚拟机器建构的丛集架构,于部署与调度上作有效率自动化的管理研究。
Linux virtual server(LVS)[1]为目前最为广泛使用之 Linux 丛集管理软件,LVS 管 理由真实主机组成之丛集环境以提供网路服务所需之高度可用性及扩充性。为善用 CPU 的 运算资源及提高系统的安全性,我们以 LVS 管理的丛集中部署 User-Mode Linux (UML)虚 拟机器以提供网路服务,如 web,ftp 等。以真实主机上部署不同的 UML 虚拟机器以提供 不同的网路服务时,若某种服务遭受攻击而当机,其它服务可以完全不受影响,且受攻击
之 UML 虚拟机器只需重新启动即可会恢復运作。为达成真实主机之间的负载平衡及提高由
UML 虚拟机器所提供之服务的效能,我们首先以 Formal concept analysis (FCA)模式化
LVS 丛集环境,并实时撷取各真实主机之系统信息(如 cpu loading, memory usage, free disk sapce 等),再运用 FCA 之 partial ordering 运算选择最适之真实主机以部署新 UML 虚拟机器或将负载过重真实主机上之 UML 虚拟机器移除。
关键词:虚拟机器、丛集计算机、User-mode Linux、Formal concept analysis、安全性
364
論文编号:757 數位科技组
1. 前言
虚拟机器(virtual machine)的概念源自 1960 年代,亦称为硬件虚拟机器(hardware virtual machine)。基本上,虚拟机器为仿真硬件环境(包括 cpu、内存、硬盘、及网路卡等)之特 殊软件,使得应用软件及操作系统等系统软件得以在虚拟机器上执行。对使用者而言,一 部虚拟机犹如在单一独立的计算机,拥有独立的 cpu 排程及内存管理,可以安装与真实主 机不同的操作系统,甚至可以仿真出比真实主机更丰富的接口设备,如 SCSI 卡等。虚拟 机器的主要优点如下:
1. 独立性:虚拟机器之间互相独立,不会互相干扰并且没有直接共享之资源。
2. 容易测试:虚拟机器为操作系统之最佳测试平台。由于虚拟机器与真实主机之间互 相独立,因此操作系统的新版本或新功能极适合在虚拟机器上测试,因为即使虚拟 机器毁损也不会影响真实主机。
3. 安全性:对真实主机而言,虚拟机器仅是一个在使用者空间(user space)执行的应用软 体,因此当在虚拟机器中执行的行程 crash,或是虚拟机器遭受攻击而当机,真实主 机仍不受影响。
虚拟机器的发展未曾间断,目前约有 20 个不同的虚拟机器软件实作,包括 IBM VM
(最早出现的第一部真实的 VM 系统,现今仍然被广泛的使用)、Bochs (可携式开放原始码 程序,为 x86 及 AMD64 仿真器) 等。此外,虚拟机器的另一意义为应用程序虚拟机器
(application virtual machines),意即应用程序虚拟机器提供程序执行环境,使得应用程序可 以透过虚拟机器在不同的硬件平台上执行。目前约有 30 种应用程虚拟机器,其中升阳电 脑的 java 虚拟机器最为广泛使用。
微软公司终于在 2007 年 1 月推出 Vista 操作系统以取代 Windows XP 操作系统,然而 市场调查公司 IDC 的报告却指出 Linux 操作系统的占有率在 2007 年底将达 33%以上。早
于 1994 年初,国际航空暨太空总署(NASA)太空资料与信息科学卓越中心便以 Linux
主机发展最初的个人计算机丛集计划,亦称为比欧胡(Beowulf)专案。比欧胡项目的成功
引領 了个 人电 脑丛 集环 境的 迅速 发展 ,在 高可 用性 (high-availability) 、高 可扩 充性
(high-scalability)以及高性能(high-performance)領域中,使用丛集架构已是不可抗拒的潮 流,而 TOP500[3]网站 2006 年 11 月所公布的全球最快速 500 套计算机系统中,361 套采用 丛集(cluster)计算机即为最佳证明。
目前丛集计算机环境是由一部执行丛集管理软件(cluster management software)的服务器 及多部真实主机所构成。Linux Virtual Server (LVS)[1] 为目前最广为使用之Linux丛集管理 软件,如Linux入口网站[url]www.linux.com及开放原始码网站sourceforge.net[/url]均架设LVS丛集电 脑以提供服务。
图1为LVS之架构图。
365
論文编号:757 數位科技组
现行之丛集计算机环境(包括LVS)均由真实主机组成以提供系统之可用性及扩充性。本 論文中,为了提高系统的安全行及充分运用CPU之运算资源,我们在LVS丛集环境中部署 虚拟机器,并以虚拟机器提供所需的网路服务(如web,ftp等)。当虚拟机器遭作网路攻击 或操作不当而当机时,我们只需停止该虚拟机器的行程(process)并重新启动新的虚拟机器 行程即可立刻提供服务。部署虚拟机器之丛集环境我们称之为虚拟丛集环境。虚拟丛集环 境除了丛集环境原有之高可用性及高可扩充性优点外,更具备了高安全性。
User
Internet/Intranet
Linux Virtual Server
Real Server #1
LVS Director
Real Server #2
. . .
Backend
Storage
Backup
Real Server #n
图1. LVS之架构图
虚拟丛集环境除了上述优点外,更可依实际的负载(loading)情形动态地新增虚拟机器 或将虚拟机器从负载较重的主机搬移到较多可用资源(CPU、内存、及硬盘空间等)的真 实主机上以平衡虚拟丛集的负担。为达成此目的,本論文实作了虚拟丛集管理系统,Virtual Cluster Management System(VCMS)。VCMS 包括监测、部署及调度三部份,监测子系统 纪錄并分析真实主机的 CPU 使用率,内存使用狀况等系统信息;当需要启动新的虚拟 机器提供服务时,则由部署子系统依据 FCA 的 partial ordering 挑选最适合的真实主机以执
行 UML 虚拟机器;当监测子系统发现某部真实主机系统负担太重时则由调度子系统依据 FCA 的 partial ordering 将部份 UML 虚拟机器移到其它负担较轻的真实主机上以平衡丛集 环境的负担并提高效能。
本論文的组织如下,第二节介绍虚拟丛集环境,第三节为虚拟丛集管理系统的數学模 式,第四节简单介绍我们的虚拟丛集管理系统实作,最后是结論与展望。
2. 虚拟丛集环境
为善用 CPU 的运算资源及提高系统的安全性,我们在 LVS 所管理的丛集中部署虚拟 机器以直接提供 web,ftp 等网路服务。目前 Linux 环境中常見的虚拟机器有 Xen[4]、 VMware、及 UML 等。由于 UML 文开放原始码软件,且丰富的命令列參數及适合程序化 控制,因此我们在 LVS 中部署 UML 虚拟机器提供各式网路服务。
366
論文编号:757 數位科技组
UML 是 一种安全的 虚拟机器,由 UML 系 统核心 (UML kernel) 及档案系统 (root filesystem)所组成。启动 UML 虚拟机器就如执行一般程序般地在使用者模式下执行 UML kernel 程序,例如$ linux ubd0=root_fs,因此,对真实主机而言 UML 即为一般的行程(如
图 2 所示)。UML 也提供了丰富的网路功能,如 ethertap、TUN/TAP[5]、slip、slirp 等,其 中又以 TUN/TAP 最为广泛使用。UML 的主要用途包括操作系统核心的开发与除错、试 验新的套件系统、及虚拟网路等。
Process2...
Process1 UML
Linux Kernel
Hardware
图 2. UML 之架构
UML提供超过30个命令列參數以动UML行程,例如:$ linux ubd0=root_fs mem=128M eth0=tuntap,,,140.120.7.150。即表示 分 配 128M 的 内存空 间给 UML,同时启动TUNTAP以太网路虚拟装置。此外,标准的UML虚拟机器没有提供控制 台(console) 的登入功能,而必须使用ssh等远程登入工具与之通讯。例如:我们可以使用
$ ssh 1 uml1 "uptime"來监看uml1这部UML虚拟机器的cpu loading。由此可見在命 令列模式下管理虚拟机器对系统管理员而言是沉重的负担,因此,我们开发虚拟机器监测 系统以有效地监测并管理部署UML虚拟机器的LVS丛集环境。
随着 UML 虚 拟 机器的 普 遍使用 , Netkit[6] 及 Virtual Network User-Mode Linux
(VNUML)[7]等软件纷纷推出以简化UML虚拟机器的使用,其中又以VNUML较为广泛使 用。VNUML由西班牙马德里科技大学所研发,包含一个以XML为基础的VNUML语言以 规划虚拟网路及此VNUML语言的直译程序(vnumlparser.pl)。因此在规划虚拟网路 时,我们先以VNUML语言描述虚拟网路的連接方式(如virtual bridge或 virtual switch) 以 及 虚拟 机器的 數量 等信息 ,再 执行vnumlparser.pl即 可启 用虚 拟网路 环境 。图3 的 VNUML范例即以virtual_bridge連结兩部UML虚拟机器。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE vnuml SYSTEM "/usr/local/share/xml/vnuml/vnuml.dtd">
<vnuml>
<global>
<version>1.7</version>
<simulation_name>xlink_vm2
</simulation_name>
367
論文编号:757 數位科技组
<ssh_version>1</ssh_version>
<ssh_key>~/.ssh/identity.pub</ssh_key>
<automac/>
<vm_mgmt type="none" />
<vm_defaults>
<filesystem type="cow">root_fs_tutorial</filesystem>
<kernel>kernels/linux</kernel>
<console id="0">xterm</console>
</vm_defaults>
</global>
<net name="Net0" mode="virtual_bridge"
external="eth0"/>
<vm name="uml1">
<if id="1" net="Net0">
<ipv4>140.120.7.13</ipv4>
</if>
<route type="ipv4" gw="140.120.7.254">default</route>
<forwarding type="ip" />
</vm>
<vm name="uml2">
<if id="1" net="Net0">
<ipv4>140.120.7.14</ipv4>
</if>
<route type="ipv4" gw="140.120.7.254">default</route>
<forwarding type="ip" />
</vm>
<host>
<hostif net="Net0">
<ipv4>140.120.7.150</ipv4>
</hostif>
<physicalif name="eth0" ip="140.120.7.150"mask="255.255.255.0"
gw="140.120.7.254" />
<route type="ipv4" gw="140.120.7.254">default</route>
</host>
</vnuml>
图 3.VNUML 范例
368 論文编号:757 數位科技组
对end-user而言,丛集式计算机如同单一计算机,可以提供高度的可使用性及扩充性。丛 集式计算机适合科学计算、电影制作、及提供网路服务等。在建立由UML虚拟机器所组成的 虚拟网路环境后,我们进一步以LVS建置虚拟丛集环境。在LVS丛集中负责对外提供服务(亦
即 接收服务封 包)的 机器 称为 director , director 在收到要 求服务的封 包后便依 据 Round-Robin( 默认值)、 Weighted Round-Robin 、 Least-Connection 、 Weighted Least-Connection等平衡负载算法将封包传递到后端实际提供服务的机器(称为real server),再由real server将结果传回发出服务要求的主机。
在LVS丛集中,当某部real server无法提供服务,或real server的负载太重时,管 理者可以动态地加入real server以平衡负载并提高服务的效能,而这种做法也使得LVS 丛集具备高度的可用性及扩充性。建立LVS虚拟丛集的步骤如下:
1. 安装ipvsadm套件:
sudo apt-get install ipvsadm
2. 设定director虚拟机器(假设为web服务器):
sudo ipvsadm –A –t 140.120.8.231:80
3. 加入real server虚拟机器:
sudo ipvsadm –a –t 140.120.8.231:80
-r 140.120.8.241:80 -m
LVS 丛集环境中的 director 及 real server 原本均采用真实主机,为提高丛集环境的安 全性,我们将 director 及 real server 均改为 UML 虚拟机器,图 4 所示为在 4 部真实主机上 建置提供 www service 及 ftp service 的兩个独立 LVS 丛集,且每个 LVS 丛集均由 3 部 UML 虚拟机器组成。
LVS(www)
LVS(ftp)
LVS Director (VM)
LVS Director (VM)
server
(VM)
server
(VM)
server
(VM)
server
(VM)
Host 1
Host 2 Host 3
Host 4
图 4. LVS 虚拟丛集
在实际使用上 web server 为 cpu-bound 的软件,而 ftp server 为 IO-bound 的软件, 因此图 4 中的真实主机所耗用的系统资源也会因其所执行的虚拟机器所提供的服务類型 不同而有所差異。为了平衡真实主机的负载及提高 LVS 服务的效能,我们在第三节中以
FCA 來 model 真实主机的负载,并以 partial ordering 來决定执行新虚拟机器的真实主
369
論文编号:757 數位科技组
机。
3. 以正规化概念分析作为 LVS 之模型
正规化概念分析(Formal concept analysis,FCA)是一种以点阵理論(Lattice Theory)为基 础进行资料分析的數学方法,能根据对象(Object)的属性做分群的动作。FCA扩充了正式 分析方法(Formal analysismethods),并且在统计及概念分析領域之中可以互补。FCA的定 义及基本原理在[8]有详细的叙述。
若 O o1 ,o2 , ,on 为一对象(objects)集合, A={a1 ,a2 , ,am } 为一属性(attributes)集 合。在 FCA 中将 concept 定义为數对 Oi , Aj , Oi ⊆O , Aj ⊆A ,代表 Oi 对象子集合中 的每个元素均具有 Aj 子集合中的属性;若 ok ∉Oi 则代表 ok 不具有 Aj 中的某个属性,同
理,若 ak ∉Ai 则代表 Oi 集合中的某个对象不具 ak 属性。
Concepts之间可以透过包含(inclusion)的运算建立partially ordered关系。若 Oi, Ai 及
O,j Aj 为concepts,则partial order ≤可以定义为 Oi , Ai ≤O j , Aj ,如果 Oi ⊆O j 或
Ai ⊆Aj 。
本論文中我们使用FCA的concept來model LVS丛集环境中真实主机所具有的系统资
源,并进一步以partial order的运算挑选出LVS丛集环境拥有最多可用系统资源的真实主
机。以图 4 的LVS丛集环境为例, H h1 ,h2 ,h3 ,h4 对象集合代表LVS丛集中的四部真实 主机,而 A={a1 ,a2 ,a3 ,a4 } 属性集合代表每部真实主机之 a1 : cpu loading,a2 : free memory,
a3 : free disk space, a4 : number of UML virtual machines等属性。假设 (h1,a1 , a2 ) ,
(h2 ,a1 , a2 , a3 ),(h3 ,a3 ) ,(h4 ,a2 , a3 ) 等 4 个concepts分别代表四部真实主机之
及时可用系统资源,且 (h1,a1 , a2 ) ≤(h2 ,a1 , a2 , a3 ) ;
(h3 ,a3 ) ≤(h2 ,a1 , a2 , a3 ) ; (h4 ,a2 , a3 ) ≤(h2 ,a1 , a2 , a3 ) 。
因此, h2 拥有最多的可用资源,亦即当需要启动新的 UML 虚拟机器时, h2 为最适合之真 实主机。
在下一节中,我们将介绍目前发展之以正规化概念分析为基础之 LVS 丛集环境管理系
统。
370
論文编号:757 數位科技组
4 虚拟丛集管理系统
依据前一节 FCA 模型及 partial order 运算,我们以 Java 语言实作 LVS 虚拟丛集管
理系统,本系统主要包含三部份:
1. 资料收集模块:
利用 Linux secure shell 远程访问功能搜集每一部真实主机上的可用系统资 源,包括 CPU load、Memory、free disk space、以及已启动之 UML 虚拟机器數
量等资料,其中 CPU 的负载使用 cat /proc/loadavg 指令取得 cpu 每五分钟的
负载值做为计算的依据,系统可用之 Memory 为 vmstat 指令中所回传的 free memory 值,free disk space 则为 df -h 指令所取得之硬盘可用空间。
2. FCA 模块:
实作 FCA 之 partical order 运算,将资料收集模块所取得的 CPU load、Memory、
free disk space、及 UML 虚拟机器數量等资料作为每部真实主机之属性,依照
partial order 运算的结果决定最适合部署虚拟机器之真实主机。
3. 管理模块:
定期检视资料收集模块所取得的系统资料检视以监控 LVS 丛集环境的效能,当 某一网路服务效能较低而需启动新的 UML 虚拟机器以平衡负载时,呼叫 FCA 模
组计算出最适合部署虚拟机器之真实主机,并以命令列的方式动态地启动新的
UML 虚拟机器提供网路服务。
图 5 为资料收集模块所搜集之实验测试结果。取得各真实主机之系统资源數据后,管理模
组呼叫 FCA 模块中作 partial order 运算,以图 5 的资料为例 HOST2 最适合安装新 UML 虚
拟主机之真实主机。
CPU load(%) Disk Spaces(GB) Memory(KB) VM
HOST1 33.11 5 9008 3
HOST2 20.20 10 11468 3
HOST3 16.20 1 104068 4
HOST4 50.25 3 9276 5
HOST5 45.15 10 9008 2
图 5. LVS 虚拟丛集中真实主机之系统资源
五、结論
371
論文编号:757 數位科技组
本論文在真实主机上部署虚拟机器以建置 LVS 虚拟丛集系统,除了在有限的真实主机
上提供多样化的网路服务外并提高了系统的安全性。在虚拟丛集中,由于因每部真实主机
之可用系统资源不尽相同,利用正规分析表示式监控观察 CPU、内存、行程數、硬盘空 间、及虚拟主机的數目,能有效的达到负载平衡,也能充份的使用所有在虚拟丛集系统中 的主机资源,不仅仅符合经济效益,也可以有效的降低成本,及系统管理上的方便性。
在系统安全考量上,当真实主机在网路上遭受攻击而当机时,往往必需花费很多精力 去重建系统,反之,虚拟主机当机后,并不会影想真正的真实主机,使得造成的损害减到 最小的程度。LVS 套件可以简单的建置丛集环境,在一部真实主机内定义多部的 UML 虚拟 机器以提供服务。我们利用正规概念分析來将虚拟丛集管理模式化,并实作虚拟丛集管理 系统运,当提供服务的虚拟机器过度忙碌时可启动新的 UML 虚拟机器,或将 UML 虚拟机器 迁移到具有较多可用系统资源的真实主机上,以平衡负载并提高网路服务的效能。
本論文贡献,在虚拟丛集系统中使每台主机发挥最高的效能、及高可用性、高安全性、及 有经济效益。
參考文献
1. Fabio Vitali. Versioning hypermedia. ACM Computing Surveys, 31(4), 1999.
2. J. Dike. A user-mode port of the linux kernel. In Proceedings of USENIX Annual Linux
Showcase and Conference, Atlanta, GA, 2000.
3. Top 500 Organization. Top 500 supercomputer. [url]http://www.top500.org[/url]
4. [url]http://sourceforge.net/projects/xen/[/url]
5. Maxim Krasnyansky and Maksim Yevmenkin. Virtual point-to-point(tun)
andethernet(tap)devices.[url]http://vtun.sourceforge.net/tun.[/url]
6. P. Murray-Rust and H. S. Rzepa. Chemical markup language. [url]http://www.xml-cml.org[/url]
7. Fermin Galan and David Fernandez. Virtual network user mode linux.[url]http://jungla.dit.upm.es/[/url] vnuml
8. [url]http://en.wikipedia.org/wiki/Formal_concept_analysis[/url]
372
論文编号:757 數位科技组
来个笑话
**** 作者被禁止或删除 内容自动屏蔽 ****页:
[1]