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