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)