一、实验环境:
主机名 IP(Static) 系统 配置 角色
nebula 192.168.100.218 CentOS-6.4-x86_64-minimal 2CPU,2G RAM,20G DISK,1网卡 管理节点
node01 192.168.100.114 CentOS-6.4-x86_64-minimal 4CPU,16G RAM,300G DISK,2网卡 计算节点
nebula下载地址:
http://downloads.opennebula.org/packages/opennebula-4.2.0/opennebula-4.2.0.tar.gz
二、初始系统配置:
系统安装后,管理节点和计算节点采用同样步骤做初始配置:
1.配置/etc/hosts文件
添加计算节点IP和主机名的对应关系,管理节点添加所有计算节点的IP和主机名对应关系,计算节点只需添加管理节点的IP和主机名对应关系。
# vi /etc/hosts
192.168.100.218 nebula
192.168.100.114 node01
2.关闭selinux
# vi /etc/selinux/config
将SELINUX=enforcing修改为SELINUX=disabled
3.关闭iptables
# chkconfig iptables off
# chkconfig ip6tables off
4.创建用户组和用户
这里设置oneadmin密码为chensh
# mkdir -p /srv/cloud/
# groupadd -g 1000 cloud
# useradd -u 1000 -g cloud -m oneadmin -d /srv/cloud/one -s /bin/bash
# passwd oneadmin
# chown -R oneadmin:cloud /srv/cloud/
5.关闭其他不需要的服务(可选)
|
6.重启系统
# reboot
三、管理节点配置:
1.安装需要的软件和编译工具
[root@nebula ~]# yum -y install gcc-c++ libvirt mysql-server mysql-devel ruby ruby-devel rubygems scons xmlrpc-c-devel genisoimage wget
2.配置libvirtd.conf和qemu.conf,找到相应项做如下更改
[root@nebula ~]# vi /etc/libvirt/libvirtd.conf
listen_tcp = 1
unix_sock_group = "cloud"
unix_sock_rw_perms = "0770"
auth_unix_ro = "none"
auth_unix_rw = "none"
[root@nebula ~]# vi /etc/libvirt/qemu.conf
vnc_listen = “0.0.0.0″
user = "oneadmin" /*oneadmin用户管理虚拟机*/
group = "cloud"
dynamic_ownership = 0 /*禁止虚拟镜像动态调整所有权限*/
[root@nebula ~]# ln -s /bin/vi /usr/bin/vi /*添加该软连接,否则onedatastore update会报错*/
[root@nebula ~]# chmod o-w /srv/cloud /*去掉cloud目录的写权限*/
[root@nebula ~]# /etc/init.d/libvirtd restart /*重启libvirt服务*/
[root@nebula ~]# chown oneadmin:cloud /var/run/libvirt/libvirt-sock /*修改libvirt-sock所属用户和组*/
3.配置oneadmin下ssh-keygen
[root@nebula ~]# su -l oneadmin
[oneadmin@nebula ~]$ ssh-keygen
[oneadmin@nebula ~]$ cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
[oneadmin@nebula ~]$ echo "Host *" >> ~/.ssh/config
[oneadmin@nebula ~]$ echo "StrictHostKeyChecking no" >> ~/.ssh/config
[oneadmin@nebula ~]$ exit
4.配置nebula数据库
[root@nebula ~]# service mysqld start /*启动mysql数据库*/
[root@nebula ~]# chkconfig mysqld on /*设置mysql数据库开机启动*/
[root@nebula ~]# mysqladmin -uroot password “passwd” /*设置mysql数据库密码为passwd*/
[root@nebula ~]# mysql -uroot -ppasswd /*登录mysql数据库*/
mysql> CREATE DATABASE opennebula; /*创建nebula数据库*/
mysql> CREATE USER 'oneadmin'@'localhost' IDENTIFIED BY 'oneadmin'; /*创建mysql用户和密码*/
mysql> GRANT ALL PRIVILEGES ON opennebula.* TO 'oneadmin' IDENTIFIED BY 'oneadmin'; /*将opennebula数据库赋予oneadmin用户*/
mysql> FLUSH PRIVILEGES; /*刷新配置,使配置生效*/
mysql> quit; /*退出mysql数据库*/
5.编译安装OpenNebula4.2.0
[root@nebula ~]# su -l oneadmin
[oneadmin@nebula ~]$ wget http://downloads.opennebula.org/packages/opennebula-4.2.0/opennebula-4.2.0.tar.gz
[oneadmin@nebula ~]$ ls
opennebula-4.2.0.tar.gz
[oneadmin@nebula ~]$ tar -zxvf opennebula-4.2.0.tar.gz
[oneadmin@nebula ~]$ cd opennebula-4.2.0
[oneadmin@nebula opennebula-4.2.0]$ scons sqlite=no mysql=yes /*在此OpenNebula使用Mysql数据库*/
[oneadmin@nebula opennebula-4.2.0]$ ./install.sh -u oneadmin -g cloud -d /srv/cloud/one
[oneadmin@nebula opennebula-4.2.0]$ cd
[oneadmin@nebula ~]$
6.设置.bash_profile环境变量
[root@nebula ~]# vi ~/.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,使得这些环境变量生效:
[oneadmin@nebula ~]$ source ~/.bash_profile
7.设置SunStone的用户名和密码
编辑~/.one/one_auth
[oneadmin@nebula ~]$ mkdir ~/.one
[oneadmin@nebula ~]$ echo "oneadmin:password" > ~/.one/one_auth
[oneadmin@nebula ~]$ chmod 640 ~/.one/one_auth
8.设置nebula的数据库参数和datastore路径
编辑~/etc/oned.conf
[oneadmin@nebula ~]$ vi etc/oned.conf
# DB = [ backend = "sqlite" ]
# Sample configuration for MySQL
DB = [ backend = "mysql",
server = "localhost",
port = 0,
user = "oneadmin",
passwd = "oneadmin",
db_name = "opennebula" ]
将
#DATASTORE_LOCATION = /var/lib/one/datastores
改为
DATASTORE_LOCATION = /srv/cloud/one/datastores
9.修改datastore,使节点使用本地存储
[oneadmin@nebula ~]$ one start /*启动nebula one服务*/
[oneadmin@nebula ~]$ onedatastore update 0
将TM_MAD="shared"修改为TM_MAD="ssh"
[oneadmin@nebula ~]$ onedatastore update 1
将TM_MAD="shared"修改为TM_MAD="ssh"
设置镜像安全路径,添加下行(可选):
SAFE_DIRS="/srv/cloud/one/images"
[oneadmin@nebula ~]$mkdir ~/images /*创建镜像存放文件夹(可选)*/
10.安装gem包
[root@nebula ~]# gem install json sinatra
……………………
Successfully installed json-1.8.1
Successfully installed rack-1.5.2
Successfully installed tilt-1.4.1
Successfully installed rack-protection-1.5.1
Successfully installed sinatra-1.4.4
……………………
11.修改sunstone-server.conf配置
[root@nebula ~]# su - oneadmin
[oneadmin@nebula ~]$ vi etc/sunstone-server.conf
将原有:host: 127.0.0.1中IP字段修改为本机IP或者0.0.0.0:
:host: 0.0.0.0
保存退出。
12.启动服务:
[oneadmin@nebula ~]$ one stop /*重启one服务*/
[oneadmin@nebula ~]$ one start
[oneadmin@nebula ~]$ sunstone-server start /*启动SunStone服务*/
VNC proxy started
sunstone-server started
****************************************************************************************************************************************************
四、计算节点配置:
1.设置网络桥接(可选):
(1).编辑/etc/sysconfig/network内容如下:
[root@node01 ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node01
GATEWAY=br0
(2).编辑/etc/sysconfig/network-scripts/ifcfg-eth0内容如下:
[root@node01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT=yes
BRIDGE=br0
(3).创建ifcfg-br0文件,内容如下:
[root@node01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
TYPE=Bridge
IPADDR=192.168.100.114
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
BROADCAST=192.168.100.255
DELAY=0
(4).重启网络服务:
[root@node01 ~]# service network restart
2.安装计算节点依赖的软件包
[root@node01 ~]# yum -y install kvm libvirt ruby sudo vconfig
3.配置libvirtd.conf和qemu.conf,找到相应项做如下更改
[root@nebula ~]# vi /etc/libvirt/libvirtd.conf
listen_tcp = 1
unix_sock_group = "cloud"
unix_sock_rw_perms = "0770"
auth_unix_ro = "none"
auth_unix_rw = "none"
[root@nebula ~]# vi /etc/libvirt/qemu.conf
vnc_listen = “0.0.0.0″
user = "oneadmin" /*oneadmin用户管理虚拟机*/
group = "cloud"
dynamic_ownership = 0 /*禁止虚拟镜像动态调整所有权限*/
[root@node01 ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/kvm /*做一个qemu-kvm到kvm的软链接*/
[root@node01 ~]# ln -s /usr/sbin/brctl /sbin/brctl /*创建/sbin/brctl链接,否则创建虚拟机vlan接口网络会报错*/
[root@node01 ~]# chmod o-w /srv/cloud /*去掉cloud目录的写权限*/
[root@node01 ~]# /etc/init.d/libvirtd restart /*重启libvirt服务*/
[root@node01 ~]# chown oneadmin:cloud /var/run/libvirt/libvirt-sock /*修改libvirt-sock所属用户和组*/
4.sudo配置
编辑/etc/sudoers让oneadmin用户有直接执行sudo的权限
[root@node01 ~]# vi /etc/sudoers
……………………………省略若干行……………………
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
# You have to run "ssh -t hostname sudo <cmd>".
#
# Defaults requiretty /*将该行注释掉*/
……………………………省略若干行……………………
# Allow root to run any commands anywhere
root ALL=(ALL) ALL
oneadmin ALL=(ALL) ALL /*添加该项,oneadmin用户具有root的命令权限*/
……………………………省略若干行……………………
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
%cloud ALL=(ALL) NOPASSWD: ALL /*添加该项,cloud组用户执行sudo免密码*/
……………………………省略若干行……………………
保存退出;
5.配置与管理节点的无密码登陆
拷贝管理节点密钥到oneadmin用户家目录下:
[root@node01 ~]# su -l oneadmin
[oneadmin@node01 ~]$ scp -r oneadmin@nebula:~/.ssh ./
The authenticity of host 'nebula (192.168.100.218)' can't be established.
RSA key fingerprint is 24:09:18:13:9c:1f:94:93:dd:b8:73:4e:12:1d:40:fd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'nebula' (RSA) to the list of known hosts.
oneadmin@192.168.100.218's password:
config 100% 32 0.0KB/s 00:00
authorized_keys 100% 397 0.4KB/s 00:00
id_rsa 100% 1675 1.6KB/s 00:00
id_rsa.pub 100% 397 0.4KB/s 00:00
[oneadmin@node01 ~]$ ls .ssh/
authorized_keys config id_rsa id_rsa.pub
[oneadmin@node01 ~]$ exit
****************************************************************************************************************************************************
五、登陆验证
配置完毕,可通过firefox或Chrome登陆SunStone页面添加计算节点,此例子中SunStone用户名为oneadmin密码为password