调试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
http://blog.csdn.net/quqi99/article/details/40949799
调试OpenStack时遇到的主要问题(by quqi99)的更多相关文章
- 用pdb调试OpenStack Havana
作为个人学习笔记分享,有任何问题欢迎交流! Note:若是想要用pdb调试OpenStack,必须通过Devstack安装它. Devstack安装Havana过程 1. 使用一般用户(非root ...
- 转载(sublime text 2 调试python时结果空白)
sublime text 2 调试python时结果空白 之前用的时候都一切正常,今天突然就出现了这个问题.按ctrl+b执行的时候结果只有空白,查了很多文章都只提到了中文路径.系统路径等等,没有解决 ...
- gdb调试运行时的程序小技巧
使用gdb调试运行时的程序小技巧 标签: 未分类 gdb pstack | 发表时间:2012-10-15 04:32 | 作者:士豪 分享到: 出处:http://rdc.taobao.com/bl ...
- 关于调试WCF时引发的异常XmlException: Name cannot begin with the '<' character, hexadecimal value 0x3C” on Client Side
问题描述:在使用VS2015调试WCF时,偶遇抛出异常名称不能以“<”字符(十六进制0x3c)开头,平时运行时(不调试)没有问题的. 解决方法:检查后发现为了检查异常的位置,勾选了引发通用语言运 ...
- Eclipse调试DEBUG时快速查看某个变量的值的快捷键、快速跳转到某行的快捷键
Eclipse调试DEBUG时快速查看某个变量的值的快捷键 Ctrl + Shift + i
- LINUX下IDEA等工具调试项目时提示:Unable to open debugger port
在Ubuntu下调试项目时使用TOMCAT容器,在设置好相应的TOMCAT LOCAL 路径及相关信息后,点击调试项目出现: Unable to open debugger port : java.n ...
- 远程调试openstack
之前一直没有找到方法调试openstack的horizon代码,现在终于找到方法了,特别感谢下面这篇博客,讲解非常清晰: http://blog.csdn.net/tantexian/article/ ...
- 利用pycharm远程调试openstack代码
1.安装pycharm专业版 本文安装pycharm 2016.2.3专业版.网上教程较多,这里不做详细介绍,只要到pycharm官网上下载应用程序进行安装即可. 2.pycharm配置 (1)首先按 ...
- 解决Myeclipse在调试(debug)时无法显示变量值问题
解决Myeclipse在调试(debug)时无法显示变量值问题 突然发现myeclipse在调试时当鼠标放在变量上面时无法显示变量值了 ctrl+shift+D居然提示cannot be resolv ...
随机推荐
- 常见的.NET面试题(130)
1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成 ...
- 阻塞(sleep等等)区别 中断(interrupt)+ 中断的意义
不客气地说,至少有一半人认为,线程的"中断"就是让线程停止.如果你也这么认为,那你对多线程编程还没有入门. 在java中,线程的中断(interrupt)只是改变了线程的中断状态, ...
- <2013 07 06> "极路由" 与 “家庭服务器” 报道两则
跟我做!打造家庭服务器 很久没有更新了,因为之前托朋友帮我弄的mini PC终于到手了.阴差阳错地,原来只打算弄一台将就可用的低功耗下载机,结果到手的却是一台支持1080p(宣称,还没烧过),还带遥控 ...
- JavaSctipt语句for循环的思考
一.语法 for (语句 1; 语句 2; 语句 3) { 被执行的代码块; } 语句 1: 在循环(代码块)开始前执行, 可选. 语句 2: 定义运行循环(代码块)的条件, 可选, 如果省略了语句 ...
- PHP替换字符串-str_replace
实例 把字符串 "Hello world!" 中的字符 "world" 替换为 "Shanghai": <?php echo str_ ...
- SQL SERVER临时表的使用
SQL SERVER临时表的使用 drop table #Tmp --删除临时表#Tmpcreate table #Tmp --创建临时表#Tmp( ID int IDENTITY (1 ...
- msql 2000 使用DBCC CHECK DB 得出错误,槽引用错误
转自:http://www.cnblogs.com/firstrose/p/4256257.html 某个SQL2000的数据库,在通过备份/还原的方法升级到2005时发生错误: 查找解决方法未果 正 ...
- 005-快捷键,host,查看版本
一.系统快捷键 设置 键盘--查看 shift+ctrl +print 区域截图至剪切版 ctrl+alt+箭头 切换工作区 自定义打开终端快捷键 设置->键盘->自定义:名称: ...
- Altera自带的RAM仿真学习
(1)单口RAM 1.无读使能rden信号的ModelSim功能仿真: 在不使用读使能rden信号的情况下,单口RAM仿真结果表明: 1.写使能wren为高时,写数据操作有效: 2.写使能wren为低 ...
- Yii2 自定义独立验证器
新建一个文件: ?php /** * author : forecho <caizhenghai@gmail.com> * createTime : 2015/7/1 14:54 * de ...