OpenStack安装
Openstack Ocata版本在ubuntu 16.04上的安装配置 
版本选择
Openstack选择2017年2月发布的Ocata版本;
ubuntu系统使用Ubuntu16.04。选ubuntu是因为笔者比较习惯,16.04是因为Ocata最低支持16.04。
教程参考
教程主要参考了官网的installation Guides以及linuxg公社的这篇Ubuntu 16.04 部署 OpenStack Ocata 详解。
Linux公社的教程主要多了编辑文档后的查看指令 # grep [1] /etc/glance/glance-registry.conf 来确认修改或添加的配置。

可以利用这个指令检查一遍。
安装配置问题
笔者在安装配置中碰到的问题大多是因为配置文件写错,回头检查后修正即可。也可以在日志文件/var/log中查看具体错误。
另外碰到俩个比较麻烦的问题通过科学上网后解决。
第一个问题:su -s /bin/sh -c "nova-manage db sync" nova 命令失败
错误提示如下:(很长可以跳过)
2017-11-30 20:55:50.004 9271 INFO migrate.versioning.api [req-c1c8958c-0a2f-4131-9762-025a9c7d60b8 - - - - -] 215 -> 216... 
2017-11-30 20:55:50.036 9271 ERROR oslo_db.sqlalchemy.exc_filters [req-c1c8958c-0a2f-4131-9762-025a9c7d60b8 - - - - -] 
DBAPIError exception wrapped from (pymysql.err.InternalError) (1050, u"Table 'instances' already exists") [SQL: u"\nCREATE TABLE instances 
(\n\tcreated_at DATETIME, \n\tupdated_at DATETIME, \n\tdeleted_at DATETIME, \n\tid INTEGER NOT NULL AUTO_INCREMENT, \n\tinternal_id INTEGER, \n\tuser_id VARCHAR(255), \n\tproject_id VARCHAR(255), \n\timage_ref VARCHAR(255), \n\tkernel_id VARCHAR(255), \n\tramdisk_id VARCHAR(255), \n\tlaunch_index INTEGER, \n\tkey_name VARCHAR(255), \n\tkey_data MEDIUMTEXT, \n\tpower_state INTEGER, \n\tvm_state VARCHAR(255), \n\tmemory_mb INTEGER, \n\tvcpus INTEGER, \n\thostname VARCHAR(255), \n\thost VARCHAR(255), \n\tuser_data MEDIUMTEXT, \n\treservation_id VARCHAR(255), \n\tscheduled_at DATETIME, \n\tlaunched_at DATETIME, \n\tterminated_at DATETIME, \n\tdisplay_name VARCHAR(255), \n\tdisplay_description VARCHAR(255), \n\tavailability_zone VARCHAR(255), \n\tlocked BOOL, \n\tos_type VARCHAR(255), \n\tlaunched_on MEDIUMTEXT, \n\tinstance_type_id INTEGER, \n\tvm_mode VARCHAR(255), \n\tuuid VARCHAR(36), \n\tarchitecture VARCHAR(255), \n\troot_device_name VARCHAR(255), \n\taccess_ip_v4 VARCHAR(39), \n\taccess_ip_v6 VARCHAR(39), \n\tconfig_drive VARCHAR(255), \n\ttask_state VARCHAR(255), \n\tdefault_ephemeral_device VARCHAR(255), \n\tdefault_swap_device VARCHAR(255), \n\tprogress INTEGER, \n\tauto_disk_config BOOL, \n\tshutdown_terminate BOOL, \n\tdisable_terminate BOOL, \n\troot_gb INTEGER, \n\tephemeral_gb INTEGER, \n\tcell_name VARCHAR(255), \n\tnode VARCHAR(255), \n\tdeleted INTEGER, \n\tlocked_by ENUM('owner','admin'), \n\tcleaned INTEGER, \n\tPRIMARY KEY (id), \n\tCHECK (locked IN (0, 1)), \n\tCHECK (auto_disk_config IN (0, 1)), \n\tCHECK (shutdown_terminate IN (0, 1)), \n\tCHECK (disable_terminate IN (0, 1))\n)ENGINE=InnoDB CHARSET=utf8\n\n"]
根据DBAPIError exception wrapped from (pymysql.err.InternalError) (1050, u"Table 'instances' already exists")	google了一下。根据这个提问下面的回答找到答案了。
我认为可能是因为之前执行这条指令的时候已经创建了'instance'这个table,但是之前因为配置文件写错报错所以失败。再次执行的时候就报错已经存在这个table.
解决方法:
重新创建nova数据库,并从# su -s /bin/sh -c "nova-manage api_db sync" nova开始重新执行。 
重新创建数据库的时候记得设置权限。
第二个问题:dashboard登陆失败
具体的错误是登陆后界面提示:Something went wrong!!,而不是404之类的错误。
PS:如果出现404,500这类的错误(HTTP状态码)应该是配置文件问题。
Dashborad的错误日志在/var/apache2/error.log中,在最后一行找到问题:
Truncated or oversized response headers received from daemon process 'horizon': /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi  
同样是通过科学上网找到这个提问,按照下面的操作解决了问题。
解决方法:
注释掉:SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
总结
这次只装了Identity,Image,Compute,Networking Service和Dashboard,也只是按照官方的文档一个个命令敲进去,很多命令的意思和作用还不了解。以后有机会补上。以及其他可选组件的安装配置问题。
- a-z ↩︎ 
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号