A-A+

Ubuntu Server 11.04 安装配置 OpenNebula 3.0

2015年09月25日 虚拟化 暂无评论 阅读 2,471 views 次
摘要:

当前比较火的云管理平台,当属openstack无疑了。但我们这里要说的是另一款云管理平台软件,OpenNebula。

OpenNebula,这是一款为云计算而打造的开源工具箱。它允许你与Xen,KVM或VMware ESX一起建立和管理私有云,同时还提供Deltacloud适配器与Amazon EC2相配合来管理混合云。除了像Amazon一样的商业云服务提供商,在不同OpenNebula实例上运行私有云的Amazon合作伙伴也同样可以作为远程云服务供应商。

早在2011年,就有人对行业内的几款虚拟化管理软件进行比较了,这些软件包括Eucalyptus, OpenNebula, OpenStack, OpenQRM, XenServer, Oracle VM, CloudStack, ConVirt等。这些软件各有千秋,下面把当时实验时的opennebula 3.0版部署过程整理出来,供有需求的朋友参考。

一、部署管理节点

全新安装的Ubuntu 11.04 Server操作系统,同时安装OpenSSH和LAMP。内网IP为192.168.1.1。
首先创建oneadmin组和oneadmin用户:

sudo mkdir -p /srv/cloud/
sudo groupadd -g 10000 oneadmin
sudo useradd -u 10000 -g oneadmin -m oneadmin -d /srv/cloud/one -s /bin/bash
sudo passwd oneadmin
sudo chown -R oneadmin:oneadmin /srv/cloud/

切换到oneadmin用户

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 vi /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 oneadmin -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

设置OpenNebula的管理用户名和密码,编辑~/.one/one_auth:

mkdir ~/.one
echo “oneadmin:YOUR_PASSWORD” > ~/.one/one_auth
chmod 640 ~/.one/one_auth

设置OpenNebula所使用的数据库参数,编辑~/etc/oned.conf:

# DB = [ backend = "sqlite" ]
# Sample configuration for MySQL
DB = [ backend = "mysql",
server = "localhost",
port = 3306,
user = "oneadmin",
passwd = "oneadmin",
db_name = "opennebula" ]

启动OpenNebula服务:

one start

二、部署计算节点

全新安装的Ubuntu 11.04 Server操作系统,同时安装OpenSSH和虚拟化支持。内网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客户端:

192.168.1.1:/srv/cloud /srv/cloud nfs defaults 0 0

创建NFS目录并挂载NFS文件系统:

sudo mkdir -p /srv/cloud
sudo mount /srv/cloud

创建oneadmin组和oneadmin用户:

sudo groupadd -g 10000 oneadmin
sudo useradd -u 10000 -g oneadmin -m oneadmin -s /bin/bash
sudo usermod -d /srv/cloud/one oneadmin
sudo passwd oneadmin
sudo chown oneadmin:oneadmin /srv/cloud/

编辑/etc/libvirt/libvirtd.conf配置libvirt,将操作权限授予给oneadmin组:

unix_sock_group = “oneadmin”

编辑/etc/libvirt/qemu.conf配置libvirt,设置VNC:

vnc_listen = “0.0.0.0″

重启libvirt:

sudo service libvirt-bin restart
sudo chown :oneadmin /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

三、管理节点添加计算节点

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"]

将如上所定义的网络添加到系统:

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端口号等等。找到这个端口号(假定为7777),就可以通过VNC客户端连接到该虚拟机的控制台,例如:

vncviewer 192.168.1.2:7777

四、前端管理页面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:
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:
B: 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登录。

给我留言

本站理念:

致力于运维技术的分享,运维前源技术的探讨,欢迎广大朋友一起参与,一起分享,共同成长。

交流探讨:

QQ群:26489714