如何在vmware下的虛擬機中安裝openstack?
openstack幾乎支持現(xiàn)在所有主流的虛擬技術和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結點上替換現(xiàn)有的nova-compute-kvm到nova-compute-lxc:
$sudoapt-getinstallnova-compute-lxc
LXC使用cgroup文件系統(tǒng)來限制資源和進程,libvirt需要cgroup文件系統(tǒng)來運行LXC,我們只要在novacompute上創(chuàng)建一個ctroups目錄并且在/etc/fstab最后加上none/cgroupscgroupcpuacct,memory,devices,cpu,freezer,blkio00這行就可以了,別忘了重啟系統(tǒng):
$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正在計劃開發(fā)中。