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"
CREATE TABLE instances 
(
	created_at DATETIME, 
	updated_at DATETIME, 
	deleted_at DATETIME, 
	id INTEGER NOT NULL AUTO_INCREMENT, 
	internal_id INTEGER, 
	user_id VARCHAR(255), 
	project_id VARCHAR(255), 
	image_ref VARCHAR(255), 
	kernel_id VARCHAR(255), 
	ramdisk_id VARCHAR(255), 
	launch_index INTEGER, 
	key_name VARCHAR(255), 
	key_data MEDIUMTEXT, 
	power_state INTEGER, 
	vm_state VARCHAR(255), 
	memory_mb INTEGER, 
	vcpus INTEGER, 
	hostname VARCHAR(255), 
	host VARCHAR(255), 
	user_data MEDIUMTEXT, 
	reservation_id VARCHAR(255), 
	scheduled_at DATETIME, 
	launched_at DATETIME, 
	terminated_at DATETIME, 
	display_name VARCHAR(255), 
	display_description VARCHAR(255), 
	availability_zone VARCHAR(255), 
	locked BOOL, 
	os_type VARCHAR(255), 
	launched_on MEDIUMTEXT, 
	instance_type_id INTEGER, 
	vm_mode VARCHAR(255), 
	uuid VARCHAR(36), 
	architecture VARCHAR(255), 
	root_device_name VARCHAR(255), 
	access_ip_v4 VARCHAR(39), 
	access_ip_v6 VARCHAR(39), 
	config_drive VARCHAR(255), 
	task_state VARCHAR(255), 
	default_ephemeral_device VARCHAR(255), 
	default_swap_device VARCHAR(255), 
	progress INTEGER, 
	auto_disk_config BOOL, 
	shutdown_terminate BOOL, 
	disable_terminate BOOL, 
	root_gb INTEGER, 
	ephemeral_gb INTEGER, 
	cell_name VARCHAR(255), 
	node VARCHAR(255), 
	deleted INTEGER, 
	locked_by ENUM('owner','admin'), 
	cleaned INTEGER, 
	PRIMARY KEY (id), 
	CHECK (locked IN (0, 1)), 
	CHECK (auto_disk_config IN (0, 1)), 
	CHECK (shutdown_terminate IN (0, 1)), 
	CHECK (disable_terminate IN (0, 1))
)ENGINE=InnoDB CHARSET=utf8

"]

根据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,也只是按照官方的文档一个个命令敲进去,很多命令的意思和作用还不了解。以后有机会补上。以及其他可选组件的安装配置问题。


  1. a-z ↩︎

原文地址:https://www.cnblogs.com/sunminming/p/7994596.html