如何在vmware下的虚拟机中安装openstack
如何在vmware下的虚拟机中安装openstack?
OpenStack几乎支持现在所有主流的虚拟技术和Hypervisor,如KVM,Hyper-V,LXC,QEMU,UML,VMWareESX/ESXi,Xen/XenServer等,未来还会支持OpenVZ和VirtualBox.不过OpenStack首选的Hypervisor是KVM,OpenStack安装后默认使用的是KVM(–libvirt_type=kvm),不需要特别配置。如果由于某种原因,比如服务器CPU不支持IntelVT-x/AMD-V不能使用KVM或者想简单尝试一下另外一种Hypervisor怎么办呢?方法很容易,1、更改OpenStackNova的配置文件(–libvirt_type);2、给所有的Compute结点装上相应的Hypervisor就可以了。以下以LXC为例来说明如何更换OpenStackNova的Hypervisor,LXC使用的是与Xen和KVM完全不同的虚拟技术,和OpenVZ的容器技术有点类似。
首先在所有openstacknovacompute结点上替换现有的nova-compute-kvm到nova-compute-lxc:
$sudoapt-getinstallnova-compute-lxc
LXC使用cgroup文件系统来限制资源和进程,libvirt需要cgroup文件系统来运行LXC,我们只要在novacompute上创建一个ctroups目录并且在/etc/fstab最后加上none/cgroupscgroupcpuacct,memory,devices,cpu,freezer,blkio00这行就可以了,别忘了重启系统:
$sudomkdir/cgroups
$vi/etc/fstab
none/cgroupscgroupcpuacct,memory,devices,cpu,freezer,blkio00
$sudoreboot
重启后可以看到/cgroups下面多了很多东西:
$ls/cgroup/
blkio.io_mergedcpu.shares
blkio.io_queueddevices.allow
blkio.io_service_bytesdevices.deny
blkio.io_serviceddevices.list
blkio.io_service_timelibvirt
blkio.io_wait_timememory.failcnt
blkio.reset_statsmemory.force_empty
blkio.sectorsmemory.limit_in_bytes
blkio.throttle.io_service_bytesmemory.max_usage_in_bytes
blkio.throttle.io_servicedmemory.memsw.failcnt
blkio.throttle.read_bps_devicememory.memsw.limit_in_bytes
blkio.throttle.read_iops_devicememory.memsw.max_usage_in_bytes
blkio.throttle.write_bps_devicememory.memsw.usage_in_bytes
blkio.throttle.write_iops_devicememory.move_charge_at_immigrate
blkio.timememory.numa_stat
blkio.weightmemory.oom_control
blkio.weight_devicememory.soft_limit_in_bytes
cgroup.clone_childrenmemory.stat
cgroup.event_controlmemory.swappiness
cgroup.procsmemory.usage_in_bytes
cpuacct.statmemory.use_hierarchy
cpuacct.usagenotify_on_release
cpuacct.usage_percpurelease_agent
cpu.rt_period_ustasks
cpu.rt_runtime_us
修改OpenStackNova配置,将nova-compute.conf里面的–libvirt_type=kvm改成lxc:
$sudovi/etc/nova/nova-compute.conf
--libvirt_type=lxc
$sudorestartnova-compute
重启所有novacompute结点上的nova-compute服务,有必要的话重启所有novacompute结点。
那镜像怎么办呢?以前为KVM上传的镜像也可以用在LXC上吗?嗯,可以。下载oneiric-server-cloudimg-amd64.tar.gz解压并镜像到OpenStack:
$wget
$tarzxvfoneiric-server-cloudimg-amd64.tar.gz
$euca-bundle-image-ioneiric-server-cloudimg-amd64.img
$euca-upload-bundle-boneiric-m/tmp/oneiric-server-cloudimg-amd64.img.manifest.xml
$euca-registeroneiric/oneiric-server-cloudimg-amd64.img.manifest.xml
$euca-describe-images
IMAGEami-00000001oneiric/oneiric-server-cloudimg-amd64.img.manifest.xmlavailableprivatex86_64machineinstance-store
$euca-run-instances-kvpsee-tm1.tinyami-00000001
$euca-describe-instances
RESERVATIONr-4bbu7bd7sanbidefault
INSTANCEi-00000001ami-00000001172.16.39.6172.16.39.6runningvpsee(vpseecloud,node00)0m1.tiny2012-01-20T08:04:05Znovaami-00000000ami-00000000
需要注意的是,OpenStack目前不支持混合Hypervisor,也就是说所有novacompute结点上必须使用同一种Hypervisor,不过支持混合Hypervisor的OpenStack正在计划开发中。