OpenNebula 快速入门
OpenNebula组件介绍
Front-End(前端)
用于运行OpenNebula服务。包含了诸多功能组件,如OpenNebula管理进程oned、调度器mm_sched、一个Web接口服务sunstone-server。Host(宿主机)
用于运行所有虚拟机Datastores(数据存储)
用于实际存放虚拟机的硬盘,可以是任意一种存储介质,NAS(网络附加存储)、SAN(存储区域网络)、直连存储设备(宿主机本地硬盘)。
数据存储可以细分为三大类:
- 系统数据存储
- 镜像数据存储
- 文件数据存储
Network(网络)
OpenNebula体系结构
OpenNebula快速搭建
CentOS
Ubuntu
基于CentOS 6.6 OpenNebula 4.12 搭建实例
判断是否支持虚拟化
# grep -E 'svm|vmx' /proc/cpuinfo
关闭selinux和iptables
加入OpenNebula源
//激活epel # rpm -ivh http://dl.fedoraproject.org/pub/epel/6Server/x86_64/epel-release-6-8.noarch.rpm 或者 #yum install epel-release //添加源文件 # cat << EOT > /etc/yum.repos.d/opennebula.repo [opennebula] name=opennebula baseurl=http://downloads.opennebula.org/repo/4.12/CentOS/6/x86_64 enabled=1 gpgcheck=0 EOT
安装包
- opennebula-server: OpenNebula Daemons
- opennebula: OpenNebula CLI commands
- opennebula-sunstone: OpenNebula’s web GUI
- opennebula-java: OpenNebula Java API
- opennebula-node-kvm: Installs dependencies required by OpenNebula in the nodes
- opennebula-gate: Send information from Virtual Machines to OpenNebula
- opennebula-flow: Manage OpenNebula Services
- opennebula-context: Package for OpenNebula Guests
Server端安装配置
epel源安装
# yum install opennebula-server opennebula-sunstone opennebula-ruby # /usr/share/one/install_gems //耗时较长
检查用户和目录文件
# grep oneadmin /etc/passwd oneadmin:x:9869:9869::/var/lib/one:/bin/bash # ls -ld /etc/one/ //OpenNebula相关配置文件所在目录 drwxr-x---. 11 root oneadmin 4096 Aug 20 11:35 /etc/one/ # ls /etc/init.d/opennebula* /etc/init.d/opennebula /etc/init.d/opennebula-occi /etc/init.d/opennebula-sunstone # ls -ld /var/log/one/ drwxr-x---. 2 oneadmin oneadmin 4096 Jul 25 01:13 /var/log/one/
默认 OpenNebula 数据存储使用 sqlite,如果需要使用 MySQL,进行如下操作:
//创建数据库并赋予权限 mysql> create database opennebula; mysql> grant all privileges on opennebula.* to oneadmin@'localhost' identified by 'oneadmin'; mysql> flush privileges; //修改配置文件如下 [用户、端口、密码、库名和实际情况对应修改]: # vim /etc/one/oned.conf ...... #DB = [ backend = "sqlite" ] # Sample configuration for MySQL DB = [ backend = "mysql", server = "localhost", port = 3306, user = "oneadmin", passwd = "oneadmin", db_name = "opennebula" ]
修改 sunstone 默认监听
# grep ':host' /etc/one/sunstone-server.conf :host: 127.0.0.1 # sed -i '/:host/s/127.0.0.1/10.10.9.128/g' /etc/one/sunstone-server.conf # grep ':host' /etc/one/sunstone-server.conf :host: 10.10.9.128
启动相关服务
# /etc/init.d/opennebula start # /etc/init.d/opennebula-sunstone start # lsof -i:9869
修改 datastore:
OpenNebula 默认用的是 Shared Transfer Driver,这种模式比较适合快速部署和热迁移,只是要配置网络文件系统。如果没有网络文件系统,不想做热迁移,那么可以换成 SSHTransfer Driver 测试部署。
$ onedatastore list # onedatastore list ID NAME SIZE AVAIL CLUSTER IMAGES TYPE DS TM STAT 0 system 0M - - 0 sys - shared on 1 default 28.8G 89% - 0 img fs shared on 2 files 28.8G 89% - 0 fil fs ssh on $ onedatastore update 1 CLONE_TARGET="SYSTEM" DISK_TYPE="FILE" DS_MAD="fs" LN_TARGET="SYSTEM" TM_MAD="ssh" //修改过程产生如下错误: CentOS 默认 vi 位置是/bin/vi,添加相关链接即可 $ onedatastore update 1 Editor not defined //解决方法 # grep -i editor_path= /usr/lib/one/ruby/cli/one_helper.rb EDITOR_PATH='/usr/bin/vi' # ln -s /bin/vi /usr/bin/vi
web登陆
//注意时间同步 用户名和密码通过以下方式获得: # cat /var/lib/one/.one/one_auth oneadmin:cd24c3a59c9fd8a7ab853b10247e8147
Client端安装配置
安装包
opennebula-node-kvm-4.4.0-1.x86_64.rpm
opennebula-common-4.4.0-1.x86_64.rpm
//安装以上包会自动安装bridge-utils、libvirt、 qemu-kvm、qemu-img等虚拟化组件
桥接网络
# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BRIDGE=br0 NAME="System eth0" # cat /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 ONBOOT=yes TYPE=Bridge BOOTPROTO=static IPADDR=10.10.9.125 NETMASK=255.255.255.0 GATEWAY=10.10.9.1 # service network restart # brctl show bridge name bridge id STP enabled interfaces br0 8000.000c2942e561 no eth0 #修改/etc/libvirt/qemu.conf 的相关配置: user = "oneadmin" group = "oneadmin" dynamic_ownership = 0 #修改/etc/libvirt/libvirtd.conf 相关配置: listen_tcp = 1 //OpenNebula使用libvirt提供的TCP协议 listen_tls = 0 修改/etc/sysconfig/libvirtd 开启监听选项: LIBVIRTD_ARGS="--listen" 启动相关服务服务: # /etc/init.d/libvirtd start # /etc/init.d/messagebus start
ssh 无密码登陆
server端
# su - oneadmin $ cat ~/.ssh/config //增加超时时间,不询问直接添加主机到known_hosts文件 ConnectTimeout 5 Host * StrictHostKeyChecking no UserKnownHostsFile /dev/null $ chmod 600 ~/.ssh/config
node端
# su - oneadmin $ vim .ssh/authorized_keys //把管理端ssh公钥加入节点.ssh/authorized_keys文件 $ chmod 400 .ssh/authorized_keys
添加节点
web上添加
命令行添加
$ onehost create 192.168.80.131 --im kvm --vm kvm --net dummy --im/-i:信息管理 driver. 可选: kvm, xen, vmware, ec2, ganglia, dummy. --vm/-v: 虚拟化管理 driver. 可选: kvm, xen, vmware, ec2, dummy. --net/-n: 虚拟网络 driver. 可选: 802.1Q,dummy,ebtables,fw,ovswitch,vmware. //查看主机详细信息 $ onehost show ID $ onehost show -x ID //已xml格式显示主机信息 $ onehost disable 0 //表示不再监控该物理主机,但是不影响正在运行的虚拟机 $ onehost enable 0 //开启监控
问题解决
安装gem的相关依赖/usr/share/one/install_gems
此过程耗时长,可能会出现timeout或是gem、ruby版本过低的情况,解决方法如下:
//更换gem源和包 # gem sources --remove http://rubygems.org/ # gem sources -a http://mirrors.aliyun.com/rubygems/ # gem sources -a https://ruby.taobao.org/ # gem update --system
添加web节点报错
注意查看/var/log/one/oned.log 日志,确保ssh验证通过,文件权限正确,开启messagebus服务。