:::

對於雲端技術中的PaaS一些看法 / Thinking of PaaS

對於雲端技術中的PaaS一些看法 / Thinking of PaaS

3 levels

(來自於雲端開發測試平台 Cloud Open Lab

最近在研究雲端技術時,開始興起朝PaaS去研究的想法。以下是整理一下最近看的東西,以及對PaaS的一些發想。

I have studied the cloud technology for some time. Recently I was interested in PaaS. The following is some relevant information of PaaS, and my thoughts on PaaS.


雲端服務的三層次 / Three Levels of Cloud Service Structure

目前大家對雲端技術的三層次大概都很明確了。簡單來說,在使用工具的時候,我們只想關注、調整我們需要的重點(層次),而其他更基礎的東西則交給雲端系統去自動化處理,讓後面系統包裝成服務給我們使用。

雲端技術發展到現在,重點層次已經凝聚成共識,目前可以分成三層次:

  1. IaaS 設備即服務:重點在於電腦主機伺服器,而它的架設、管理與使用都可以用雲端系統提供服務的方式操作。這是雲端架構的基礎。
  2. PaaS 平台即服務:重點在於要運作一個系統,類似網頁或是Java程式。系統所需要的運作環境跟資料庫則由雲端系統提供。這是給應用程式開發者使用的層次。
  3. SaaS 軟體即服務:重點在於可以用的工具。現在許多以網站提供的工具都算是SaaS。

為了管理大量伺服器,我一開始踏入的是IaaS。我研究了VirtualBox,也研究Proxmox VE,現在也想用OpenNebula (Ezilla)。但是這些只能說是方便整合那堆放置難以管理的實體伺服器,還不能達到我想要解決的問題。

開發之前還要配置環境的痛苦 / Preparing Development Environment is Very BORING

DSC_0534

到了現在,實驗室許多學生在開發時,他們只需要環境,不需要從整個伺服器開始學起。他們只需要搞懂PHP、JSP跟MySQL、PostgreSQL之間怎麼運作,不想要再學Linux的bash如何操作。

儘管對於ssh的遠端登入、chmod修改權限、設定cron等Linux指令對我們這些習慣管理Linux的人來說駕輕就熟,但對於連PHP跟資料庫要怎麼連線都還在摸索的程式入門學生來說,要如何操作作業系統又會是一大難題。

「現在的學生怎麼這麼不耐操?連這點小事情都不肯學?」

旁觀者肯定會說出這種風涼話,但簡單地想一下就知道:開發能解決研究問題的系統工具,跟搞懂Linux伺服器,哪一個是優先要處理的事情呢?答案當然是前者,而且我寧願學生把搞懂Linux所花的時間全部投注在主要系統的開發,專心做好能跟研究直接相關的工作。

好吧,老實說,這也是我懶啦。每次都在幫人家配置那些環境很煩耶!就算駕輕就熟還是很麻煩啊!身為程式人員的耐心在重複的事情出現第二次之後就會按奈不住了啊!

所以我需要一個方案,能自動幫我把環境配置好。我們只要專心投入在開發工作上即可。

自行架設私有PaaS / PaaS Services

現在提供PaaS服務的公司很多。但是因為我是在學校,我想要長久使用,所以基本上並不考慮收費方案。扣掉這點,能剩下的選擇就很少了。

再來就是要找尋提供我所需要運作環境的平台。Google知名的PaaS Google App Engine在少數流量下可免費使用,勉強納入我的考量,但是他只能用Python跟JAVA開發這點讓我又把它移出了考量清單。同樣的,RedHat的OpenShift也只是支援Java,但它用Git儲存庫來佈署這點我蠻喜歡的。不過上述這些都只有公司提供服務,不能架設在自己的單位。

stackato-by-activestate_1000px

Stackato是架設私有PaaS的另一個選擇,也有免費方案,蠻符合我自行架設的需求。Stackato以ownCloud來佈署開發程式,可以跑Java跟PHP,也能支持許多資料庫。就功能來說我很感興趣,可是這不是開放原始碼,免費版本的Stackato的限制令我卻步。

header-logo.gif

WSO2可真的是開放原始碼的PaaS架構了,而且也支援PHP、MySQL與Tomcat插件。其中提到一個特點:

Traditional, non-cloud-aware application platform containers, such as PHP and MySQL, can be extended into a multi-tenant cloud deployment.

傳統上,非雲端的應用平台程式,像是PHP與MySQL,可以發展成「多用戶雲端佈署應用」。

我想像多重租貸模式會是一個框架,它把應用程式(也就是網站)的對外窗口跟抽象化之後的服務接軌。但是細節的部份我還沒仔細摸,不知道能不能提供我需要的服務,有待研究。

一開始在摸的時候,我一直在想,PaaS不就是很久以前很流行的「免費架站空間」嗎?我們向公司請求一個可以運作PHP的空間、MySQL資料庫與網站連線的網址,然後透過FTP上傳我們的程式碼,然後就能夠正常運作。不過意外的是,這些傳統的架站空間似乎都不被當做是一種PaaS,大概是作法實在是太傳統了吧。

我對PaaS的期許 / My Expectation of PaaS

我是希望未來我的網站可以打包成一個像上面WSO2所講的多用戶模式。這個框架會是標準格式,我只要在我的開發環境做好、將框架打包好,然後就可以透過Git之類的程式碼儲存庫佈署到任意的PaaS當中。

應用程式中的設定將不會在開發時寫成固定值,而是做成需要透過框架去向外面服務請求設定的對外窗口。這些對外窗口包括資料庫連線與建置調整、排程工作的需求(開關機時執行的指令、定期執行的指令)、大量資料的儲存位置。舉例來說,我在本機開發時,對外窗口向本機端請求了MySQL的服務;而移到PaaS上的時候,對外窗口則是向PaaS提供的服務要求MySQL的位置。

而PaaS提供的服務則是可擴充的、可動態分配的架構。當對外窗口要求一個MySQL資料庫的時候,它其實是連到提供MySQL負載平衡的中介伺服器上,然後依照框架設定、背後有複數的MySQL資料庫來提供穩定的資料庫服務。同樣的,資料儲存位置使用的服務背後也可能是整合性的機制,不會因為單一機器毀損而遺失資料。

跟一般把服務全部包在虛擬機器裡面的IaaS比起來,PaaS把服務拆得更細,因此就能夠提供更穩定的服務架構。

從PaaS回到IaaS來看 / Deploy IaaS Like PaaS

PaaS把應用程式與服務拆開來,以提供更穩定的架構。不過反過來說,因為服務拆得更細的關係,在有個標準之前,恐怕常常還是會覺得要做什麼事情都是綁手綁腳的不自由。

舉例來說,我的PHP程式想要用命令列來控制FFmpeg轉檔程式,那我就得在Liunx安裝FFmpeg套件,但是在現在PaaS的架構中這應該是不太可能做得到的事情,必須要在IaaS的層級中才有這般自由。

是的,有權限控制一整台伺服器就是網管人員最開心的事情。我在想,如果我們可以在IaaS層級中使用PaaS的作法,那應該會很方便。我的網站架設在虛擬主機中,預設是以虛擬主機自身提供的服務來運作。不過如果我有需要,我可以透過對外窗口自動將設定改成外部的服務,像是使用另一台虛擬主機架設的資料庫。

因此,IaaS層級的虛擬機器就會分成三種類型:一種是多租貸模式的主機,它必須提供對外的窗口供統一管理與設定,讓管理者不必登入到IaaS的主機中修改設定檔;第二種是專門運作資料庫、檔案伺服器的主機,但是它們並不是直接給多租貸模式的主機使用,而是隸屬於第三種主機底下;第三種類型真正提供服務的中介主機,像是資料庫的負載平衡器、分散式檔案系統的管理器,可將背後大量的實體服務集叢化。

image

以MySQL舉例來說,上圖的(1)是運作Drupal的PHP伺服器,(2)是重複多個的Slave MySQL資料庫伺服器,而(3)則是統一管理這些資料庫伺服器的Master主要MySQL資料庫伺服器。圖片的架構參考自ㄚ忠的MySQL Replication(Master Slave負載平衡),我一直想做做看,可是目前並沒有這個機會。

另一方面,資料庫架構(schema)自動配置的功能目前並沒有統一。我也需要找一些方便來進行資料庫架構配置,像是Database version control這個。

如果這些架構都要以獨立主機來進行開發的話,虛擬化的負載肯定是很令人頭大。因為現今主流的KVM、VMware雖然號稱效能直逼實體主機,但老實說,一台普通的伺服器跑3、4個KVM,能順利運作就謝天謝地了。

800px-OpenVZ-logo

這邊我又再度提到我最喜歡的虛擬化技術OpenVZ。反正每個虛擬機器提供的服務都很單純,根本就不需要像KVM那樣包山包海,那以OpenVZ為基礎建設這些服務不就好了嗎?跟現在主流的KVM、VMware相比,限定運作Linux的OpenVZ檔案小又高效率,非常深得我心。我現在已經把很多應用系統打包成OpenVZ,方便讓實驗室成員輕易建置一個可以用的應用,這包括了DSpace-DLLL

然而IaaS最大的問題:網路,至今依然沒有很好的解法。我們沒有無限的IP可以使用,可是又想要建設大量的虛擬機器並同時提供服務,那就得要倚賴DHCP加上Port Forwarding。如果能夠搭配DNS的話,那就能做到DNS、DHCP與reverse proxy。不過我找到現在,還是沒看到DNS、DHCP與Reverse Proxy能夠完美搭配的組合。所以最近我想要自己來寫就是。


哎呀,我寫到這邊真是令人手癢,可是不行不行,我的本務好像不是在摸這個啊……

(more...)

在SPSS中使用無母數統計法的符號檢定 / Using Sign Test in SPSS 20

布丁布丁吃布丁

在SPSS中使用無母數統計法的符號檢定 / Using Sign Test in SPSS 20

2013-07-03_02-49-39

本文介紹如何在SPSS 20中使用無母數統計法的「符號檢定」。因為符號檢定的功能藏在難以發現的地方,所以我想做一個圖文步驟的紀錄。

This post show you how to use Sign Test (a method of Non-parametric Statistics) in SPSS 20. Because it’s difficult to find the operation of Sign Test, so I want to write down the operation steps.


無母數統計法 / Non-parametric Statistics

在數位學習中,由於樣本數量很難多到一般認為可以達到常態分佈的30人,所以統計上與其採用有母數統計法,有時候應該要選用無母數統計法來進行統計檢定。但是無母數統計法的缺點在於統計分析效益較差、檢定力比起有母數統計法還要低(說服力不高),而且檢定的方式也很多,必須小心使用。如果你要在論文中使用無母數統計法,那最好說明一下為什麼採用無母數統計法、選擇該方法的理由,並註明分析結果的檢定力較低的這個弱點。

符號檢定 / Sign Test

本文教的是無母數統計法中的「符號檢定」(sign test),這是無母數統計法中最常使用與最基礎的方法,特別適合於不知道母體的分佈、而且樣本數量稀少的情況。

分析目的與樣本資料 / Simple

這次我想知道的是每週的「網站造訪次數」與「電子郵件數量」之間是否有所關係。樣本只有7週,資料如下:

造訪次數

電子郵件數量

136

9

16

1

33

7

25

3

45

8

26

137

118

58

我想要檢定這兩個變項之間的關連,但因為樣本數量太少,不適合用有母數檢定中的Pearson相關分析,所以我先用符號檢定來做做看。

SPSS操作 / Operation

我使用的是IBM SPSS 20,政大購買的版本。

資料輸入 / Data

首先是開啟SPSS,輸入資料。

image

兩個變數都是數字型。

image

進行分析 / Analytic

打開「分析 –> 無母數檢定 –> 歷史對話記錄 –> 二個相關樣本」

2013-07-03_02-48-45

選擇這兩個變數,檢定類型選擇「符號檢定」,表示我們要檢定的方法。在「選項」中勾選「描述性統計量」,這樣可以在分析結果之前先看到樣本的概況。按下「確定」之後就會出現分析結果。

2013-07-03_02-50-34

符號檢定的結果位於最後的「檢定統計量」,精確顯著性(雙尾)數值為0.125,未答0.05的顯著水準。故兩筆變數並沒有顯著相關。

2013-07-03_02-51-37


結語:SPSS改好多 / Conclusion

由於舊版SPSS無法順利在Windows 7上使用,所以我才改用SPSS 20。但是新版本的SPSS介面設計修改很多,連分析都跑出類似精靈的工具可以使用。雖然我還是不會用那個精靈,只要基本的統計表格能幫我跑出來,我就謝天謝地了吧。

(more...)

在XAMPP設定郵寄服務 / Enable Mail Function in XAMPP

在XAMPP設定郵寄服務 / Enable Mail Function in XAMPP

image

XAMPP是結合ApachePHPMySQLSendmail等多項服務的整合伺服器,是我很常用伺服器套裝軟體。如果要使用XAMPP內建的PHP來寄送郵件(使用mail()),那需要對PHP與Sendmail做些設定。你必要有個郵件傳輸伺服器做搭配,本例是用政大的信箱來做範例。以下我會記錄我成功設定的方式。

XAMPP is a web server tool include Apache, PHP, MySQL, Sendmail and other tools. I usually use XAMPP for deploy web service. If you want to use PHP with XAMPP to send e-mail (using PHP's mail() function), you should configure PHP and Sendmail and prepare a SMTP mail server. In this example, I use my university's mail server: "nccu.edu.tw". To let XAMPP enable mail function, following is my configuration.


郵件傳輸伺服器 / SMTP Mail Sever

要讓php使用mail()寄信,你必須要有個能夠寄信的郵件傳輸伺服器。本文是借用政大的MAIL 2000伺服器。基本資訊如下:

  • SMTP伺服器位置:nccu.edu.tw
  • SMTP連接埠:25

XAMPP中也可以用Mercury/32來做為郵件傳輸伺服器,不過我還沒研究成功。

XAMPP的安裝 / XAMPP installation

XAMPP是跨平台的軟體,但是Windows跟Linux的XAMPP內容卻不一樣。Linux的XAMPP叫做LAMPP。這篇文章主要介紹的是在Windows底下安裝的XAMPP

作業系統是Windows 7 64位元版本。XAMPP的版本是1.8.1,主要包括以下套件:

  • Apache 2.4.3
  • PHP 5.4.7
  • Sendmail 32

XAMPP是免安裝軟體,但是解壓縮資料夾必須是在根目錄底下。本文將XAMPP安裝在以下路徑:

D:\xampp\

這個路徑會影響到其他參數的設定,在做以下設定時請務必注意到。

設定php.ini / Configure php.ini

首先要告訴PHP說,我們要使用sendmail來寄信。php.ini是PHP的設定檔,路徑位於:

D:\xampp\php\php.ini

找到 [mail function] 的區段,找到sendmail_path參數,將之設定以sendmail運作,設定參數為:

sendmail_path = "\"D:\xampp\sendmail\sendmail.exe\" -t"

如果用「;」放在一行的前面,表示是註解。

找到mail.log參數,設定寄送郵件的記錄檔,設定參數為:

mail.log = "D:\xampp\php\logs\php_mail.log"

設定sendmail.ini / Configure sendmail.ini

接著要設定sendmail的參數。sendmail.ini設定檔的路徑為:

D:\xampp\sendmail\sendmail.ini

找到smtp_server參數,將之設定為政大信箱位置:

smtp_server=nccu.edu.tw

其他的smtp_port=25、smtp_ssl=auto都用預設的即可。

重新啟動Apache / Restart Apache

image

打開XAMPP Control Panel,把Apache按下「Stop」,等它關閉之後,再按下「Start」即可。


結語:難怪郵件伺服器很容易被入侵 / Conclusion: Mail Sever may be hacked easily

如果你仔細看上述設定的話,會發現其實我並沒有輸入任何帳號密碼的資料,就能使用政大的郵件伺服器進行寄信。我不確定這是不是因為我現在在政大的區域網路內所以可以這樣做,不過這顯然是很危險的一件事情──嘿,我隨隨便便都可以借用政大的郵件傳送伺服器來寄信喔。

稍微摸一下mail()這個寄信的方式,你就可以知道其實要改寫寄件者、收件者等訊息都不難。不僅偽裝成別人寄信很容易,而且也可以設定你回信時的地址──是的,你回信時,預設的收件者可能不會是寄件者喔。

嗯,總之寄送郵件真是充滿陷阱的服務,也難怪垃圾郵件如此盛行。請大家謹慎使用吧。

(more...)

關閉Windows 8觸控版上的觸控四邊 / Disable Windows 8 Touchpad Swipe Gestures

布丁布丁吃布丁

關閉Windows 8觸控版上的觸控四邊 / Disable Windows 8 Touchpad Swipe Gestures

2013-06-26_191354

你還記得Windows 8極力推廣的十二字訣:「觸控四邊、滑鼠四角、右鍵無敵」嗎?先不論比較少用到的「四角」,以及特定動作才能啟動的「右鍵」,觸控版上倒是常常不小心誤觸這個「四邊」。我常常因為不小心誤觸而感到困擾。

後來在StackExchange上看到Daniel B介紹了修改登入檔來取消觸控四邊功能,試用之後的確可行。這篇就是介紹如何取消觸控版上的觸控四邊功能。(注意,這並不會取消觸控螢幕上的觸控四邊喔。)

If you use Windows 8, it's very easy to trigger touchpad swipe gestures. Thanks for Daniel B's instruction, you can disable the swipe gestures on touchpad by revise registry. Following I will show you how to do it.

 


建立還原點 / Create a Restore Point

image

因為這個動作要修改登錄檔,難免對系統有風險。請務必先用建立還原點功能來備份登錄檔。系統還原是Windows XP開始就有的功能,詳細操作我就不再贅述,請參考「如何在Windows 8建立還原點」。

下載登錄檔

關於觸控四邊的登錄檔有兩個,一個是「關閉觸控四邊」的Windows8_geatures_disable.reg,內容程式碼如下:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Synaptics\SynTPEnh\ZoneConfig\TouchPadPS2\Right Edge Pull]
"ActionType"=dword:00000000
[HKEY_CURRENT_USER\Software\Synaptics\SynTPEnh\ZoneConfig\TouchPadPS2\Left Edge Pull]
"ActionType"=dword:00000000
[HKEY_CURRENT_USER\Software\Synaptics\SynTPEnh\ZoneConfig\TouchPadPS2\Right Edge Pull Extended Zone]
"ActionType"=dword:00000000
[HKEY_CURRENT_USER\Software\Synaptics\SynTPEnh\ZoneConfig\TouchPadPS2\Top Edge Pull]
"ActionType"=dword:00000000

另一個是「開啟觸控四邊」的Windows8_geatures_enable.reg,內容程式碼如下:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Synaptics\SynTPEnh\ZoneConfig\TouchPadPS2\Right Edge Pull]
"ActionType"=dword:00000002
[HKEY_CURRENT_USER\Software\Synaptics\SynTPEnh\ZoneConfig\TouchPadPS2\Left Edge Pull]
"ActionType"=dword:00000002
[HKEY_CURRENT_USER\Software\Synaptics\SynTPEnh\ZoneConfig\TouchPadPS2\Right Edge Pull Extended Zone]
"ActionType"=dword:00000002
[HKEY_CURRENT_USER\Software\Synaptics\SynTPEnh\ZoneConfig\TouchPadPS2\Top Edge Pull]
"ActionType"=dword:00000002

啟用登錄檔,並重新啟動 / Disable Geature and Restart Windows

image

啟用Windows8_geatures_disable.reg,然後按「是」。再來重新啟動你的Windows 8。這樣就完成囉。

如果你要恢復觸控版的觸控四邊,那就執行Windows8_geatures_enable.reg,再重開機即可。


結語:客製化設定的必要性 / Conclusion: Let Users Decide Features They Want

Windows 8新增了許多以前未見的功能,雖然大部分都被人罵到臭頭,但是有些其實還是不錯用。觸控四邊在觸控螢幕上操作起來很不錯,不過在觸控版上就很常誤觸。

如果Windows 8更為使用者著想的話,就不應該把全部功能一股腦兒都塞給使用者,應該讓使用者自行決定是否使用。感謝Daniel提供的方案,我總算可以把這惱人的觸控版四邊關掉了。

(more...)

在VirtualBox建立Ezilla 2.0 Cluster記錄 / Setup Ezilla 2.0 Cluster on VirtualBox

在VirtualBox建立Ezilla 2.0 Cluster記錄 / Setup Ezilla 2.0 Cluster on VirtualBox

Ezilla_logo_all_big

Ezilla國家高速網路與計算中心發展出來的簡易雲端平台。為了測試安裝過程,我使用VirtualBox建立master跟slave兩台虛擬主機來架設Ezilla。這篇是簡單記錄建立Ezilla Cluster架構的安裝記錄。

Ezilla is developed by National Center for High-Performance Computing for deploying cloud platform. I try to setup Ezilla cluster on VirtualBox. Following is my setup process.


安裝環境 / Installation Environment

image

跟前一篇安裝Proxmox VE時一樣,這次我也是用VirtualBox 4.2.6來安裝。一開始建立兩台伺服器,命名為master跟slave兩種不同的伺服器角色。

這次安裝的系統是Ezilla v 2.0,帳號設定很多東西跟前一版v1並不相同,安裝時請特別注意到版本的問題。


安裝master虛擬機器 / Install “master” Virtual Machine

因為Ezilla的Linux發行版是CentOS 6.3,所以我安裝時選用RedHat 64bit來安裝。記憶體跟硬碟大小都用預設,但是網路的部份則是設定成「內部網路」,取名為「ezilla」。

安裝Ezilla,設定網路 / Install Ezilla and Setup Network

掛載ezilla-disk-2.0.1-3.iso進行安裝,安裝步驟中只有決定網路設定而已。在這邊要特別注意,網路請用手動設定(Manual configuration)。安裝時的選項如下:

image

因為master要擔任DHCP的角色,IP的尾碼必須要用254,例如「10.0.0.254」,設定如下圖:

image

安裝之後master會重開機。第一次開機時還要執行很多安裝腳本,會花相當久的時間。但是第二次之後開機速度就很快了。

增加master網路卡 / Add Network Card for “master”

安裝時讓master主要使用內部網路,可是為了讓其他人能夠開啟Ezilla的網頁管理介面,我們還需要幫master加裝一張網路卡。

我安裝一張NAT網路卡給master,設定如下圖:

image

因為Ezilla的管理介面是使用9869連接埠,所以我們還要設定連接埠轉遞為9869,如下圖:

image

設定master網路卡 / Setup Network in “master”

裝了NAT網路卡,master也不會自動把它啟動,這邊還需要額外的軟體設定。

我們先開啟master,然後登入作業系統。

  • 登入帳號:root
  • 登入密碼:release_v2_master

master跟slave都會用相同的帳號密碼喔。

image

接著我們用「ifconfig –a | more」來調查NAT網路卡的編號。我們可以從VirtualBox上看到NAT網路卡的MAC碼為「08002759679F」,比對ifconfig列出的網卡(如下圖),我們可以知道NAT網路卡的編號是eth1。

image

接著編輯以下檔案,注意最後是檔案的編號:

/etc/sysconfig/networking/devices/ifcfg-eth1

設定網卡為DHCP,並將ONBOOT=yes設為開機時自動啟動。全部如下圖:

image

然後我們用ifup指令開啟eth1:

ifup eth1

這樣子Host OS就能夠連線到master了。


安裝 slave / “slave” Installation

接著我們要準備安裝slave節點,而master還必須多做一點設定。

開啟master的網頁管理介面 / Open “master”’s Web Administration GUI

透過以下網址,我們可以開啟Ezilla的網頁管理介面:

  • 預設登入帳號:oneadmin
  • 預設登入密碼:release_v2_ezilla

你可以注意到這裡的帳號密碼跟Linux端的帳號密碼是分開的。

image

設定slave節點安裝 / Set up Slave Node

進入左邊的「Set up Slave Node」,把Ezilla Auto-Installation Service for Slave node打開到ON。

image

然後進入Set up Your Slave environment設定。如果要配置長久可運作的雲端架構,請將檔案系統設成MooseFS

image

建立slave虛擬機器與自動安裝Ezilla / Create “slave” Virtual Machine and Install Ezilla Automatically

slave的建立跟master都一樣是RedHat 64bit,網路也設成Ezilla內部網路。需要特別注意的是開機順序要把「網路」打勾並調到第一順位,如下圖:

image

這樣子slave開機的時候,會以網路連線狀態自動去抓取master的Ezilla安裝資訊。slave安裝大概也只要五分鐘不到就可以完成。

完成之後,先不要把slave重開機,我們要先做個動作:

關閉master的slave節點安裝功能 / Disable Slave Node Installation

回到master的網頁管理介面,我們把Ezilla Auto-Installation Service for Slave node關閉成OFF。

image

這個步驟可以防止slave重開機的時候會再次抓取master的安裝資訊並安裝Ezilla。

關閉slave的網路開機功能 / Disable “slave”’s PXE

接著我們把slave關機,然後關閉開機順序中的「網路」。

image

因為已經安裝好Ezilla了,slave只要正常開機即可。

slave自動加入到master當中 / Join “slave” to “master”’s Cluster Automatically

最後我們把slave開機。slave會自動抓取master的DHCP來配置網路,然後master也會偵測到slave的加入。

我們可以從master的網頁管理介面中看到slave加入的情況。選取「基礎設施」中的「主機」之後,就可以看到剛剛加入的slave,名稱預設使用IP:10.0.0.3,

image

因為在VirtualBox中slave沒有能力執行KVM,所以也不能建立任何虛擬機器。到此為止只能算是練習安裝Ezilla而已。


結語:Ezilla好像省略很多控制功能 / Conclusion: Ezilla Hides Many Functions.

為了方便使用者安裝,Ezilla省略了很多原本網管會很在意的功能。像是安裝時的密碼設定,網頁管理介面也需要網路卡的設定。而且Ezilla預設似乎只有一張網卡,所以我這種兩張網卡、一張給slave連線、一張給其他人的網路配置,就需要額外去做設定。

操作介面雖然簡單好用,不過沒能真正架一個KVM來試,到這邊為止也算是白搭。

其他的有機會弄到實體電腦再練習吧。

(more...)

在VirtualBox架設Proxmox VE 3.0 Cluster記錄 / Setup Proxmox VE 3.0 Cluster on VritualBox

在VirtualBox架設Proxmox VE 3.0 Cluster記錄 / Setup Proxmox VE 3.0 Cluster on VritualBox

image

Proxmox VE可以整合多台Proxmox VE串聯成一個「叢集」(cluster),這樣就能從其中一台Proxmox VE統一管理所有叢集中的Proxmox VE,非常地方便。這概念跟其他雲端平台使用的master / slave架構有點不一樣,但是統一管理的功能卻是共通的。

我用VirtualBox來試著架設Proxmox VE,以下是我的安裝過程記錄。

Proxmox VE can integrate multiple Proxmox VE servers to a cluster for unified management. I try to set up Proxmox VE cluster on VirtualBox. Following is my installation process.


安裝環境 / Installation Environment

image

我在Oracle VirtualBox 4.2.6上安裝Proxmox VE 3.0。

建立虛擬機器兩台,個別擔任master跟slave的角色,設Domain Name為「master-proxmox2.dlll.nccu.edu.tw」與「slave-proxmox2.dlll.nccu.edu.tw」。不過在Proxmox VE的Cluter中並沒有master跟slave的概念,我這篇只是用這兩種相對地位來表示操作順序的差異。

以下開始是步驟,請特別注意網卡設定跟安裝時的IP設定。

建立虛擬機器master / Create “master” Virtual Machine

我將master建為Debian 64bit,記憶體特別要設成512MB以上,其他都用預設值即可。

網路設定為「內部網路」 / Use “intranet” network for “master”

image

建立完成之後,將網路修改成「內部網路」,並給定內部網路名稱「proxmox2」。待會slave也會連到相同名稱的內部網路,表示兩者之間有所連接。這步驟很重要,因為VirtualBox預設建立虛擬機器時是用「NAT」,但這會對Proxmox VE建立cluster的時候造成混亂,千萬不能在NAT的狀態下安裝Proxmox

在master安裝Proxmox VE 3.0 / Install Proxmox VE 3.0 on “master”

然後在光碟機掛上Proxmox VE 3.0的ISO光碟,開始安裝。

由於是使用沒有DHCP的內部網路,所以Proxmox VE會自動選用區域網路IP「192.168.100.2」,這個IP要先記好。

安裝程序中要注意的僅有輸入Domain Name那邊,請輸入可以辨別不同節點的名稱,在此用「master-proxmox2.dlll.nccu.edu.tw」作為範例。

很快地就安裝完成了。安裝完成之後需要重新啟動,然後再登入Proxmox。預設帳號是root,密碼就是你安裝時候設定的密碼。

順利登入之後,我們先把master放著,來安裝slave吧。

建立虛擬機器slave/ Create Virtual Machine “slave”

image

slave建立的參數跟master一樣,都用Debain 64bit,記憶體512MB,建立完成之後網路修改成「內部網路」,並設名稱「proxmox2」。

在slave安裝Proxmox時的注意事項 / Points of Installing Proxmox VE for “slave”

在slave安裝Proxmox時,他也會用預設IP「192.168.100.2」,但這會跟master衝突,所以在此改為「192.168.100.3」。

然後Domain Name設為「slave-proxmox2.dlll.nccu.edu.tw」,其他就照常普通設定安裝即可。

安裝完成之後一樣重新啟動再登入root帳號。順利登入之後,我們就可以準備來建立Cluster了。

建立Cluster / Create Proxmox VE Cluster

在master跟slave都安裝好之後,我們就可以來建立Proxmox VE Cluster了。建立的說明網頁在此,以下我直接把步驟記錄下來:

在master的設定 / Setup on “master”

輸入以下指令:

pvecm create CLUSTER-NAME

其中CLUSTER-NAME是指這個Cluster的辨識名稱,不可修改,而且要刪除非常困難,請慎選!在此我用「DLLL」作為Cluster的名稱。

建立過程應該沒什麼特別問題,大概三分鐘就完成了。這時候這個Cluster裡面只有master一個節點。接著我們要把slave加入這個節點中。

在slave的設定 / Setup on “slave”

輸入以下指令:

pvecm add 192.168.100.2

其中192.168.100.2就是master的IP。其實只要加入任意已經建立好Cluster的節點都可以。前一步我們在master建立了Cluster,所以在此就可以透過pvecm add指令來讓slave加入到master。

輸入指令並執行之後,slave會以SSH連線到master。這時候先要求儲存金鑰,請回答「yes」,然後接著會要求master的密碼,請輸入之後登入。

image

接著過沒多久,看到「successfully added node ’slave-proxmox2’ to cluster.」就表示順利加入成功了。

開啟master的網頁操作介面 / Open “master”’s Web Administration GUI

到目前為止,master跟slave都在內部網路proxmox2底下互相連線,但是在這狀態下,其他人(包括Host OS的本機端)都無法開啟master的管理介面。所以我們要動點手腳,讓master多一張可以連線到外面的網卡。

VirtualBox中新增NAT網路卡 / Add “NAT” Netwrok Card for “master”

要變更硬體得先把master關機才行。關機指令是「halt」。

關機之後再幫master新增網路介面卡2,附加到NAT,如下圖:

image

然後再幫這張網卡設定連接埠轉遞,方面主機連線。主機連接埠設為「38006」,可以自由設定;客體連接埠則是固定的「8006」,如下圖:

image

設定完成之後再把master開機。但是光有網路卡沒用,我們還得在master中設定網路卡的連線方式呢。

修改/etc/network/interfaces  / “master” Network Setup

在master作業系統裡面,新加入的網路卡叫做eth1(原本的內部網路那張卡叫做eth0),但是eth1並沒有設定,預設也不會啟動。我們得設定eth1這張網路卡。

用vi修改網路設定吧,vi的用法請參考鳥哥

vi /etc/network/interfaces

在最後加入eth1的設定:

auto eth1
iface eth1 inet dhcp

設定好之後,interfaces整個檔案如下圖:

image

儲存,然後用以下指令啟動eth1:

ifup eth1

開啟master的Proxmox VE網頁管理介面 / Proxmox VE Web Administation GUI

開啟瀏覽器,建議使用Google Chrome。網址列輸入https並帶有連接埠的網址:

接著就會出現以下登入畫面:

image

帳號與密碼如同在master登入本機端一樣。預設帳號是root,密碼就是安裝時設定的密碼。最後下圖就是順利登入的樣子。

image

你可以發現到,master也可以管理slave的資源,這就是統合多個Proxmox VE組合起來的Cluster,可以方便網管人員進行資源分配與調度喔。


結語:NAT不適合新手操作 / Conclustion: Don’t Use “NAT” When You Setup Cluster At Initial Stage

像這種要串連多台伺服器的結構,通常預設的安裝環境中,網路都會是單純到只是接著一台網路分享器(hub或switch),不會有路由器跟DHCP來讓網路變得更複雜。

因此以後要測試虛擬機器遇到網路上的問題,不妨也跟我一樣,先讓機器本身只使用內部網路就好。確認安裝沒問題之後,再給他一張NAT網卡來操作吧。

希望這點經驗可以幫助到大家。現在半夜三點,好睏,我要回家了。

image

(more...)

安裝Proxmox VE遇到「command 'chroot /target dpkg --force-confold --configure -a' failed with exit code 1 at /usr/bin/proxinstall line 177」錯誤時的解決方法

安裝Proxmox VE遇到「command 'chroot /target dpkg --force-confold --configure -a' failed with exit code 1 at /usr/bin/proxinstall line 177」錯誤時的解決方法

2013-06-16_14-39-23

如果在安裝P`roxmox VE 3.0的時候遇到了「command 'chroot /target dpkg --force-confold --configure -a' failed with exit code 1 at /usr/bin/proxinstall line 177」的錯誤訊息,表示你的伺服器記憶體不足512MB。讓伺服器記憶體超過512MB就沒問題了。

When installing Proxmox VE 3.0, if you encounter the error “command 'chroot /target dpkg --force-confold --configure -a' failed with exit code 1 at /usr/bin/proxinstall line 177”, please increase server’s memory more than 512MB. Proxmox VE need 512MB memory at least.


為何使用Proxmox VE與OpenVZ / Why I use Proxmox VE and OpenVZ?

190px-OpenVZ-logo

我從2011年開始安裝Proxmox VE(以下簡稱Proxmox) 1.9版開始,就深深地受到OpenVZ的魅力所吸引。OpenVZ是一種非主流的虛擬化技術,它是將Linux的執行緒(process)分隔成不同的容器(container),每個容器都執行完整的Linux作業系統。因此它的缺點在於只能限制於Linux、硬體環境配置較難,但是它在執行效率上的優點卻是其他技術所遠遠不及的。也因為OpenVZ執行時就像是在容器裡面運作一樣,所以Proxmox把它簡稱為CT,意即ConTainer。

proxmox-logo

Proxmox VE是一款整合OpenVZ與KVM的虛擬機器管理平台,並以開放原始碼的形式釋出。安裝時僅需要從光碟直接安裝即可,安裝過程不到三十分鐘,一台可以建置OpenVZ與KVM的虛擬機器環境就可以上線運作了。

不過那是安裝1.9版時的經驗,現在安裝更新的版本時,似乎遇到了一些問題。

使用VirtualBox安裝Proxmox VE發生錯誤 / Install Proxmox VE failed on VirtualBox

那時我安裝1.9版時並沒有遇到什麼問題,倒是後來想用VirtualBox來安裝2.3與3.0版時就發生了錯誤。

VirtualBox的機器配置參數如下圖:

image

安裝3.0版時的錯誤訊息是:

command 'chroot /target dpkg --force-confold --configure -a' failed with exit code 1 at /usr/bin/proxinstall line 177

而安裝2.3版時也會遇到一樣的錯誤,錯誤訊息只有行數的差別:

command 'chroot /target dpkg --force-confold --configure -a' failed with exit code 1 at /usr/bin/proxinstall line 172

如果要安裝Proxmox VE,記憶體必須是512MB以上 / If you want to install Proxmox VE, server’s memory must be more than 512MB.

經過Proxmox的論壇解答之後,我才知道原來記憶體要設成512MB以上。仔細一看,Proxmox VE的系統安裝需求中,記憶體居然要求要1GB耶。而VirtualBox建立Debian作業系統時,預設只會給予384MB而已,這樣子難怪會失敗。

所以我調整了記憶體數量到896MB(隨便設的),設定細節如下圖:

2013-06-17_201318

然後再安裝Proxmox VE,這次就能順利成功了。

2013-06-17_201348

謝謝Proxmox Staff Member的dietmar回答,真是幫了很大的忙啊。


結語:證實了虛擬機器中的虛擬機器不能使用KVM的疑惑 / Conclusion: VM in VM could not use KVM.

其實這次主要要測試一件事情。那就是即使在Intel VT-x指令集的支持中,在VirtualBox裡面使用Debian 64Bit的Proxmox VE,依然不能使用KVM。終於解決了我長久以來的疑惑了,雖然中間花了不少時間就是。

(more...)