在虚拟机里安装openstack

在VirtualBox的虚拟机里面按照这个文档把openstack装了一把。

准备工作:

  1. 创建虚拟机server1和server2,Ubuntu 64位
  2. 两块网卡,eth0 NAT,eth1 Internal Network
  3. server1分配两块硬盘,第二块专作nova的volume(需要特别指出,openstack的文档对这里没作任何说明,我是做到那步的时候才发现,sda6是神马东西!当然也可以单独分个区,我是没办法了才挂上一块新的硬盘,得亏是虚拟机)
  4. 安装OS,没有特别的

然后就是安装文档一步步下去。大部分地方都完全没有问题,有几点需要说一下。

1. 网络配置

  • VirtualBox虚拟出来的网关是10.0.2.2,不是10.0.2.1。
  • VirutalBox NAT模式下,两个虚拟机之间实际上是不通的,所以在server2上配置ntp以及nova的时候一定要使用192.168.3.1来连接server1。这一点实际上官方文档写得并不好,已经有了内部网络,为什么还要使用外部的呢?无论是从security还是从逻辑上都说不通。

server1:

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

iface eth0 inet static

address 10.0.2.14

netmask 255.255.255.0

broadcast 10.0.2.255

gateway 10.0.2.2

auto eth1

iface eth1 inet static

address 192.168.3.1

netmask 255.255.255.0

network 192.168.3.0

broadcast 192.168.3.255

server2

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

iface eth0 inet static

address 10.0.2.15

netmask 255.255.255.0

broadcast 10.0.2.255

gateway 10.0.2.2

auto eth1

iface eth1 inet static

address 192.168.3.2

netmask 255.255.255.0

network 192.168.3.0

broadcast 192.168.3.255

2. 数据库

为了不跟Oracle扯到一起,没有用MySQL,安装文档上的步骤PostgreSQL完全没有问题。

3. ntp一定要配置正确,server2需要跟server1同步

ntp我不是很懂,配好之后怎么都不同步,把ntpd停掉之后手工跑了一把ntpdate 192.168.3.1,才搞定。应该是我哪里配置的不对。

4. 重启service

诡异得很,sudo restart nova-xxx或者sudo service nova-xxx restart经常不工作,用最土的方法解决:sudo /etc/init.d/nova-xxx restart

5. server2上面需要安装PostgreSQL的python module

sudo apt-get install python-psycopg2

否则nova-compute起不来

6. 试图安装Horizon,未果

Ubuntu上有openstack-dashboard这个包,装好之后按照这里配置,还是没起来,应该是python的virtual env没有弄,不懂。

反正Horizon还在猛烈开发中,不怎么稳定,功能也有限,暂时不搞了吧。

7. 貌似server2根本不是必须的

估计就是为了nova-compute自己的分布,对于管理少量的虚拟机来说,一台机器应该足够了。

VirtualBox里面的NumLock

一直困惑我的问题,现在终于必须要解决了。

host是Mac,guest是Win,那么在guest里面shift+clear就是NumLock。简单,但是一直不知道。

今天那叫一个郁闷,让X11给整得头大

Gentoo,emerge -vuND world,结果X起不来了,现象就是鼠标、键盘完全没有反应,pypanel也出不来。

查log,发现vboxvideo内核模块找不到,于是加到autoload里面(真奇怪,这个模块是新版本的VirtualBox加的吧,原来我没加这个东西到autoload里面,也没有出错),结果还是不行,现象一样。

再查log,发现hal初始化错误:(EE) config/hal: couldn’t initialise context: (null) ((null))。于是核对xorg-server的编译选项,发现果然加入了hal。难道是hal的版本有问题?卸了重装,hal和xorg-server,还是不行。郁闷了~

再仔细一想,hald没有启动,emerge没有把这个东西自动放到default的runlevel里面。启动hald,startx,终于工作了!

还有一点要说的是,X启动之后不能只加载VBoxClient了,需要执行VBoxClient-all这个脚本,至于为什么,自己看看脚本就明白了。这个不兼容有点不爽。

顺便说一句,pypanel挺好用,但是不支持自动resise,也就调整分辨率之后它不会自动resize,有点不爽。尝试了一下hack,但是没有成功,给作者发了封信,看能不能收到回复。

VirtualBox也跟我作对

虚拟机用光盘怎么都启动不了,最后没办法,直接把光盘做成ISO。

dd if=/dev/dvd of=/tmp/xx.iso

还是Gentoo的感觉比较好

终于经不住诱惑,又虚拟了一个Gentoo,感觉就是好。想要什么就装什么,不想要就一点多余都没有,嗯,不像Ubuntu,装好之后我还要慢慢删些用不着的东西。

不过有一点还是不爽,Gentoo里面gcc4.3还是没有stable,目前还是4.1,所以不支持我的core2。耐心等等吧。

顺便仔细玩了一把VirtualBox,还是很不错的,尤其是可以不带GUI启动,然后远程管理,这样即使host机器上没有X,也可以把guest启动起来,这个做法还是相当unix的,我喜欢。VirtualBox目前还不支持Mac上面的Bridge,我只能用NAT,然后做一些port mapping从host连到guest上,至于怎么弄,VirtualBox的manual里面说的已经相当详细了,我就不废话了。

VirtualBox里面如何开关NumLock

这个问题困扰了我很久,终于下决心Google一把,当然也便有了结果。

如果guest是Windows的话,在guest里按shift+clear就可以开关了。当然,我说的是Mac。