调试OpenStack时遇到的主要问题(by quqi99)

作者:张华  发表于:2014-11-09
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

( http://blog.csdn.net/quqi99 )

        今天想debug一下nova-compute进程, 用devstack迅速安装之后, kill掉nova-compute进程,然后修改nova/cmd/__init__.py文件的“eventlet.monkey_patch(os=False)”为“eventlet.monkey_patch(all=False, socket=True, select=True)", 最后在eclipse中启动nova pydev工程的nova-compute进程。运行devstack无外乎就是想快速的搭建一个debug环境去将精力集中到想要调试的代码, 但是经常性的devstack或其他不相干的组件喜欢拖一下后腿。总结一下:

1, 执行第一次'nova boot'命令可以启动一个虚机, 但执行第二次时直接在nova-schedule那里就ERROR了, 机器配置还行,资源肯定是够的。所以调试了一番, 问题找到了, 在nova.conf文件的default段添加配置"service_down_time = 7200", 搞定。那是因为debug时间长了, nova-compute进程没有及时向DB汇报它还活着的状态, 这样nova-schedule误认为没有合适的计算节点可供调度了。

2, 在eclipse里直接运行没问题, 但只要一debug要调用nova-conductor的方法时断点就hang在那里出不来了, 日志中时不时出现”MessagingTimeout: Timed out waiting for a reply to message“, 来点绝的, 直接修改nova.conf文件,添加:

[conductor]
use_local=true

如果计算节点宕机了,但没有在nova里将这个host disable掉,在 service_down_time and report_interval setting时间内nova-schedule会误认为这个host仍然是alive的,从而出问题了。 另外也可能是olso的bug, https://bugs.launchpad.net/oslo.messaging/+bug/1338732

或者去掉RetryFilter,

scheduler_default_filters=AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter

3, 我将代码从master分支降级到icehouse后运行devstack时迁移DB的脚本报错不是说缺这个就是缺那个, 删除那个高版本的pyc文件, 搞定。

find . -name "*.pyc" -exec rm -rf {} \;

4, 在我的印象中, 运行devstack时, glance是最喜欢抽风的组件, 没空去搭理它, 那就在stack.sh里直接注释掉upload_image那行,最后再手动添加镜像了。

wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
glance image-create --name=cirros-64 --disk-format=qcow2 --container-format=bare --is-public=True --progress < cirros-0.3.2-x86_64-disk.img

5, 和os-queues-api-version相关的error, 那是因为现在marnoi更名为zaqar, 需用zaqarclient代替marconiclient, 所以: sudo pip uninstall python_marconiclient  。不然python-openstackclient会去扫描/usr/local/lib/python2.7/dist-packages目录下的所有openstack.cli.extension模块去试图加载,这样zaqarclient与marconiclient两个都加载了重复了。

PLUGIN_MODULES.extend(get_plugin_modules(
    'openstack.cli.extension',
))

它造成的后果就是安装keystone的create_keystone_accounts脚本时会报“argparse.ArgumentError: argument --os-queues-api-version: conflicting option string(s): --os-queues-api-version”从而造成数据库里没有初始数据,最终你看到的错误是:

/bak/openstack/devstack/functions-common:286:die
2014-12-23 01:38:17.229 | [ERROR] /bak/openstack/devstack/functions-common:1192 Keystone fail to get token

6, openstack-client与其他如python-neutronclient等库版本不一致的问题,可通过配置LIBS_FROM_GIT配置让python-neutronclient这些库统一走git将库安装到/usr/local/lib/python2.7/dist-packages/python_neutronclient-2.3.10.post2-py2.7.egg-info
running install_scripts, 而不是pypi

LIBS_FROM_GIT=python-neutronclient,neutron-vpnaas,neutron-fwaas,neutron-lbaas,python-keystoneclient,python-glanceclient,python-novaclient,python-cinderclient

就会造成有时候使用openstack-client命令时报如下错误 :

+++ openstack project create admin --or-show -f value -c id
2014-12-23 01:44:30.542 | ERROR: openstackclient.shell Exception raised: python-neutronclient 2.3.9.40.g9ed73c0 is installed but python-neutronclient<3,>=2.3.6 is required by []

7, oslo的那些模块也是很容易出问题的, 确保用最新的代码即可。

for olso_pro in `pip freeze |grep oslo |awk -F '==' '{print $1}'`; do
   echo 'upgrade ' $olso_pro
   sudo pip uninstall -y $olso_pro
   sudo pip install --upgrade $olso_pro
done

8, 有时候, sudo python setup.py install将data文件安装到了/var/lib/etc/neutron目录下,后面加--prefix=/ 可以将其它装到/etc/neutron目录下

9, 有时候将openstack源代码从一个机器拷到另一个机器上运行时,这一行出现错误一个如下的SSL方面的错误,需:rm -rf ../requirements/.venv/

env http_proxy= https_proxy= no_proxy= PIP_FIND_LINKS=file:///bak/openstack/.wheelhouse /bak/openstack/requirements/.venv/bin/pip install -U pbr

10, 虚机不能ping主机。检查虚机的eth0是否以非internal方式加到了ovs网络里,且路由又配置在eth0上

sudo ovs-vsctl -- --may-exist add-port br-phy eth0 -- set interface eth0 type=internal

11, 有时候keystone总是验证密码失败,用下列命令触发pdb调试知可注释./identity/backends/sql.py#authenticate()里的相关行,因为我不关心keystone让测试得以快速进行。 

curl -s -d "{\"auth\":{\"passwordCredentials\":{\"username\": \"$OS_USERNAME\", \"password\":\"$OS_PASSWORD\"}, \"tenantName\":\"$OS_TENANT_NAME\"}}" -H "Content-type:application/json" $OS_AUTH_URL/tokens | python -c"import sys; import json; tok = json.loads(sys.stdin.read()); print tok;"

12, 打开ovs的日志

#sudo ovs-appctl vlog/set console:ovsdb_error:dbg syslog:ovsdb_error:dbg file:ovsdb_error:dbg
sudo ovs-appctl vlog/set ANY:ANY:dbg
sudo ovs-appctl vlog/list

13, 将代码切换回Icehouse老版本时让unit test运行正确清理环境依赖的方法:

#virtualenv venv
#. venv/bin/activate
sudo apt-get -y install python-setuptools python-dev libxml2-dev libxslt1-dev python-pip libpython-dev zlib1g-dev build-essential -y
cd nova && sudo pip install -r requirements.txt && sudo pip install -r test-requirements.txt
cd ../requirements/ && sudo pip install global-requirements.txt && sudo pip install test-requirements.txt
find . -name "*.pyc" -exec rm -rf {} \;
sudo apt install python-setuptools
sudo pip uninstall virtualenv
sudo apt-get purge python-virtualenv
sudo pip install virtualenv
sudo pip install --upgrade distribute
nosetests -v nova.tests.virt.libvirt.test_libvirt

pep8
flake8



 





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
OpenStack是一种用于构建私有云或公有云的开源软件平台。在进行OpenStack搭建,可能会遇到以下问题: 1. 硬件要求:OpenStack需要强大的硬件支持。在进行搭建之前,需要检查您的硬件是否符合要求。 2. 安装环境:OpenStack需要在Linux操作系统上运行。在安装OpenStack之前,需要确保您的系统已经安装了必要的软件和服务。 3. 网络配置:OpenStack是网络密集型应用程序,因此正确的网络配置是至关重要的。在搭建OpenStack之前,需要规划好网络拓扑,并配置好网络设备。 4. 软件依赖:OpenStack依赖于许多不同的软件和服务。在搭建OpenStack之前,需要确保这些软件和服务已经正确安装,并且能够正常运行。 5. 安全问题OpenStack是一个非常复杂的软件平台,因此安全问题也是一个重要的考虑因素。在搭建OpenStack之前,需要确保所有的安全漏洞都已经得到了修复。 OpenStack的搭建过程可以分为以下几个步骤: 1. 安装操作系统:安装Linux操作系统,可以选择Ubuntu、CentOS等。 2. 安装OpenStack软件包:安装OpenStack软件包,可以选择使用二进制软件包、源码编译等方式。 3. 配置网络:配置网络拓扑,并设置网络设备。 4. 初始化OpenStack:使用指定的命令进行初始化操作,包括创建数据库、设置管理员账号等。 5. 配置OpenStack:根据需要进行设置和配置,包括创建虚拟机、配置存储、配置网络等。 6. 启动OpenStack:启动OpenStack服务,并检查服务是否正常运行。 在搭建过程中,可能会遇到各种各样的问题,需要根据实际情况进行解决。建议在搭建之前,先了解OpenStack的基本原理和架构,以便更好地理解和解决问题。同,可以参考OpenStack官方文档和社区论坛,获取更多的帮助和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

quqi99

你的鼓励就是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值