加入RUN!PC粉絲團
最近新增的精選文章
 
最多人點閱的精選文章
 
 
精選文章 - 網管資安
分享到Plurk
分享到FaceBook
 
開放源碼Convirt 2.0的安裝
文/柳百郁 2010/12/9 下午 06:08:49

本文將以「原始程式碼」安裝Convirt 2.0,此種方式對新手而言當然比已編譯好的套件要困難得多,其實對已使用Linux一段時日的人來說也不算簡單,但在Convirt 2.0的rpm與deb未完成的此時,想體驗Convirt 2.0的新功能,這似乎是唯一方式;且透過安裝過程顯示的訊息──無論是正常或錯誤訊息,都能讓管理者更瞭解這套應用程式。
前期介紹了Convirt簡便的安裝、建置與使用,透過針對分支套件預先編譯的套件檔rpm(或deb),將Convirt安裝在Fedora或CentOS等Linux分支套件系統下,以一套獨立的、可管理其它雲端資源的應用程式執行。在網路無所不在的今日,透過萬能的瀏覽器完成任務需求已經不是太困難的事了,因此以瀏覽器為介面,監控與管理IT資源已是趨勢,概念一如瀏覽器即桌面的WebOS──打開瀏覽器就是進入桌面環境,所有電腦裡應用程式能作的,瀏覽器應該也能作到,Convir 2.0就是這樣能夠以瀏覽器為介面管理底層虛擬機器(包含Xen或KVM-based)與雲端資源(儲存裝置與網路)的管理工具。

從Convirt 1.1到2.0
ConVirt 2.0可以用來管理一台工作站上的數個Xen或KVM-based虛擬機器,也能夠掌控上千台分散在百台伺服器上的虛擬機器。ConVirt 1.1支援的範本管理、線上遷移、儲存裝置與網路管理與多平台支援,在Convirt 2.0都有,而且還另外多了Ajax的Web使用者介面、多管理者、虛擬機器與伺服器的歷史紀錄學習功能,以及子系統Task-用來執行背景操作或其它非同步功能的任務。
從2.0版開始,會用到TurboGears2的技術、使用MySQL資料庫儲存資訊,因此你最好對MySQL的基本用法與管理有所瞭解,且CentOS 5.5原生yum軟體倉儲並未提供Turbogears2的支援,在安裝過程中也可能會遇上無法透過convirt安裝程式下載的狀況,管理者必須有能力解決相依性問題,順利安裝Turbogears2,才得以進入Convirt 2.0的原始碼安裝程序。
簡單來說,建立Convirt管理伺服器的流程──「首先是取得安裝套件(Open Source與Enterprise版本的取得方式不同),然後將ConVirt管理伺服器(CMS, Convirt Management Server)安裝在控管主機上,接下來決定要被管理的伺服器與虛擬機器有哪些,也就是底層執行Xen或KVM的那些虛擬主機,Convirt安裝完成後就能透過瀏覽器(官方網站建議使用Firefox)開始管理你的雲端基礎架構了」。

Convirt Opens Source 2.0
Convirt提供Enterprise(企業版)與Open Source(開放源碼)兩種版本,開放源碼版不同於企業版的便是可以自由下載(下載網址 http://www.convirture.com/downloads/latest_tarballs/ )。
筆者以CentOS 5.5作業系統作為測試環境,自官方網站下載Convirt 2.0 Open Source的原始程式碼(.tar打包檔):包括convirt-2.0.tar.gz、convirt-install-2.0.tar.gz與convirture-tools-2.0.tar.gz。在檔案所在的目錄下,將檔案解壓縮並解打包檔。

-----box指令-----
# tar xvzf convirt-install-2.0.tar.gz
-----end-----

系統下的打包程式tar提供了一併解壓縮的選項:
‧x - 解打包
‧v - 螢幕顯示完整的執行過程
‧z - 解壓縮
‧f - 指定檔案

打包檔解開後,會出現目錄convirt-install,也就是要先著手的安裝部份:

-----box指令-----
# cd convirt-install/install/cms/scripts
# ./install_dependencies
-----end-----

切入後第一步是先解決相依性問題。Linux系統下,在執行檔(該檔案需具有可執行的屬性與權限)之前加入「./」,即可執行該檔,這個程式會自動找到你的套件處理程式,連結網路,處理相依性問題。
相依性問題的解決過程中會詢問MySQL管理者密碼,如果MySQL剛裝還沒有root密碼,可留空白,並在「Enter current password for root」處按下Enter鍵即可。在已有MySQL密碼的設定下,Convirt會接著詢問你是否變更等問題。為測試方便,MySQL建立了anonymous(匿名)使用者,無須密碼即可登入,此處會詢問你是否刪除這個可能會造成安全性漏洞的使用者;此外,另一個安全性問題是:root應只允許在localhost登入MySQL,因此筆者在「Disallow root login remotely?」選擇Y,以防有心人從網路上猜測root的密碼嘗試登入。接下來移除test資料庫同樣也是為了安全性的理由,管理者可自行決定是否刪除。最後重新載入privilege表單,讓方才的設定即時生效,相依性及MySQL的相關設定即完成。


問題與障礙

安裝過程中筆者遇上幾個問題,造成convirt啟動後process出現三秒即遭砍除,透過log的瞭解追蹤下,問題整理如下:
1.development.ini的設定:包括MySQL密碼、Web伺服器主機的指定等,如實際運作的設定與此檔內的設定不符,程式執行時不會出現Error,但執行數秒後其process將遭砍從,令服務中止。
2.資料庫不存在的問題:筆者以手動方式建立convirt資料庫,此部份應在相依性問題的程序中完成,但由於相關資料未設定正確,資料並未如常建立。
3.安裝完成後應依網頁指示完成patch安裝的動作,雖然官方網站說明文件中將該patch列為recommaned(建議安裝),但在筆者測試下,安裝時遇上的諸多問題在patch安裝完成,並匯入update_resposity.sql後,得到解決。

在服務執行中遇上問題時,查詢log是最正規的方式。就convirt而言,paster.log詳列了convirt啟動、停用等程序時的執行細節,但若是安裝時的錯誤,就沒有log可查詢,這是美中不足的部份。就此次試作而言,最常遇上的問題是服務成功啟動,執行後未出現error message,但執行後五秒會發現process消失,paster.log最後一行說明:「Removing PID file ./paster.pid」,原因可能有:無法登入mysql、找不到資料庫與raise DistributionNotFound(req)等等。安裝完成後建議將所有patch上過一遍,再啟動convirt,可省去許多troubleshooting的心力。

安裝完成

接著才執行安裝動作:
-----box指令-----
# ./install_convirt
-----end-----

安裝順利完成,會見到Convirt提醒你iptables的設定、瀏覽器使用與啟動convirt的方式。
因為要透過瀏覽器進入Convirt管理伺服器平台,所以必須在防火牆(iptables)裡將指定通訊埠打開,假定預設使用8081埠來管理,應在防火牆加入:

-----box指令-----
iptables -I INPUT -p tcp --dport 8081 -j ACCEPT
-----end-----

接受外部的8081通訊埠要求。如此一來才能透過瀏覽器,進入http://:8081/ - ConVirt管理介面。
安裝完成後,切換至/root/convirt目錄下,便能透過命令列程式啟動Convirt管理伺服器:

-----box指令-----
# ./convirt-ctl start
-----end-----


▲ 圖1 登入畫面,安裝完成後首度登入的Username與Password皆為admin。


▲ 圖2 Convirt 2.0的管理畫面。


偵測被管理的虛擬機器

管理介面安裝完成後,接下來便是決定管理的機器。在本機上,你可以透過convirture-tools裡的script,測試它是否能被Convirt認出來:
-----box指令-----
# ./convirt-tool --detect_only setup
# ./convirt-tool setup
-----end-----

在設定前先偵測(detect_only),檢查你使用的虛擬化平台,成功找到後script會列出相關訊息,接下來依script開始設定即可。

Convirt Enterprise 2.0.1
需付費的Convirt 2.0 Enterprise提供試用版,以線上申請(須使用公司行號的Email帳號)等候通知的方式。意料之外地,試用申請與核准似乎並非以自動化的方式,筆者在申請兩天之後才收到回函,並另詢問了一些使用的相關資訊,在此之後數天才收到核准試用的電子郵件:

▲ 圖3 提供各平台下載網址的確認信。

使用確認信中的帳號密碼與鏈結,可取得三合一的打包檔,內含的檔案包括:
.convirt-enterprise-install-2.0.1.tar.gz - ConVirt Management Server(CMS)安裝程式。
.convirt-enterprise-2.0.1.tar.gz - ConVirt Management Server。
.convirture-enterprise-tools-2.0.1.tar.gz - 用於被ConVirt管理之伺服器的一些小工具。

Convirt Enterprise 2.0.1新功能

申請試用的當下,Enterprise已升級至2.0.1版,提供LDAP支援、客製化搜尋功能、動態工作負載管理(DWM, Dynamic Workload Management)與VLAN的支援。動態工作負載管理的功能讓Convirt的Enterprise版更名符其實,管理者依企業服務與資源的佈署狀況,設定一個合理的CPU臨界值,當負載重於設定值時,Convirt自其它伺服器取一個虛擬機器過來支援;相對來說,當CPU的使用量在某個設定值以下、超過某個設定時間時,Convirt也可以試著將執行中的虛擬機器移到另一個伺服器上,甚至伺服器上的虛擬機器都移走之後,還可以依設定自動停機,進入省電模式。

▲ 圖4 Convirt 2.0.1的動態工作負載管理(圖片取自Convirt官網)。


問題與考驗

依前文Convirt Open Source安裝說明所述,利用tar程式解壓縮並解打包,得到convirt-enterprise-install、convirt-enterprise與convirture-enterprise-tools三個目錄,首先到convirt-enterprise-install下,執行./install_dependencies解決相依性問題(一樣需要作一些MySQL設定)。
在執行./install_convirt之前,筆者建議先處理一些套件與設定問題。convirt的安裝過程中會需要設定python與TurboGears的執行環境,Fedora環境下使用的python 2.6有可能造成安裝上出現錯誤,而CentOS則可能出現找不到TurboGears2套件的問題:

-----box指令-----
ERROR: installing TG2 (2.0.3).
ERROR: Failed creating Turbogears2 environment.
-----end-----

建議先使用yum程式安裝TurboGeasr2,該程式將自動安裝TurboGears2與執行環境所需的相關python套件。
此外,安裝過程中會執行上網抓取打包檔的動作,如無法順利下載則會出現安裝中斷的狀況,由於所需檔案已透過郵件鏈結下載,筆者的作法是變更install_config的設定,讓抓取的url指向本機裡已解打包的位置,必要時還需要手動將該檔複製至/root下,可順利騙過安裝程式中下載打包檔並解打包的程序。
準備好上述動作,應算是大致解決安裝過程式有的問題,此時再執行./install_convirt應能順利完成。只是由於各分支套件(例如:Fedora、CentOS或Ubuntu)所提供的軟體版本不同、管理者的更新頻率也不同,安裝過程中會遇上的問題無法逐一列出。然而,透過log的說明、strace程式的運用以及Convirture所提供的討論區,應能提供管理者一個解決問題的方向。

Convirt 2.0的patch更新

Convirt 1.0/1.1皆已提供編譯完成的檔案,在yum體系下已可作到自動更新的動作。不過Convirt 2.0現仍在提供原始碼的階段,程式的修補與功能的調整需用到patch來作。在Convirt 2.0安裝完成後,建議在執行與使用前先作patch更新的動作,避免無法預期的問題。
在Convirt的安裝目錄(預設為/root)下,執行下列動作:

-----box指令-----
# mkdir before_patch_bundle_1 ; cp -r convirt-enterprise before_patch_bundle_1
分號將兩個指令的執行分開但依序執行。首先建立目錄 before_patch_bundle_1,之後將固有的convirt-enterprise目錄內容複制至新目錄before_patch_bundle_1下。
# cd convirt-enterprise
# ./convirt-ctl stop
切換至convirt-enterprise目錄下,停止convirt服務。
#rm convirt.log* paster.log
移除舊log檔。
# wget http://www.convirture.com/downloads/convirt/2.0/convirt-2.0.patch_bundle_1.tar.gz
把patch bundle抓回來
# tar xvzf convirt-2.0.patch_bundle_1.tar.gz
解打包與壓縮。解開後會在該目錄下產生storage, install,src三個目錄與檔案update_repository.sql
# vi src/convirt/web/convirt/development.ini
編輯development.ini的設定,讓它符合你系統環境的內容。例如主機設定與sqlalchemy.url的MySQL登入設定。
# mysql -u root -p convirt < ./update_repository.sql
更新資料庫的相關設定。
# ./convirt-ctl start
啟動convirt。開啟瀏覽器可登入管理介面。
-----end-----

結論
Convirt號稱支援眾多Linux分支套件:CentOS、RedHat Enterprise Linux、SUSE Linux Enterprise Server、Ubuntu與Debian等,使用編譯後的RPM或DEB套件安裝幾乎都能順利完成。但透過原始碼(Source Code)的方式編譯與安裝,相依性問題仍嫌解決得不夠完整、過程中錯誤訊息不足、說明文件太簡化,加上討論區的回應仍嫌不足(會出現需寫信詢問的回應),這樣的狀況在Enterprise版本上更甚於Open Source版,雖然很可能是由於2.0加入了許多新功能,加上Enterprise本身提供的功能又比Open Source的還多又複雜,此次試作的更是加了一些新支援的更新版本。
無論如何,若能克服使用原始碼編譯、安裝時的重重阻礙,Convirt 2.0.1新加入的LDAP支援與動態工作負責管理功能,對追求整合、一致化與集中管理的IT人員來說,會是決定是否使用此軟體的重要考量之一。