我的配置:
1.Cloud controller(云计算控制器)
ip:192.168.1.105

2.Compute node(计算节点)
ip:192.168.1.104

在写此文前,我参考过openstack的文档,但此文档跟devstack方式安装有差异,不必去遵循太多,毕竟人家是针对apt-get方式安装的。安装需要注意的两件事情:
1.尽量不要通过代理服务器上网安装。会产生很多奇怪的问题。我按照文档用过很多方式解决,都失败了。因为时间问题,我也不想继续探索过多,此问题由技术控去考虑吧。
列举一个问题:
NO JSON Object decode.
此问题是连接keystone时,因为外在proxy存在,导致在通过外在的proxy解析ip,造成超时退出的。

2.保证目录权限:
/opt/stack , /etc/nova, /var/log/nova 的用户组和用户均是stack。如果出现莫名其妙的问题,请先确保这些目录权限是对的。
列举一个问题:
please re-run nova-manage db sync
出现此问题的权限多半是因为目录权限造成。/var/log/nova 是/etc/nova/nova.conf 中打开debug信息时需要的:
logdir=/var/log/nova

此选项在debug时很重要,可以在stack.sh中加入( dev版本的默认是关闭debug的 )。出了问题可以到 /var/log/nova 中查问题。

因此,碰到奇怪的安装问题时,大可以执行以下三条命令:
sudo chown stack:stack /opt -R
sudo chown stack:stack /etc/nova -R
sudo chown stack:stack /var/log/nova -R

1.云控制器的安装(为了减少问题,我们可以都用sudo来完成工作,当然用root也是可以的。)(安装时,我的密码都是用nova,包括计算节点)

sudo apt-get install git
sudo git clone git://github.com/openstack-dev/devstack.git
cd devstack/
sudo ./stack.sh 

安装好后,在浏览器中可以创建vm虚拟机即可认为正常。不必做更多的工作,越做越错的。:-) 我的版本是:
# nova-manage version list
2012.1-dev (2012.1-LOCALBRANCH:LOCALREVISION)

2.计算节点的安装:
sudo apt-get install git
sudo git clone git://github.com/openstack-dev/devstack.git

cd devstack/

修改stack.sh内容。其实云控制器和计算节点的主要差别就在nova.conf上的。当然启动的服务稍有差别。
云控制器的类似如下:
[DEFAULT]
verbose=True
auth_strategy=keystone
allow_resize_to_same_host=True
compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler
logdir=/var/log/nova
dhcpbridge_flagfile=/etc/nova/nova.conf
fixed_range=10.0.0.0/24
s3_host=192.168.1.105
network_manager=nova.network.manager.FlatDHCPManager
volume_group=nova-volumes
volume_name_template=volume-%08x
iscsi_helper=tgtadm
osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions
my_ip=192.168.1.105
public_interface=br100
vlan_interface=eth0
flat_network_bridge=br100
flat_interface=eth0
sql_connection=mysql://root:nova@localhost/nova
libvirt_type=qemu
instance_name_template=instance-%08x
novncproxy_base_url=http://192.168.1.105:6080/vnc_auto.html
xvpvncproxy_base_url=http://192.168.1.105:6081/console
vncserver_listen=127.0.0.1
vncserver_proxyclient_address=127.0.0.1

api_paste_config=/etc/nova/api-paste.ini
image_service=nova.image.glance.GlanceImageService
ec2_dmz_host=192.168.1.105
rabbit_host=localhost
rabbit_password=nova
glance_api_servers=192.168.1.105:9292
force_dhcp_release=True
connection_type=libvirt
firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver

我们要在stack安装的时候,产生对应的nova.conf 。进入stack.sh中,找到:
ENABLED_SERVICES=${ENABLED_SERVICES:-g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,mysql,rabbit}

改成:
ENABLED_SERVICES=${ENABLED_SERVICES:-g-api,g-reg,key,n-api,n-obj,n-cpu,n-novnc,n-xvnc}

我不知道是不是还可以精简更多,但是这个肯定是可以用的了。然后要改的是生成nova.conf的字段。查找nova.conf,找到对应的字段,让它生成nova.conf的以下字段指向云控制器的ip。也就是以上标红的字段:

s3_host=192.168.1.105
sql_connection=mysql://root:nova@192.168.1.105/nova
ec2_dmz_host=192.168.1.105
rabbit_host=192.168.1.105
glance_api_servers=192.168.1.105:9292

改好这些后,执行
sudo ./stack.sh

安装成功后,检查一下nova.conf, 没错的话,可以执行:
nova-manage service list 
Binary           Host                                 Zone             Status     State Updated_At
nova-compute     Latitude-E6410                 nova             enabled    :-)   2012-03-10 13:31:33
nova-cert        Latitude-E6410                 nova             enabled    :-)   2012-03-10 13:31:40
nova-volume      Latitude-E6410                 nova             enabled    :-)   2012-03-10 13:31:33
nova-network     Latitude-E6410                 nova             enabled    :-)   2012-03-10 13:31:33
nova-scheduler   Latitude-E6410                 nova             enabled    :-)   2012-03-10 13:31:34
nova-consoleauth Latitude-E6410                 nova             enabled    :-)   2012-03-10 13:31:40
nova-compute     txt-4                            nova             enabled    :-)   2012-03-10 13:31:35

或者
nova-manage host list
Latitude-E6410      nova
txt-4         nova

看到这些,基本上大功告成了。你可以在dashboard的网页上创建vm了。一般而言,都会在计算节点上创建vm的。