Ubuntu 11.04 Server安裝配置OpenNebula 3.0
OpenNebula于10月3日發(fā)布3.0版本。這兩天終于有時(shí)間測試了一把。
[管理節(jié)點(diǎn)]
全新安裝的Ubuntu 11.04 Server操作系統(tǒng),安裝的時(shí)候同時(shí)安裝OpenSSH Server和LAMP Server。管理節(jié)點(diǎn)的內(nèi)網(wǎng)IP為192.168.1.1。
首先創(chuàng)建cloud組和oneadmin用戶:
sudo mkdir -p /srv/cloud/ sudo groupadd -g 10000 cloud sudo useradd -u 10000 -g cloud -m oneadmin -d /srv/cloud/one -s /bin/bash sudo passwd oneadmin sudo chown -R oneadmin:cloud /srv/cloud/ su -l oneadmin ssh-keygen cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys echo “StrictHostKeyChecking no” > ~/.ssh/config exit
安裝配置NFS服務(wù):
sudo apt-get install nfs-kernel-server sudo pico /etc/exports
增加一行內(nèi)容:
/srv/cloud *(rw,fsid=0,nohide,sync,root_squash,no_subtree_check)
啟動NFS服務(wù):
sudo /etc/init.d/nfs-kernel-server start
安裝OpenNebula所依賴的軟件:
sudo apt-get install libsqlite3-dev libxmlrpc-c3-dev g++ ruby libopenssl-ruby libssl-dev ruby-dev sudo apt-get install libxml2-dev libmysqlclient-dev libmysql++-dev libsqlite3-ruby libexpat1-dev sudo apt-get install rake rubygems libxml-parser-ruby1.8 libxslt1-dev genisoimage scons sudo apt-get install mysql-server sudo gem install nokogiri sudo gem install rake sudo gem install xmlparser
創(chuàng)建MySQL數(shù)據(jù)庫:
mysql -u root -p CREATE USER ‘oneadmin’@'localhost’ IDENTIFIED BY ‘oneadmin’; CREATE DATABASE opennebula; GRANT ALL PRIVILEGES ON opennebula.* TO ‘oneadmin’ IDENTIFIED BY ‘oneadmin’; quit;
下載并安裝OpenNebula前端軟件:
su -l oneadmin wget http://dev.opennebula.org/attachments/download/478/opennebula-3.0.0.tar.gz tar -zxvf opennebula-3.0.0.tar.gz cd opennebula-3.0.0 scons sqlite=no mysql=yes ./install.sh -u oneadmin -g cloud -d /srv/cloud/one
編輯~/.bash_profile,設(shè)置一些環(huán)境變量
export ONE_LOCATION=/srv/cloud/one export ONE_AUTH=$ONE_LOCATION/.one/one_auth export ONE_XMLRPC=http://localhost:2633/RPC2 export PATH=$ONE_LOCATION/bin:/usr/local/bin:/var/lib/gems/1.8/bin/:$PATH
執(zhí)行.bash_profile,使得這些環(huán)境變量生效:
source ~/.bash_profile
編輯~/.one/one_auth,設(shè)置OpenNebula的用戶名和密碼:
mkdir ~/.one echo “oneadmin:YOUR_PASSWORD” > ~/.one/one_auth chmod 640 ~/.one/one_auth
編輯~/etc/oned.conf,設(shè)置OpenNebula所使用的數(shù)據(jù)庫參數(shù):
# DB = [ backend = "sqlite" ] # Sample configuration for MySQL
DB = [ backend = "mysql",
server = "localhost",
port = 0,
user = "oneadmin",
passwd = "oneadmin",
db_name = "opennebula" ]
啟動OpenNebula服務(wù):
one start
[計(jì)算節(jié)點(diǎn)]
全新安裝的Ubuntu 11.04 Server操作系統(tǒng),安裝的時(shí)候同時(shí)安裝OpenSSH Sever和Virtualization。計(jì)算節(jié)點(diǎn)的內(nèi)網(wǎng)IP為192.168.1.2。
首先安裝虛擬化支持:
(重要說明,如果在計(jì)算節(jié)點(diǎn)上沒有安裝ubuntu-vm-builder和ruby這兩個(gè)軟件包,用onehost create命令可以添加該計(jì)算節(jié)點(diǎn),但是其狀態(tài)會顯示為err。)
sudo apt-get install qemu-kvm libvirt-bin bridge-utils ubuntu-vm-builder ruby
安裝NFS客戶端:
sudo apt-get install nfs-common
編輯/etc/fstab,配置NFS客戶端:(假定OpenNebula管理節(jié)點(diǎn)的IP是192.168.166.100)
19.2.166.100:/srv/cloud /srv/cloud nfs defaults 0 0
創(chuàng)建NFS目錄并掛載NFS文件系統(tǒng):
sudo mkdir -p /srv/cloud sudo mount /srv/cloud
創(chuàng)建cloud組和oneadmin用戶:
sudo groupadd -g 10000 cloud sudo useradd -u 10000 -g cloud -m oneadmin -s /bin/bash sudo usermod -d /srv/cloud/one oneadmin sudo passwd oneadmin sudo chown oneadmin:cloud /srv/cloud/
編輯/etc/libvirt/libvirtd.conf配置libvirt,將操作權(quán)限授予給cloud組:
unix_sock_group = “cloud”
編輯/etc/libvirt/qemu.conf配置libvirt,設(shè)置VNC:
vnc_listen = “0.0.0.0″
重啟libvirt:
sudo service libvirt-bin restart sudo chown :cloud /var/run/libvirt/libvirt-sock
編輯/etc/network/interface,根據(jù)實(shí)際的網(wǎng)絡(luò)狀況配置網(wǎng)橋。在這里我們使用eth1連接到一個(gè)私有的內(nèi)網(wǎng),使用192.168.1.*的內(nèi)網(wǎng)IP。
auto eth1 iface eth1 inet manual auto br1 iface br1 inet static address 192.168.1.2 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 bridge_ports eth1 bridge_stp off bridge_fd 0 bridge_maxwait 0
[管理節(jié)點(diǎn)]
添加計(jì)算節(jié)點(diǎn)(假定計(jì)算節(jié)點(diǎn)的IP是192.168.1.2):
onehost create 192.168.1.2 im_kvm vmm_kvm tm_shared
查看計(jì)算節(jié)點(diǎn)是否添加成功:
onehost list
這時(shí)候應(yīng)該可以看到192.168.1.2出現(xiàn)在計(jì)算節(jié)點(diǎn)列表里面。如果計(jì)算節(jié)點(diǎn)配置正確的話,它的狀態(tài)(STAT)應(yīng)該顯示為“on”。如果計(jì)算節(jié)點(diǎn)的狀態(tài)顯示為“err”,說明計(jì)算節(jié)點(diǎn)沒有配置好。這時(shí)候可以做三個(gè)檢查:(1)在管理節(jié)點(diǎn)上是否可以用無密碼模式SSH登錄到計(jì)算節(jié)點(diǎn),(2)計(jì)算節(jié)點(diǎn)是否已經(jīng)安裝好ubuntu-vm-builder和ruby,和(3)在計(jì)算節(jié)點(diǎn)上oneadmin用戶是否有權(quán)限控制KVM。
成功添加計(jì)算節(jié)點(diǎn)之后,我們下載一個(gè)預(yù)先配置好的VM進(jìn)行測試。
mkdir ~/one-templates cd ~/one-templates wget http://dev.opennebula.org/attachments/download/170/ttylinux.tar.gz tar xzf ttylinux.tar.gz
編輯small_network.net,定義一個(gè)網(wǎng)絡(luò):
NAME = “Small Network” TYPE = FIXED BRIDGE = br1
LEASES = [ IP="192.168.1.5"] LEASES = [ IP="192.168.1.6"] LEASES = [ IP="192.168.1.7"] LEASES = [ IP="192.168.1.8"] LEASES = [ IP="192.168.1.9"] LEASES = [ IP="192.168.1.10"] LEASES = [ IP="192.168.1.11"] LEASES = [ IP="192.168.1.12"] LEASES = [ IP="192.168.1.13"] LEASES = [ IP="192.168.1.14"] LEASES = [ IP="192.168.1.15"]
將如上所定義的網(wǎng)絡(luò)添加到系統(tǒng):
onevnet create small_network.net
列出系統(tǒng)上所有的網(wǎng)絡(luò)(剛剛創(chuàng)建的Small Network 的ID可能是0):
onevnet list
編輯ttylinux.one,修改虛擬機(jī)參數(shù):
NAME = ttylinux CPU = 0.1 MEMORY = 64 DISK = [ source = "/srv/cloud/one/one-templates/ttylinux.img", target = "hda", readonly = "no" ] NIC = [ NETWORK_ID = 0] GRAPHICS = [ TYPE = "VNC"] FEATURES=[ acpi="no" ]
在系統(tǒng)中創(chuàng)建該虛擬機(jī):
onevm create ttylinux.one
列出系統(tǒng)上所有的虛擬機(jī)(剛剛創(chuàng)建的虛擬機(jī)的ID可能是0):
onevm list
如上命令列出了系統(tǒng)上所有虛擬機(jī)的狀態(tài),包括運(yùn)行這些虛擬機(jī)的計(jì)算節(jié)點(diǎn)。如果需要了解某個(gè)虛擬機(jī)的詳細(xì)狀況,可以使用onevm show VM_ID命令,例如:
onevm show 0
這個(gè)命令會列出ID為0的虛擬機(jī)的所有相關(guān)信息,包括運(yùn)行該虛擬機(jī)的計(jì)算節(jié)點(diǎn),VNC端口號等等。找到這個(gè)端口號(假定為5900),就可以通過VNC客戶端連接到該虛擬機(jī)的控制臺,例如:
vncviewer 192.168.1.2:5900 [SunStone]
SunStone是OpenNebula的管理界面,可以同時(shí)為云管理員和終端用戶提供服務(wù)。要啟用SunStone,需要在管理節(jié)點(diǎn)上執(zhí)行如下操作:
sudo apt-get install rails thin sudo gem install json sinatra thin sudo gem install sequel sinatra-sequel sudo ln -s /usr/bin/rackup1.8 /usr/bin/rackup
啟動SunStone服務(wù):
su -l oneadmin ./bin/sunstone-server start
在var/sunstone.log里面找到SunStone所使用的端口號(我這里看到的是9869),然后通過瀏覽器訪問SunStone(假定管理節(jié)點(diǎn)的IP是192.168.1.1):
http://192.168.1.1:9869/