用devstack安装openstack出错了,求助

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用devstack安装openstack出错了,求助相关的知识,希望对你有一定的参考价值。

参考技术A 1、git clone
git://github.com/openstack-dev/devstack.git

2、cd devstack; ./stack.sh

但devstack貌似如果安装的姿势不对,各种坑爹的bug。
首先讲一下我成功部署的环境:
win7 64 bit里开VMware虚拟机,安装Ubuntu 12.04 32 bit
Desktop。
如果Ubuntu是32bit的,那么运行stack.sh之前,需要修改stackrc Line 115-116中,两处的cirros-0.3.0-x86_64-uec都改成cirros-0.3.0-i386-uec,或者全局替换所有的也没关系。原因就是本文后面的“注意点 1”所讲的,让openstack加载的demo image是32bit的,而不是64bit的。若这个文件下载出错,也可以手动进入http://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-i386-uec.tar.gz,下载后的文件放在/opt/stack/devstack/files下面,再次运行stack.sh。
第一次运行stack.sh时,会指示输入一连串密码。以后再运行stack.sh,就不会要求输入密码了,因为第一次输入的密码已经被保存在localrc中了,再次运行时将默认使用该密码。(11.10里有bug,不会在home里的devstack下生成localrc,但是/opt/stack/devstack下还是会有localrc。)
openstack需要在stack用户下配置和运行,因此stack.sh运行一开始,就会给系统创建名为stack的用户。这个用户的主目录在/opt/stack/,而不是一般的/home/stack。以后如果要用命令行配置openstack,一般都要进入stack用户身份。
运行成功之后,如图显示:

可以用浏览器登录所指示的ip,如图中的10.214.24.146,默认用户名是admin和demo,密码是一开始自己设置的。所登录的管理界面是openstack的dashboard,是一个Django程序。

可以用已经存在的demo image创建一个虚拟机实例。创建后要稍等片刻,等到实例的状态显示“Active”后,才能通过VNC控制台进入虚拟机。貌似直接显示的VNC无法输入命令,需要点击上方蓝色提示框的“Click here to show only VNC”,之后才能正常输入用户名密码登录,如图:

用默认的用户名cirros、密码cubswin:)登录成功之后,就可以操控该虚拟机实例了:

部署的注意点:
1、上述环境中的stack.sh运行后会有一个bug,就是清除了DNS配置文件/etc/resolv.conf的内容,里面所有nameserver项都没有了,所以运行前可以先备份一下,或者运行后再修改,都是可以的。
2、VMware所在的环境(即这里的Win 7)应该关系不大,但是安装的Ubuntu是32bit还是64bit对后面使用openstack加载镜像时是很有关系的,因此最好慎重选择。
简单来说,就是如果openstack所在的操作系统环境是32bit的,那么就openstack里所虚拟的操作系统image就只能是32bit的,反之就只能是64bit的。
如图所示,在32bit的Ubuntu上运行的openstack如果试图部署64bit的image所生成的实例,在boot时会失败,并提示如下:

3、最新版devstack貌似在ubuntu 11.10上有bug。
部署失败的环境:我一开始是用
独立系统32bit Ubuntu 11.10 Desktop,git最新的devstack,
结果貌似最新版devstack还不太稳定,会出现奇怪的bug:stack.sh在部署好openstack组件组件之后,有一步是安装一个仅为6M的小image(stack.sh里叫做Install Images),用来做demo用的,但是在运行到
TOKEN=$(keystone token-get | grep ‘ id ‘ | get_field2)
这句时,TOKEN获得的内容为空,导致后面用glance创建三个image时所使用的TOKEN不正确,因此无法创建,stack.sh中断运行。不过虽然有这个BUG,但貌似openstack还是装好了,只是demo没有弄好。
4、运行stack.sh时,网络环境一定要好。
如果选的软件源速度太慢,或者网络环境本身太差(=_=比如ZJU曹光彪主楼的烂网,强烈建议用有线+30米以上VPN),运行stack.sh下载不到依赖软件时会终止运行。万一终止运行时,可以再重新跑一遍,反正已经下载和安装的依赖软件它不会重复搞的。如果重复多次还是遇到“无法获取”或者“校验码错误”的问题,那么建议更换更快的网络环境或软件源。
12.04的163的软件源貌似比较慢,我用ubuntu自动选择软件源的方式,测试出来貌似ZJU这里cn99的速度最快。
5、运行stack.sh失败后,重新运行前要先killall screen; killall python

声明:
本博客欢迎转发,但请保留原作者信息!
博客地址:http://blog.csdn.net/halcyonbaby
内容系本人学习、研究和总结,如有雷同,实属荣幸!

安装运行create-stack-user.sh脚本时,当前目录不要是devstack
安装时如果提示pbr版本不对
运行pip install --upgrade pbr, pip install --upgrade setuptools
安装时提示下载超时,可以使用pip install --upgrade安装失败的包
安装时提示提示mysql没权限执行下列命令:
service mysqld stop
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
mysql -u root mysql
UPDATE user SET Password=PASSWORD() where USER='root';
FLUSH PRIVILEGES;
quit
service mysqld stop
devstack默认卷容量比较小(10G),安装时可以调整(stack用户下导入该环境变量)
export VOLUME_BACKING_FILE_SIZE=102500M
安装openstack需要访问pypi网站,超时失败的话
可以运行./unstack.sh, ./stack.sh解决
系统重启后,需要运行rejoin.sh,运行前需要重新恢复卷组
losetup -f /opt/stack/data/stack-volumes-backing-file
安装完成后发现卷容量较小,可以使用如下方法调整
devstack安装默认lvm后端容量为10G。
后续可以通过以下方式修改:
qemu-img create -f raw 100G
losetup -f
pvcreate
vgextend
注:vg_name可以通过vgdisplay显示。
安装时pip显示”No module named pkg resources“错误
$ wget http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py
详细参考http://stackoverflow.com/questions/7110360/easy-install-and-pip-doesnt-work
启动虚拟机失败,错误“some rules could not be created for interface vnet0”
原因:
关闭防火墙后没有重新启动libvirtd
解决办法:
重新启动libvirtd
控制节点意外掉电后重启,mysql启动失败,同时导致neutron-server无法启动
rm -rf /var/lib/mysql/mysql.sock然后重启节点
出现错误:failed to create /opt/stack/horizon/openstack_dashboard/local/
解决:执行setenforce 0
关闭devstack的所有screen
解决:screen -wipe

devstack学习和使用总结

我是从2016年8月22日开始接触openstack概念,开始寻找部署openstack的工具,到现在刚好过去了2个月。其间,我用到了Mirantis 公司的fuel,初步研究了正式版的openstack,然而最多的经历还是花在了devstack上。

我个人的理解,devstack是一款使用screen 模式运行openstack各个基本模块的自动化安装部署工具软件。它可以把openstack集成安装在一台机器或者虚拟机上,在安装前使用一个local.conf配置文件,在安装中运行一个全自动化的高级脚本,在安装后可以使用其进行openstack调试和小型试验。

那这篇博客也按照安装前,安装时和安装后来说吧。

1. 安装前:

我测试了ubuntu 14.04 LTS和16.04 LTS,两个版本都可以成功安装devstack,我是在裸机上试验。安装前首先需要git下来devstack的各种文件,参考 http://devstack.org. git到官网文件夹后,需要创建并配置一个叫local.conf的文件,在这个文件中,我测试过的就是指定 Host IP, 指定使用哪种网络,指定floating ip范围等等。下面贴上经测试可用的配置例子:

+++++++++++++++++++++++

[[local|localrc]]
DATABASE_PASSWORD=pass
ADMIN_PASSWORD=pass
SERVICE_PASSWORD=pass
SERVICE_TOKEN=pass
RABBIT_PASSWORD=pass

HOST_IP=134.124.108.112
SERVICE_HOST=134.124.108.112
MYSQL_HOST=134.124.108.112
RABBIT_HOST=134.124.108.112
GLANCE_HOSTPORT=134.124.108.112:9292

disable_service n-net
ENABLED_SERVICES+=,q-svc,q-dhcp,q-meta,q-agt,q-13

## Neutron options
Q_USE_SECGROUP=True
FLOATING_RANGE="134.124.108.0/24"
FIXED_RANGE="10.0.0.0/24"
Q_FLOATING_ALLOCATION_POOL=start=134.124.108.120,end=134.124.108.130
PUBLIC_NETWORK_GATEWAY="134.124.108.1"
PUBLIC_INTERFACE=eno1

Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex

++++++++++++++++++++++++++

(说明:hostIP就是安装devstack电脑的IP地址;floatingIP是跟主机同一网段的ip地址,目的是为了外网电脑可以与openstack内网VMs通信;fixedRange 是openstack内网的ip地址;publicBridge是电脑与外网通信的网卡,由于devstack会自动把网卡配置成桥接模式,所以此处使用此网卡)

 

2. 安装中:

配置好后,运行stack.sh,开始自动安装过程。值得一提的是,这个安装过程可能会出现各种意想不到的bug,导致中途停止,即使你完成了百分之90,也会前功尽弃,而且有时原因不得而知。举个例子,同样的配置,同样的电脑,可能今天和明天运行同样的命令,会失败和成功。所以,推荐多尝试安装。每次尝试安装前要运行unstack.sh和重启电脑。遇到实在无法成功,就重新装一遍操作系统。

 

3.安装后:

安装成功后,根据提示可以用浏览器打开openstack的UI操作界面,可以在UI上完成各种控制和功能,运行虚拟机等等。

需要注意的是,正确的安装应该电脑的网卡和新生成的br-ex网卡具有相同的IP地址。我在安装的时候曾经出现电脑的物理网卡在安装后ip地址没有,只有br-ex有ip,这种情况的后果就是在安装后的某个较短时间内,电脑与外网会断掉,从而导致电脑上不了网,更别提openstack里的VMs。 分析我的失败原因,可能是因为我的主机ip是134.124.108.255,虽然所处网络的掩码是255.255.254.0,所以这是一个可用的ip而不是一个广播ip,但是devstack安装程序可能不这么认为,导致了配置的失败。所以正常的ip应该没问题。

如果生成的网络配置没有问题的话,我们就可以接下来控制openstack,可以用UI也可以用CLI(http://docs.openstack.org/cli-reference/common/cli-overview.html)。创建VM后,赋予floating ip后,理论上来说就应该是实现VM与外网电脑的相互通信。

注意:安装后的电脑不能重启,否则会丢失网络桥接的那些配置,导致网络出问题,无法连接外网。我将其归结为devstack的缺陷。

 

总结:总觉得可能要开始部署真正的openstack,用上三四台机器。这一天总要到来,加油

以上是关于用devstack安装openstack出错了,求助的主要内容,如果未能解决你的问题,请参考以下文章

OpenStack —— DevStack一键自动化安装

devstack学习和使用总结

使用Devstack安装单点Openstack

如何体验OpenStack Newton

devstack安装openstack newton版本

sexi部署openstack (devstack) 一