[[PageOutline]]
{{{
#!html
Haizea
}}}
----
= 【1.Haizea介紹】 =
* '''簡介:'''是一個開放原始碼的'''''以VM為基之租約管理架構'''''(virtual machine-based lease management architecture)
* 資源管理者(排程管理者)
* 使用租約機制
* VM-based
* 開放原始碼
[[Image(what_haizea_does.png,width=500px)]]
* '''用途:'''(有兩種使用方式)
1. 獨立使用,通常用做 simulation
2. 作為 OpenNEbula 的後端排程
* '''特色:'''
* 租約特色:
* lease必須能平行處理
* Best-effort 租約 - 將會使用queue等待,直到有合適資源可使用
* Advance reservation (AR) 租約 - 可以預定於未來某一段時間執行
* Immediate 租約 - 資源必須馬上被提供
* 演算法特色:
* 明確地排程VM部署時所需的相關程序,而不需使用者來做分配
* 利用 suspend/resume (當有更高權限的租約時,會將較低權限的VM suspend,再 migration 到其他台機器,再resume,也可使用 live-migration)
* best-effort requests 使用先到先處理 queue with backfilling (aggressive, conservative, or with any number of reservations).
----
= 【2.架構】 =
[[Image(architecture.png,width=300px)]]
* 架構分為三層:
1. '''Request Frontend''' - 接受需求的地方,可接受(1)OpenNEbula的要求 (2)直接從命令列來的要求 (3)檔案tracefile的要求(有 SWF 格式或是 Haizea專用的 LWF 格式)
2. '''Scheduling Core''' - requests 被處理和排程的地方
3. '''Enactment Modules''' - 真正執行排程後後動作的地方,Haizea可以管理 Xen 和 KVM 的叢集(藉著 OpenNEbula)(VMware 再將來也會支持),或是模擬的叢集
----
= 【3.租約機制探討】 =
|| 相較於叢集常見的 Job-based schedule,Haizea 是偏向於Resource (資源)層級的排程,也比 Job-based 的排程更是用於異質性的環境,Haizea使用lease(租約)來分配和管理資源,接下來將細談三種出租約機制 (根據不同需求,來選擇你要的租約機制,再未來會增加兩種機制 Best-effort with deadlines 和 Negotiated leases)||
== 1.Advance reservation(AR) leases: ==
* 資源再某一段時間被提供,下圖表示在 13:00~14:00 會使用到 3台node 資源
[[Image(http://haizea.cs.uchicago.edu/manual/lease_ar.png,width=300px)]]
== 2.Best-effort lease: ==
* 資源必須盡可能的可用 (有時需求不限定要在那一段時間被執行,但它對資源卻有著嚴格的要求,通常會等到需要的資源都可用時才會被執行,否則會一直存在於佇列)
* Case1 資源剛好都可以使用
[[Image(http://haizea.cs.uchicago.edu/manual/lease_be1.png,width=300px)]]
* Case2 等待資源可以使用,才開始執行
[[Image(http://haizea.cs.uchicago.edu/manual/lease_be2.png,width=300px)]]
* Case3 遇到權限更高的 AR lease 時,會先讓出資源使用權
[[Image(http://haizea.cs.uchicago.edu/manual/lease_be3.png,width=300px)]]
* Best-effort 又可分為:
* Preemptible best-effort - 比較適用於 batch-jobs 或是不需互動的工作 (上面的Case都是)
* Non-preemptible best-effort - 通常用於需要互動時,同時也會避免資源被其他的租約拿走
== 3.Immediate leases: ==
* 資源必須馬上被提供
[[Image(http://haizea.cs.uchicago.edu/manual/lease_im.png,width=300px)]]
----
= 【4.安裝】 =
|| 測試平台的 OS 為 Debian 5.03 (AMD64) ||
* 相依性套件
{{{
# sudo aptitude install python2.5 python-egenix-mxdatetime python-mako
}}}
* python-psyco 只支援 i386 的處理器
* 安裝
{{{
# wget http://haizea.cs.uchicago.edu/downloads/haizea-1.0.tar.gz
# tar zxvf haizea-1.0.tar.gz
# cd haizea-1.0
# sudo python setup.py install
}}}
* 若是您沒有 root 權限,也可以指定安裝再自己的家目錄
{{{
# python setup.py install --home=$HOME
}}}
* 若看到以下訊息則表示安裝成功
{{{
#!sh
creating /usr/share/haizea/traces/multi
copying traces/multi/inj1.lwf -> /usr/share/haizea/traces/multi
copying traces/multi/inj2.lwf -> /usr/share/haizea/traces/multi
copying traces/multi/withprematureend.lwf -> /usr/share/haizea/traces/multi
copying traces/multi/withoutprematureend.lwf -> /usr/share/haizea/traces/multi
running install_egg_info
Writing /usr/lib/python2.5/site-packages/haizea-XXX.egg-info
}}}
* 測試 (使用提供的範本來測試執行,此範本會 simulate 沒有需求的排程
{{{
# sudo haizea -c /usr/share/haizea/etc/sample_trace.conf
[2006-11-25 13:00:00.00] RM Starting resource manager
[2006-11-25 13:00:00.00] TFILE Loading tracefile /usr/share/haizea/traces/sample.lwf
[2006-11-25 13:00:00.00] TFILE Loaded workload with 0 requests ()
[2006-11-25 13:00:00.00] CLOCK Starting simulated clock
[2006-11-25 13:00:00.00] CLOCK Simulated clock has stopped
[2006-11-25 13:00:00.00] RM Stopping resource manager gracefully...
[2006-11-25 13:00:00.00] RM --- Haizea status summary ---
[2006-11-25 13:00:00.00] RM Number of leases (not including completed): 0
[2006-11-25 13:00:00.00] RM Completed leases: 0
[2006-11-25 13:00:00.00] RM ---- End summary ----
}}}
* 檔案路徑 (預設會放於 /usr/share/haizea)
[[Image(Haizea_files.png,width=400px)]]
----
= 【5.使用】 =
|| Haizea 的使用可以細分為三種模式:||
1. [wiki:Haizea_sim Unattended simulated mode]
2. [wiki:Haizea_int Interactive simulated mode]
3. [wiki:Haizea_ONE OpenNebula mode]
----
= 【參考】 =
* [http://haizea.cs.uchicago.edu/ Haizea]
[[BR]]