OpenStack Hands on lab 4-2: Nova安装和配置
OpenStack已经发布Essex版本了, 看来我的速度远远不及现在OpenStack的开发进度, 也正因为如此, 在我写这个系列的时候, 他们已经修改了很多东西, 我也在尽量的根据读者的反馈修改了前面的内容。 这篇文章是接着Nova介绍的第二部分, 所以如果你对Nova的概念还不是很清晰, 我建议你看一下第一部分。 所以这篇开始, 我就不多说Nova是神马了, 就直接开始我们的动手试验。
相关阅读:
准备环境
由于我的试验环境有限, 所以这次我选择在一台虚机上安装Nova组件, 而没有使用多Compute节点的方式来部署, 据说那也是挺挑战的, 等我有闲置的机器我会去尝试一下。
os: Ubuntu server 11.10 hostname: os-nova-01 ip address:10.172.7.86 role: nova-api nova-compute nova-scheduler nova-network nova-volume nic: single #由于我的cpu是比较老的i3, 物理机总共就4G内存, 我还跑了一个nexentastor, 所以这里就委屈一下nova了, 给了1G内存, 不能跑kvm, virtlib-type设置的是qemu
安装Nova
照例安装必要的软件和Python的依赖项, 其他的依赖项等后面遇到的时候再装。
sudo apt-get install build-essential git python-dev python-setuptools python-pip python-mysqldb libxml2-dev libxslt-dev sudo apt-get install rabbitmq-server bridge-utils sudo rabbitmqctl change_password guest openstack sudo apt-get install lvm2 iscsitarget open-iscsi iscsitarget-source iscsitarget-dkms tgt #用于配置nova-volume sudo apt-get install libhivex0 btrfs-tools cryptsetup diff libaugeas0 reiserfsprogs zfs-fuse jfsutils scrub xfsprogs zerofree libfuse2 sudo /etc/init.d/tgt start
可以看出, Nova的依赖项还挺多的。 吐槽一下, 我们继续,签出代码, 并安装到Python dist package
cd ~ git clone git://github.com/openstack/nova.git#nova-api需要使用到keystone, 所以还需要安装一下keystone git clone git://github.com/openstack/keystone.git#still, 它需要Glance的一些功能 git clone git://github.com/openstack/glance.git cd ~/nova sudo pip install -r tools/pip-requires sudo python setup.py install cd ~keystone sudo pip install -r tools/pip-requires sudo python setup.py install cd ~/glance sudo pip install -r tools/pip-requires sudo python setup.py install
修改网络设置
sudo vi /etc/network/interfaces #如果你是只有一个网卡,那么你直接改成下面这段就可以了, 如果你是多网卡的话, 将不适用于本文的单网卡设置试验, 你可以忽略第二块网卡, 我假设你只有一块网卡, 并且设备名称是eth0# This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5).# The loopback network interfaceauto lo iface lo inet loopback # The primary network interfaceauto br100 iface br100 inet static address 10.172.7.86 netmask 255.255.255.0 gateway 10.172.7.1 bridge_ports eth0 bridge_stp off bridge_fd 0
增加一个桥接设备, 我们将它命名为br100
sudo brctl addbr br100 sudo /etc/init.d/networking restart
经过刚才的设置, 用ifconfig应该是下面的结果:
br100 Link encap:EthernetHWaddr00:0c:29:b3:c2:2b inet addr:10.172.7.86Bcast:0.0.0.0Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:feb3:c22b/64Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500Metric:1 RX packets:1371 errors:0 dropped:20 overruns:0 frame:0 TX packets:138 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:167915(167.9 KB) TX bytes:15756(15.7 KB) eth0 Link encap:EthernetHWaddr00:0c:29:b3:c2:2b UP BROADCAST RUNNING MULTICAST MTU:1500Metric:1 RX packets:2375 errors:0 dropped:0 overruns:0 frame:0 TX packets:162 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:446925(446.9 KB) TX bytes:16812(16.8 KB) lo Link encap:LocalLoopback inet addr:127.0.0.1Mask:255.0.0.0 inet6 addr:::1/128Scope:Host UP LOOPBACK RUNNING MTU:16436Metric:1 RX packets:113 errors:0 dropped:0 overruns:0 frame:0 TX packets:113 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:7374(7.3 KB) TX bytes:7374(7.3 KB)
安装虚拟机Hypervisor
经过刚才的设置, 我们有一个桥接设备,桥接在物理网卡eth0上, 那么接下来需要设置一下虚拟机的运行环境和libvirt, 这样nova就可以通过libvirt连接到虚拟机Hypervisor。
sudo apt-get install qemu libvirt-bin libvirt-dev python-libvirt kvm ebtables nbd-server nbd-client
检查一下你的机器是否可以使用硬件虚拟化来加速虚拟机运行
kvm-ok
如果显示的是
INFO:/dev/kvm exists KVM acceleration can be used
那么你的设备支持KVM的方式来运行虚拟机, 如果是
INFO:Your CPU does not support KVM extensions KVM acceleration can NOT be used
Oops, 你只能通过qemu软件虚拟的方式来运行虚拟机。 至于kvm和qemu有什么区别, 简单的说就是kvm使用cpu的xvm指令扩展来运行虚拟机, 而qemu使用软件模拟cpu的指令来实现虚拟化。 详细的资料, 还是去Wikipedia吧。