Ubuntu 11.04 Server安装配置OpenNebula 3.0
OpenNebula于10月3日发布3.0版本。这两天终于有时间测试了一把。
[管理节点]
全新安装的Ubuntu 11.04 Server操作系统,安装的时候同时安装OpenSSH Server和LAMP Server。管理节点的内网IP为192.168.1.1。
首先创建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服务:
sudo apt-get install nfs-kernel-server
sudo pico /etc/exports
增加一行内容:
/srv/cloud *(rw,fsid=0,nohide,sync,root_squash,no_subtree_check)
启动NFS服务:
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
创建MySQL数据库:
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,设置一些环境变量
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
执行.bash_profile,使得这些环境变量生效:
source ~/.bash_profile
编辑~/.one/one_auth,设置OpenNebula的用户名和密码:
mkdir ~/.one
echo “oneadmin:YOUR_PASSWORD” > ~/.one/one_auth
chmod 640 ~/.one/one_auth
编辑~/etc/oned.conf,设置OpenNebula所使用的数据库参数:
# DB = [ backend = “sqlite” ]
# Sample configuration for MySQL
DB = [ backend = “mysql”,
server = “localhost”,
port = 0,
user = “oneadmin”,
passwd = “oneadmin”,
db_name = “opennebula” ]
启动OpenNebula服务:
one start
[计算节点]
全新安装的Ubuntu 11.04 Server操作系统,安装的时候同时安装OpenSSH Sever和Virtualization。计算节点的内网IP为192.168.1.2。
首先安装虚拟化支持:
(重要说明,如果在计算节点上没有安装ubuntu-vm-builder和ruby这两个软件包,用onehost create命令可以添加该计算节点,但是其状态会显示为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管理节点的IP是192.168.1.1)
192.168.1.1:/srv/cloud /srv/cloud nfs defaults 0 0
创建NFS目录并挂载NFS文件系统:
sudo mkdir -p /srv/cloud
sudo mount /srv/cloud
创建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,将操作权限授予给cloud组:
unix_sock_group = “cloud”
编辑/etc/libvirt/qemu.conf配置libvirt,设置VNC:
vnc_listen = “0.0.0.0”
重启libvirt:
sudo service libvirt-bin restart
sudo chown :cloud /var/run/libvirt/libvirt-sock
编辑/etc/network/interface,根据实际的网络状况配置网桥。在这里我们使用eth1连接到一个私有的内网,使用192.168.1.*的内网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
[管理节点]
添加计算节点(假定计算节点的IP是192.168.1.2):
onehost create 192.168.1.2 im_kvm vmm_kvm tm_shared
查看计算节点是否添加成功:
onehost list
这时候应该可以看到192.168.1.2出现在计算节点列表里面。如果计算节点配置正确的话,它的状态(STAT)应该显示为“on”。如果计算节点的状态显示为“err”,说明计算节点没有配置好。这时候可以做三个检查:(1)在管理节点上是否可以用无密码模式SSH登录到计算节点,(2)计算节点是否已经安装好ubuntu-vm-builder和ruby,和(3)在计算节点上oneadmin用户是否有权限控制KVM。
成功添加计算节点之后,我们下载一个预先配置好的VM进行测试。
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,定义一个网络:
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″]
将如上所定义的网络添加到系统:
onevnet create small_network.net
列出系统上所有的网络(刚刚创建的Small Network 的ID可能是0):
onevnet list
编辑ttylinux.one,修改虚拟机参数:
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” ]
在系统中创建该虚拟机:
onevm create ttylinux.one
列出系统上所有的虚拟机(刚刚创建的虚拟机的ID可能是0):
onevm list
如上命令列出了系统上所有虚拟机的状态,包括运行这些虚拟机的计算节点。如果需要了解某个虚拟机的详细状况,可以使用onevm show VM_ID命令,例如:
onevm show 0
这个命令会列出ID为0的虚拟机的所有相关信息,包括运行该虚拟机的计算节点,VNC端口号等等。找到这个端口号(假定为5900),就可以通过VNC客户端连接到该虚拟机的控制台,例如:
vncviewer 192.168.1.2:5900
[SunStone]
SunStone是OpenNebula的管理界面,可以同时为云管理员和终端用户提供服务。要启用SunStone,需要在管理节点上执行如下操作:
sudo apt-get install rails thin curl
sudo gem install json sinatra thin
sudo gem install sequel sinatra-sequel
sudo ln -s /usr/bin/rackup1.8 /usr/bin/rackup
启动SunStone服务:
su -l oneadmin
./bin/sunstone-server start
在var/sunstone.log里面找到SunStone所使用的端口号(我这里看到的是9869),然后通过浏览器访问SunStone(假定管理节点的IP是192.168.1.1):
http://192.168.1.1:9869/
登录进入SunStone之后,可以查看和设置计算节点、虚拟机、网络、模板、映像、用户、群组、权限 。在缺省的情况下,OpenNebula自带的会计与统计功能没有启用,因此看不到计算节点和虚拟机的监控信息。如果要启用这个功能,需要启动oneacctd服务。
sudo gem install json sqlite3 sequel
oneacctd start
这个缺省的设置使用sqlite记录监控信息。如果需要使用MySQL记录监控信息,则需要进行如下步骤:
sudo gem install mysql
修改etc/acctd.conf中的数据库连接URI:
:DB: mysql://db_username:db_password@localhost/opennebula (需要替换URI中的db_username和db_password)
重新启动 acctd:
oneacctd stop
oneacctd start
进一步的设置可以参考etc/acctd.conf。
[其他说明]
虚拟机的在线迁移,需要配置好所有计算节点的/etc/hosts和/etc/hostname,确保在所有在计算节点上都能够根据主机名来寻找到其他计算节点,不然的话在线迁移会失败。此外,所有节点(包括控制节点和计算节点)之间需要配置无密码SSH登录。
数据库的用户名和密码尽可能不要包含:和@字符,否则会出现数据库连接错误。
看上去openNebula安装和配置都貌似要比openstack成熟点,请问您用下来感觉如何
您好:我在搭建这个的时候sunstone起来了,但是无法登陆,我做了如下
echo “oneadmin:123456” > ~/.one/one_auth
但是输入用户名和密码后登陆不进去
收益良多,希望能看到您更多的文章!!!
This is a wonderful artical! But when i start one i got an error saying
‘/srv/cloud/one/bin/one: line 104: 2721 aborted $ONED -f 2>&1 oned failed to start’
Can you please advise for help?
Thanks!
按照文章所述安装了一下OpenNebula,有一点体会,也有些问题。
先说说 jmc 反应的错误,我貌似遇到过,貌似是因为以oneadmin身份登录时没有使用su -l oneadmin命令而仅仅是su oneadmin导致的,加上-l之后会更改大部分的环境变量,也就是你直接在oneadmin用户下设置的一些环境变量,不知道说得对不对~
我也遇到了cyq反应的问题,不知道清野君有何高见?在SunStone端输入用户名和密码之后,不报错,也不跳转,神马情况。
PS:目测清野君比较忙,所以欢迎大家相互交流,留下我的企鹅和邮箱~
QQ:370102768
E-Mail: kemaswill@163.com
[…] 这个帖子是为2011年11月所发布的《Ubuntu 11.04 Server安装配置OpenNebula 3.0》一文的升级版。本教程在Ubuntu 12.04 Server的32位版本和64位版本上都进行过测试。在设备匮乏的情况下,本教程也可以在一台笔记本电脑上完成。 […]
您好 我目前用的版本是12.04然後安裝ONE 3.0
使用兩台PC 一台當管理節點一台計算節點
目前已經可以使用MIGRATE的功能
但是使用LIVE MIGRATE時,例如從PC.A到PC.B
PC.B會有顯示傳過來的VM一下子然後就不見了
想請問是哪邊出了問題
謝謝您
MILTON,从你的描述来看应该是在线迁移失败了。是一直都失败呢还是有些时候成功有些时候失败?
您好 我看了您3.8的教程,配置好所有计算节点的/etc/hosts和/etc/hostname就可以了 感謝您的回覆
您好
請問在线迁移(live migrate)跟迁移(migrate),
在迁移時,
分別是傳輸什麼資料給節點的呢?
您好我目前成功安裝ONE3.0,並且可以經由SUNSTONE管理,一個管理節點且兩個計算節點(KVM,NFS共享),互相可以動態遷移(LIVE MIGRATION),
目前我在節點A上的VM裡讓他下載某個檔案同時,我下(LIVE MIGRATION)指令讓他到另一個節點B上,結果發現在節點B上無法繼續下載此檔案。
我用wireshark去看,傳送檔案那方是傳給節點A的實體IP(203.74.4.2 –>節點A IP: 140.123.107.153),到轉移過去節點B之後,就會destination unreachable。
這樣似乎有點奇怪,比如某間公司提供了服務在這台VM上(節點A),但LIVE MIGRATION過去節點B之後,這間公司提供的服務就被中斷了。
想請問我設定有地方出錯嗎?