當想模擬數十台甚至數百台VM所組成的cluster時, 單一實體server會受限於cpu數量以及memory大小, 而無法建立如此多台VM, 所以必須跨連到其他實體的servers, 此時VM又該如何佈署及設置網路?
[Virtual Machine]
本篇使用的是VirtualBox4.1版
[Physical Machine]
HP ProLiant DL380 G6 (2core, 20G mem, 500G hd ) X 3
各自OS為 Ubuntu 12.04
[Method]
1. Install virtualbox at each physical servers 在各個server上安裝virtualbox
參考:http://lifenote332.blogspot.tw/2012/06/virtualbox-install-on-ubuntu.html
2. Start Virtualbox and Create a new VM 新增一個新VM
a. 設定[名稱], 選擇[作業系統]及[版本]
(在此的名稱與VM內的OS完全沒關, 只是Virtualbox辨識用)
b. 設定[記憶體大小] (在這設1G)
c. 啟動硬碟-->選擇[新建硬碟]
d. 檔案類型-->選擇[VDI]
e. 存放裝置選擇詳細資料-->選擇[動態配置]
f. 虛擬磁碟檔案位置-->選擇(即將創造的vdi檔的存放位置), 大小-->選擇(在此設成50G)
g. 完成建立
3. Set two network interface cards for the VM 給予此VM兩張網卡
a. NAT(Network Address Translation):
概念:模擬自身就是本台實體server(Host OS), 以便對外連線, 但會使得實體server無法偵測到自己(此VM即Guest OS), 也因此無法連線到其他實體server上的VM
功用:便利此VM上網作些更新或下載的動作
b. Bridge
概念:模擬自身與本台實體server(Host OS)存在於同一個Hob or Router底下,使得實體server能偵測得到自己, 因此在其他實體server上的VM也同樣的設定下, 可偵測到彼此
功用:讓VM不僅可在本台實體server上互連, 也可與其他台實體server上的VM互連
4. Install OS and set network configuration on the VM 安裝OS及設定網路
a. 在此安裝linux OS(Ubuntu 11.10)
b. 網路設定的部份, 選擇[編輯連線], 因為先前給予了兩張網卡所以會有兩個連線, 而連線對映的設置應為:
I. 裝置的MAC Address : (eth0) 即為給予的NAT網卡 --> IPv4設定 :自動(DHCP)
II. 裝置的MAC Address : (eth1) 即為給予的Bridge網卡 --> IPv4設定 :手動(manual)
address : 192.168.X.X(X表示自行設置, 在此設成192.168.123.1)
mask: 255.255.X.X(在此設成255.255.255.0)
gateway: 192.168.X.254(在此設成192.168.123.254, 網路上似乎常用254)
DNS server: (同gateway)
5. Clone VDI 複製vdi
當一個VM建好時, 他所有的設定都包成了一個vdi檔, 當然也可以複製此vdi來開啟另一個新的VM, 使其具備與原始的VM有同樣的設定, 但無法直接複製, 必須透過VirtualBox上的指令a. 執行:vboxmanage clonvdi old.vdi new.vdi
便會產生新的vdi來開啟新的VM
b. 執行:vboxmanage internalcommands sethduuid new.vdi
因為有可能新舊兩個VM的uuid重複導致Virtualbox無法去開啟, 所以需在給new.vdi一個隨機的新uuid
6. Deploy new VM 開始佈署VM
複製好的vdi, 可在本機開啟成新的VM, 亦可透過scp傳給其他台實體server 來開啟新的VMa. 再次實行2. , 只是到2. c.時, 選擇[使用現有硬碟], 然後選取要使用的vdi檔
(因為在"啟動硬碟"此步驟時, virtualbox會建立一個新VM的資料夾, 我習慣先把要開啟的vdi檔先移到此然後在選取開啟, 這樣新VM的資料夾就對應新vdi, 比較方便管理)
b. 執行3.
c. 執行4. , 但不用在裝OS(因為已經有了), 只需調整網卡的部份及IP
(IP一樣設成192.168.X.X)
d. 修改hostname, 執行:sudo gedit /etc/hostname 修改完要重開VM
(不要跟其他VM重複, 自己容易辨識的就行)
重複5., 6. 即可佈署大量的VM
[Recommendation]
A. 假設想要所有VM都裝一些相同套件(ex. hadoop and Java)或設定, 可在一開始建第一個VM就都先下載安裝好, 如此複製此VM所產生的vdi也會具有相同的套件安裝
B. 想建立ssh免密碼連線, 可以先在第一台VM做好自己連自己的免密碼
C. 若想建立一個大型互連的cluster, 在host設定上為了減少麻煩, 可在第一台VM先設置好
/etc/hosts, 將想要互連的host全部設進去, 之後的VM建立就不用在一個個去修改hosts
D. 當每次新建好一個VM時(就是網卡及hostname等全部設好),
1. 先ssh 到先前已經建好的VM, 若OK則表示Bridge設置沒問題
2. 然後開啟網頁瀏覽器, 若能正常開啟連外網頁, 則表示NAT沒問題
[延伸]
X. 曾經想過, 若VMs分佈在很多台physical machines上時, 控管每個VM要不斷轉換去使用各個physical machine, 這樣顯得很麻煩, 後來有找到一套軟體可以在單一一台server上就可去連到各個physical machine上的VM, 叫做"RemoteBox", 不過在嘗試使用下, 雖確實可以連到各台的VMs, 但卻無法開啟該VM的視窗畫面, 這點尚未突破
RemoteBox官網:
remotebox.knobgoblin.org.uk/downloads.cgi
[Reference]
多台實體machine建VM hadoop cluster
http://changyy.pixnet.net/blog/post/25612440-%5Blinux%5D-%E5%AE%89%E8%A3%9D-hadoop-0.20.1-multi-node-cluster-@-ubuntu-9.1
remotebox相關介紹
http://www.openfoundry.org/index.php?option=com_content&task=view&id=8319&Itemid=40
vboxmanage 指令doc
http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevm
vboxmanage clonevdi指令介紹
http://lbt95.pixnet.net/blog/post/30970746-%5Bvirtualbox%5D-%E4%BD%BF%E7%94%A8vboxmanage-%E8%A4%87%E8%A3%BD%E5%87%BA%E7%AC%AC%E4%BA%8C%E5%80%8B%E4%BD%9C%E6%A5%AD%E7%B3%BB%E7%B5%B1
virtualbox 網卡type介紹
http://www.wretch.cc/blog/mk99/22949462
沒有留言:
張貼留言