Fedora 16上源码建立PyDev + Eclipse的OpenStack开发环境(5)

5.3配置dashboard
mv /bak/openstack/horizon/openstack_dashboard/local /bak/openstack/horizon/openstack_dashboard/local/local_settings.py

vi/bak/openstack/horizon/openstack_dashboard/local/local_settings.py

DATABASES= {

'default':{

'ENGINE':'django.db.backends.mysql',

'NAME':'dash',

'USER':'root',

'PASSWORD':'password',

'HOST':'localhost',

'default-character-set':'utf8',

},

}


vi/bak/openstack/horizon/manage.py

#!/usr/bin/envPython

fromdjango.core.management import execute_manager

importos, sys

ROOT_PATH= os.path.dirname(os.path.abspath(__file__))

ifROOT_PATH not in sys.path:

sys.path.insert(0,ROOT_PATH)

importopenstack_dashboard.settings

if__name__ == "__main__":

execute_manager(openstack_dashboard.settings)

1)创建dashboard数据库

sudomysql-uroot-ppassword-e'createdatabasedash';

sudomysql-uroot-ppassword-e"grantallon*.*toroot@'%'identifiedby'password'"

setPYTHONPATH=/bak/openstack/glance:/bak/openstack/keystone

cd/bak/openstack/horizon/

pythonmanage.pysyncdb

配置它工程依赖glance,keystone

将它自身的顶级目录openstack_dashboard加入到PYTHONPATH

启动,cd/bak/openstack/horizon

pythonmanage.py runserver ,用它启动horion时,就可以不需要启动apache

2012-04.05添加:

上述配置是可以正常启动实例的,但是实例没有IP,那是因为忘了建立虚拟网络,命令如下:

nova-manage network create public 10.10.10.0/24 1 256

其他测试用到的命令如下:删除虚拟网络:nova-manage network delete 10.10.10.0/24
启动实例:nova boot --image 5213ac41-a588-419f-9b50-c86217433df9 --flavor 1 --nic net-id=99b1d65e-34ae-4658-8387-ce9724 myserver8

删除实例:nova delete myserver8

给实例加硬盘:nova volume-create --display_name volhua1 1(1代表1G)

删除硬盘:nova volume-attach myserver8 2 /dev/vdb

另外,测试了一下分布式部署,基本上和上面是一样的,注意以下几点就行了:

1)之前单机部署时控制节点的/etc/nova/nova.conf中使用的localhost可以不用动。因为本来mysql, activemq, glance都是安装在控制节点上。

2)但是控制节点 glance/etc/default_catalog.tempates中的IP需要从localhost变为实际IP

3)在计算节点上的/etc/nova/nova.conf中的IP相应改对,如mysql, activemq, glance的IP

4)计算节点仅仅只需要启动一个nova-compute即可工作。但是nova-compute运行时需要通过nova-client, keystone-client, glance-client去调用相应的服务。但是glance为client弄一个工程,所以在计算节点也得像上文中的方法安装nova-client, keystone-client, glance三个依赖工程

另外,如果在eclipse中无法调试nova工程的话,那是因为nova中使用了一个叫做eventlet的python协程库(大家知道的nginx是Java里的一个非阻塞I/O库),所谓协程,是一个比线程更小的单位,协程运行在用户空间,所以操作系统无法感知它,所以它需要程序员自己去调度协程,这样用于执行协作式多任务效率比只用线程的更高。eventlet中有一个叫monkey patch的东东,它用来在运行时对己有的代码进行修改,达到hot patch的目的。eventlet使用该技巧用来替换一些python的标准的库,比如说socket。就是因为这个东东把一些标准库给替换成它自己的库然后与pydev插件冲突,所以造成无法在eclipse中调试程序。比如说现在想调试bin/nova-network,那样可以修改bin/nova-network脚本,将evenlet.monkye_patch()替换成:

eventlet.monkey_patch(all=False,socket=True,select=True)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/83fc23f89b2e75a87f98e13602a6fdff.html