:::
顯示具有 網路管理 標籤的文章。 顯示所有文章

Zentyal 3.0動手做模組入門 / Zentyal 3.0 Module Development

Zentyal 3.0動手做模組入門 / Zentyal 3.0 Module Development

image

Zentyal是一個強大的路由器套裝軟體,他也提供了客製化製作模組的功能。我參考Zentyal的說明建立了一個修改SSH連接埠的功能,並記錄一下製作模組時的一些步驟。

Zentyal is a powerful Router and could install custom module. Base on Zentyal module development tutorial, I created a SSH module for modifying SSH port. Following is my create steps.


安裝Zentyal / Install Zentyal & Configuration

image

我安裝的是zentyal-3.0-2-amd64.iso,Zentyal 3.0 64位元版本。安裝在VirtualBox上,並配置兩張網卡:eth0為Host-only,設定為內網;eth1為NAT,作為外網。

我將預設帳號設為Linux的root群組,以省去每次都要sudo的困擾。所以下指令我都不用sudo,因為已經假設是root權限了。

然後我也關閉了Zentyal的桌面功能,作法參考這篇,語法是:

sudo mv /etc/init/lxdm.conf /etc/init/lxdm.conf.nostart

最後我安裝了pound作為後續研究的需要,語法是:

apt-get install pound

Zentyal雖然不難裝,但是也有些稜稜角角的小細節需要額外下指令去克服。詳細安裝細節此處就省略。

Zentyal模組開發教學 / Zentyal module development tutorial

Zentyal已經提供了模組開發教學的網頁文件。我大致上是照著這個步驟來操作,不過有遇到一些問題,此篇一一記錄細節。

安裝開發環境 / Development Environment

要開發Zentyal的模組需要安裝很多東西,以下列出我安裝的東西:

apt-get install build-essential gcc zbuildtools fakeroot

然後在家目錄中下載Zentyal的鷹架工具skel,並調整鷹架工具的權限:

wget https://raw.github.com/Zentyal/zentyal/master/extra/scripts/zentyal-module-skel
chmod +x zentyal-module-skel

這樣就準備好可以開發了。

建立SSH模組鷹架 / SSH Module Scaffolding

我們可以用鷹架工具skel來建立SSH模組鷹架。現在位置是在家目錄(cd ~)底下,指令為:

./zentyal-module-skel SSH ssh

然後就冒出一個空的模組啦。這到這邊為止的進度是教學中的Scaffolding

修改SSH模組 / Revise SSH Module

鷹架模組無法正常運作,所以我們要進行修改。修改的方式教學中寫得很清楚,請看這個網頁。修改之後的結果請看我上傳到GitHub的程式碼

主要修改的程式為:

跟教學文件相比,修改的差異在於設定檔是SSH的/etc/ssh/sshd_config,而參數的樣板service.conf.mas也差異很大。

必須特別要說明的是在參數樣板中要加入#開頭的註解文件時,必須要用以下語法來加入:

% print "# the setting of \"PermitRootLogin without-password\".\n";

注意雙引號""中間要記得脫逸,還有最後要加上\n表示換行。

編譯並安裝SSH模組 / Compile & Install SSH Module

編譯的方法是先移動到模組目錄,然後輸入zentyal-package指令:

cd ~/ssh
zentyal-package

編譯成功的話,模組目錄底下會冒出debs_ppa,裡面是可以安裝的檔案。再來就是安裝編譯好的檔案:

dpkg -i ~/ssh/debs-ppa/zentyal-ssh_3.0_all.deb

如果安裝時沒有特別的錯誤,那就是安裝完成了。我猜這個安裝檔應該可以轉給其他Zentyal系統,讓他們也能安裝你自己製作的模組。

啟用SSH模組 / Enable SSH Module

image

安裝好SSH模組之後,導覽列Core底下會出現SSH。但是它目前還沒啟動,要先到Module Status中,在SSH的Status裡打勾,然後再右上角Sava changes。

這樣就之後就可以正常使用SSH模組了。


結語:只是開始 / Conclusion: Just Begin…

摸了一整天總算搞懂怎麼修改Zentyal。意外地發現它的工具寫得很好用,也不難理解。只是一些細節它沒有說明,讓我試誤了好一陣子。這些細節解決之後,我想要開發新功能應該是得心應手吧。

我目前想要做一個整合pound反向代理伺服器的功能。然後再做一個DNS + NAT Port Forwarding + Reverse Proxy綜合控制的介面,讓管理者可以一口氣在一個介面設定這些東西。

不過目前進度到這邊得暫停來做一下開會的準備了orz

(more...)

對於雲端技術中的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...)

在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...)

在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...)

WordPress外掛Postie啟用其他郵件通訊協定的方法 / Enable other mail protocols of WordPress plugin “Postie”

布丁布丁吃布丁

WordPress外掛Postie啟用其他郵件通訊協定的方法 / Enable other mail protocols of WordPress plugin “Postie”

image

最近在研究WordPress上的Postie外掛,它可以從電子郵件帳戶收信,轉換成WordPress的文章發佈出去。不過預設的郵件通訊協定(Mail Protocol)僅有POP3可以選,後面會顯示「IMAP/IMAP-SSL/POP3-SSL unavailable」表示不能使用。但是只要啟用PHP的php_imap.dlll擴充功能就可以啟用這功能了。

Postie, a plugin of WordPress for receiving email to be a blog post automatically, could only use POP3 mail protocol. There would be a message “IMAP/IMAP-SSL/POP3-SSL unavailable” displayed near the “Mail Protocol” option. You can enable php extension “php_imap.dll” to use other mail protocols.


修改php.ini / Edit php.ini file

image

修改的方式是找到你的php.ini檔案,每個作業系統的php.ini位置都不太一樣,請詢問你單位的網管。

然後找到這一行:

;extension=php_imap.dll

把前面的註解「;」去掉,變成:

extension=php_imap.dll

修改完就儲存檔案吧。

重新啟動apache / Restart Apache Server

image

重新啟動apache伺服器。重新啟動的方法也請教你的網管吧。

可以使用其他郵件通訊協定了 / Other Mail Protocols Are Enabled

image

回到Postie的設定,其他的郵件通訊協定已經可以選擇了。如果你要用Gmail來設定Postie的話,就必須開啟POP3-SSL才可以喔。

(more...)

Win7(64-bits)安裝WinXP(32-bits)網路印表機

布丁布丁吃布丁

Win7(64-bits)安裝WinXP(32-bits)網路印表機

image

最近因為重新安裝電腦時又要安裝網路印表機。很久之前我為了這個網路印表機搞得焦頭爛額,有了上次的經驗,這次安裝就比較順利。現在將這些步驟做個整理記錄下來,下次就不用這麼煩惱了。


環境說明

現在有三個裝置:

  1. 本機電腦:我現在有列印需求的電腦,Windows 7 64 bits版本。
  2. 列印伺服器電腦:連接印表機的電腦,Windows XP 32 bits版本。
  3. 印表機:HP LaserJet 3050。

2013-01-17_145246

本機電腦跟列印伺服器電腦處於同一個網路區段中,我們之間可以透過網路上的芳鄰看到對方。在本例中,列印伺服器電腦叫做「NCCU-IBM」,而那台共用的印表機則叫做「HPLaserJet 3050」,所以理論上我可以用「\\NCCU-IBM\HPLaserJet 3050」來連接該印表機。

列印伺服器電腦他本身可以直接操作印表機列印,驅動程式有正常安裝。

以上這些是目前的基礎環境。

失敗案例:無法直接用「新增網路印表機」來安裝

2013-01-17_152015

如果在WIndows 7使用「新增印表機」,並選擇「新增網路、無線或 Bluetooth 印表機」,這邊會搜尋區域網路上的印表機,但是卻找不到那台3050。

image

所以我點了「我想要的印表機不在清單上」,進入「依名稱或TCP/IP位址尋找印表機」,並在「依名稱選取共用的印表機」輸入該網路印表機的位址「\\NCCU-IBM\HPLaserJet 3050」,按「下一步」。

image

Windows 顯示錯誤訊息:「找不到驅動程式」。這是因為列印伺服器電腦是Windows XP 32 bits,它的驅動程式並不能用在Windows 7 64 bits上,所以會顯示找不到驅動程式。

image

如果按下「確定」,Windows就會叫你自己選擇驅動程式。可是其實Windows已經有內建HP LaserJet 3050的驅動程式了,根本就不需要這樣子安裝。

成功案例:新增本機印表機連接埠

之前我是參考psac的「跨網段共享列印機」的說明而設置成功,這次一樣可以成功。以下是步驟說明:

1. 開啟裝置與印表機控制台

image

「裝置與印表機」位於「控制台」之中,請按上面的「新增印表機」按鈕。

2. 新增印表機 > 新增本機印表機

image

在選擇印表機的類型中,選擇「新增本機印表機」。

3. 建立新的連接埠:Local Port

image

在印表機連接埠中,選擇「建立新的連接埠」,連接埠類型為「Local Port」,然後按下一步。

4. 輸入連接埠名稱:網路印表機位址

2013-01-17_145308

接著會跳出一個對話視窗,要你輸入連接埠名稱。這時請輸入網路印表機的位址:「\\NCCU-IBM\HPLaserJet 3050」。至於為什麼名稱是這樣的地址我也不知道,只能說Windows有很多我們無法理解的名詞。

3-4替代方案. 使用現有的連接埠

image

如果你已經經過上面的步驟,新增了網路印表機位址,那麼在選擇印表機連接埠的步驟中你就可以使用現有的連接埠,找到你剛剛新增的網路印表機位址喔。

5. 安裝印表機驅動程式

2013-01-17_145354

這邊我們可以找到HP LaserJet 3050 PCL5的驅動程式,不需要另外下載安裝喔。Windows 7提供大量驅動程式這點就是最為人讚賞了。

6. 完成新增網路印表機

2013-01-17_145407

最後設定印表機名稱。

image

Windows會問你要不要共用,這邊我選擇不共用。

image

這樣就成功新增了印表機,你可以使用「列印測試頁」來試試看能不能正常運作。

2013-01-17_145615

裝置和印表機就出現「HP LaserJet 3050 PCL5」囉。

(more...)