OpenNebula 快速入门

OpenNebula组件介绍

  • Front-End(前端)

    用于运行OpenNebula服务。包含了诸多功能组件,如OpenNebula管理进程oned、调度器mm_sched、一个Web接口服务sunstone-server。
  • Host(宿主机)

    用于运行所有虚拟机
  • Datastores(数据存储)

    用于实际存放虚拟机的硬盘,可以是任意一种存储介质,NAS(网络附加存储)、SAN(存储区域网络)、直连存储设备(宿主机本地硬盘)。

    数据存储可以细分为三大类:

    • 系统数据存储
    • 镜像数据存储
    • 文件数据存储
  • Network(网络)

OpenNebula体系结构

OpenNebula快速搭建

基于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服务。