OpenNebula 3.8 — VMWare

By , May 3, 2013 1:47 pm

[1]前端节点的配置

首先需要在前端节点上安装OpenNebula,具体的方法可以参见《Ubuntu 12.04 Server安装配置OpenNebula 3.8》这篇文章。

为了简单期间,我们使用前段节点所提供的NFS服务作为ESXi节点的存储设备。在创建NFS服务的时候需要export两个目录:

$ sudo vi /etc/exports
/var/lib/one/datastores/0 *(rw,sync,no_subtree_check,root_squash,anonuid=10000,anongid=10000)
/var/lib/one/datastores/1 *(rw,sync,no_subtree_check,root_squash,anonuid=10000,anongid=10000)

然后需要在前端节点上安装libvirt,并且使得其支持VMWare。

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder ruby libgnutls-dev libdevmapper-dev libcurl4-gnutls-dev python-dev libnl-dev libapparmor-dev libpciaccess-dev

编辑/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 oneadmin:cloud /var/run/libvirt/libvirt-sock

Ubuntu自带的libvirt不提供对VMWare的支持。我们需要手工编译安装libvirt 1.05,并设置为支持VMWare。

wget http://libvirt.org/sources/libvirt-1.0.5.tar.gz
tar xvzf libvirt-1.05.tar.gz 
cd libvirt-1.05
./configure --with-esx --with-apparmor --sysconfdir=/etc --libdir=/usr/lib --sbindir=/usr/sbin --datarootdir=/usr/share --localstatedir=/var --libexecdir=/usr/lib/libvirt
make
sudo make install

sudo cp -a examples/apparmor/usr.* /etc/apparmor.d/
sudo cp -a examples/apparmor/TEMPLATE /etc/apparmor.d/libvirt/ 
sudo cp -a examples/apparmor/libvirt-qemu /etc/apparmor.d/abstractions/ 
sudo cp /usr/local/bin/virsh /usr/bin/virsh 
sudo /etc/init.d/apparmor restart

export PERL_LWP_SSL_VERIFY_HOSTNAME=0

测试一下是否能够通过libvirt访问ESXi节点(在下面这个命令中,esxi01是ESXi节点的主机名):

virsh -c esx://esxi01/?no_verify=1 --readonly nodeinfo

如果没有以外的话,你应该可以看到类似于下面的信息:

oneadmin@opennebula:~/libvirt-0.9.10$ virsh -c esx://esxi01/?no_verify=1 --readonly nodeinfo
Enter username for esxi01 [root]: 
Enter root's password for esxi01: 
CPU model:           Intel Core i5-3330S CPU @ 2.70G
CPU(s):              4
CPU frequency:       2693 MHz
CPU socket(s):       1
Core(s) per socket:  4
Thread(s) per core:  1
NUMA cell(s):        1
Memory size:         8283168 kB

从VMWare网站下载VMware-vSphere-CLI-5.0.0-615831.x86_64.tar.gz,按照如下步骤安装:

sudo apt-get install libxml-libxml-perl libclass-methodmaker-perl libcrypt-ssleay-perl curl libdata-uuid-libuuid-perl perl-doc uuid libuuid-perl
tar zxvf VMware-vSphere-CLI-5.0.0-615831.x86_64.tar.gz
cd vmware-vsphere-cli-distrib
perl Makefile.PL 
make

sudo perl -MCPAN -e shell

install Bundle::CPAN

编辑文件vmware-install.pl,修改下面这几行

      if ( !( $ftpproxy && $httpproxy)) {
         uninstall_file($gInstallerMainDB);
         exit 1;
      }

修改后的内容为:

      if ( !( $ftpproxy && $httpproxy)) {
#         uninstall_file($gInstallerMainDB);
#         exit 1;
      }

然后执行安装程序:

sudo ./vmware-install.pl 

安装完成后,测试一下是否可以访问ESXi主机:

esxcfg-nics -l --server esxi01 --username root

修改etc/oned.conf,取消下面这些配置的注释:

IM_MAD = [
      name       = "im_vmware",
      executable = "one_im_sh",
      arguments  = "-c -t 15 -r 0 vmware" ]

VM_MAD = [
    name       = "vmm_vmware",
    executable = "one_vmm_sh",
    arguments  = "-t 15 -r 0 vmware -s sh",
    default    = "vmm_exec/vmm_exec_vmware.conf",
    type       = "vmware" ]

修改etc/vmwarerc,提供访问ESXi节点的用户名和密码:

# Username and password of the VMware hypervisor
:username: "root"
:password: "Password"

编辑etc/vmm_exec/vmm_exec_vmware.conf,注释掉下面这一行:

#DISK = [ DRIVER = file ]

然后重新启动OpenNebula服务:

one stop
one start

[2]ESXi节点的配置

在ESXi节点上启用SSH服务,通过vSphere Client在ESXi节点上创建用户oneadmin和用户组cloud,其用户ID和用户组ID都设置为10000(与前端节点一致)。将oneadmin用户添加到root用户组,允许oneadmin用户通过SSH访问ESXi节点,并给oneadmin用户分配管理员(Administrator)权限。

通过vSphere Client将前端节点所提供的两个NFS服务分别挂载为0 和1 两个数据存储(datastore)。

用root用户登录到ESXi节点,创建目录/etc/ssh/keys-oneadmin,并将前端节点上/srv/cloud/one/.ssh/id_rsa.pub文件拷贝成为ESXi节点上的/etc/ssh/keys-oneadmin/authorized_keys,然后将该文件的所有者设置为oneadmin用户。

# cd /etc/ssh
# chown -R oneadmin keys-oneadmin

修改ESXi节点上的防火墙配置文件/etc/vmware/firewall/service.xml,在文件末尾添加VNC配置:

<!-- VNC -->
  <service id="0033">
    <id>VNC</id>
    <rule id='0000'>
        <direction>outbound</direction>
        <protocol>tcp</protocol>
        <porttype>dst</porttype>
        <port>
           <begin>5800</begin>
           <end>5999</end>
        </port>
     </rule>
     <rule id='0001'>
        <direction>inbound</direction>
        <protocol>tcp</protocol>
        <porttype>dst</porttype>
        <port>
           <begin>5800</begin>
           <end>5999</end>
        </port>
     </rule>
     <enabled>true</enabled>
     <required>false</required>
  </service>

重新启动防火墙:

# /sbin/esxcli network firewall refresh
# /sbin/esxcli network firewall ruleset list

在前端节点上运行下面这个命令,测试一下是否可以通过OpenNebula访问ESXi节点。如果配置成功的话,可以看到该节点的CPU和内存等信息。

/srv/cloud/one/var/remotes/im/run_probes vmware 0 esxi01

通过SunStone管理门户添加ESXi节点,其虚拟化平台和监控组件都设置为VMWare即可。

One Response to “OpenNebula 3.8 — VMWare”

  1. hansz says:

    请问如何在vSphere Client在ESXi节点上创建用户oneadmin和用户组cloud,其用户ID和用户组ID都设置为10000?
    我在我用的是esxi 5.1 但是创建的oneadmin 用户id只能是1000 而且不能创建组,请问您知道这该修改什么地方么

Leave a Reply

Panorama Theme by Themocracy