WIP一些openstack bug记录(by quqi99)

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

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

一,为什么虚机ping不通虚拟所在的tap设

一种可能是虚机的MAC地址和其他的重复了,可使用arp命令查看。
第二种可能就是ebtables, 可使用ebtables -t nat -L命令检查。
# ebtables -t nat -L
Bridge table: nat
Bridge chain: PREROUTING, entries: 1, policy: ACCEPT
-i tapc8f2fe4d-7f -j libvirt-I-tapc8f2fe4d-7f
Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
Bridge chain: POSTROUTING, entries: 1, policy: ACCEPT
-o tapc8f2fe4d-7f -j libvirt-O-tapc8f2fe4d-7f
Bridge chain: libvirt-I-tapc8f2fe4d-7f, entries: 1, policy: ACCEPT
-j DROP
Bridge chain: libvirt-O-tapc8f2fe4d-7f, entries: 1, policy: ACCEPT
-j DROP
显然上述的ebtables是由下列的libvirt配置($nova/virt/libvirt/firewall.py)所加(位于/etc/libvirt/nwfilter/目录, 可用virsh nwfilter-list命令查看):
<filterref filter='nova-instance-instance-00000010-fa163ea2e6b8'/>


这是因为没有设置使用neutron security group, 也没有禁止nova security group(在nova.conf中设置firewall_driver = nova.virt.firewall.NoopFirewallDriver), 

这样nova用了默认的iptable firewall driver,而这个驱动刚好又很弱,它使用了libvirt nwfilter做了上面的事情,还因为弱没法做到想用nova security group的功能的同时又禁用掉nwfilter, 见[1], [2].


[1], https://answers.launchpad.net/nova/+question/156184
[2], https://answers.launchpad.net/nova/+question/234365



二,在Icehouse版本上nova evaluate失败后将虚机硬件给删除了
1, 首先是这个bug, nova evaluate时应该设置recreate=true让它不要删除老的虚机,这个patch进入了Icehouse后一些的版本。
   https://git.openstack.org/cgit/openstack/nova/commit/?id=3de3f1066fa47312b8c3075abf790631034d67a3
2, 使用nova evaluate迁移到另外一个host时没有更新binding:host_id从而导致虚机的port无法建立抛 VirtualInterfaceCreateException然后把虚机给删除了。使用vif_plugging_is_fatal = false && vif_plugging_timeout = 10 作为workaround
   https://answers.launchpad.net/ubuntu/+source/nova/+question/257358
3, 对于上面在nova evaluate下的port binding问题仍然无法解决(虽然有patch, https://review.openstack.org/#/c/169827/ , 但不容易backport到icehouose),但可以使用nova migration作为workaround,因为nova migration会最终调用migrate_instance_finish去更新port binding (port_req_body = {'port': {'binding:host_id': migration['dest_compute']}}).
$ nova evacuate --on-shared-storage <instance> <target_host>
$ nova migrate <instance>
$ nova confirm-resize <instance>

更多相关文章
  • 容器是数据中心创新领域最热门的潮流,尽管不是参与讨论的每个人都能准确地阐明具体原因.如果你想知道容器是不是适合自己的数据中心战略,或者如果你知道容器适合数据中心战略,但需要有法子向同行解释容器,那么这篇指南正适合你. 从最基本的层面上来讲,容器让你可以将更多的计算工作负载塞入到单单一台服务器上,并且 ...
  • 首先分享一个最佳实践: 大家开发复杂一些的Android应用的时候常常会写一个BaseActivity或者BaseFragment,里面写上一些基本而公用的方法,比如监听网络状况.弹出对话框.设置actionbar等,然后实现业务的Activity或者Fragment继承自这个基类.这样子可以大幅度 ...
  • 有时候我们会突然发现自己的项目正在走向注定的死亡.下面这些迹象可以让你提早发现项目失败的趋势. 在数月内三次更改项目名称. 项目经理决定,与其写一个国际化的单一版本还不如针对某个国家写一个完全独立的版本. 需求定义发布于开发工作开展 4 个月后. 新聘请的R&D主管纸上谈兵地表示,该项目将比 ...
  • http://edu.51cto.com/course/course_id-379-page-1.html http://edu.51cto.com/course/course_id-379-page-2.html 课时目录 共13课时 1第一章 Linux设备驱动模型[可试看]60分钟 1.1 L ...
  • 点击查看:MWC2014专题报道 易网科技讯 2月24日消息,诺基亚CEO埃洛普在MWC上发布了两款功能机Nokia 220及 Asha 230,Nokia 220支持2G网络,待机长达一个月,售价仅为243元,埃洛普称其为"史上最便宜的上网手机".而搭载新版Asha平台的触屏机 ...
  • 1.队列的链表表示 #include "LinkList.h"   template<class T> class LinkQueue { private: LinkList<T> m_pList; public: void EnQue(T val){m_ ...
一周排行
  • 转自 : https://docs.djangoproject.com/en/1.8/topics/auth/customizing/
  • 除了电视,LG 又给 webOS 找到了新的续命姿势.根据曾经深度爆料 LG webOS 电视幕后的 TheVerge 报道,LG 正在筹备一款运行 webOS 系统的智能手表并为其提供有开发 SDK. 当前,LG ...
  • 本文介绍c++里面的四个只能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被c++11弃用.   为什么要使用智能指针:我们知 ...
  • 2014年Spark亚太峰会,于2014年12月6号,在北京珠三角万豪酒店(宣武门店)举行,我当时在一家软件科技公司任职,我以这家公司的软件工程师的名义,参加了这次峰会.各个行业前沿的精英和技术大牛们,分享了他们关于 ...
  • PowerShell 是一种新的命令行外壳和脚本语言,用于进行系统管理和自动化.Windows PowerShell 建立在 .NET Framework 的基础上,可使 IT 专业人员和开发人员控制和自动完成 Wi ...
  • write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 C语言中没有标准的容器,所以为了跨平台,Orx中自己实现了一套. 在Orx中作者分别实现了Hash ...
  • linux高可用集群的种类很多,比如常见的heartbeat,corosync,rhcs,keepalived,这些集群软件的出现为我们的业务生产环境提供了高可用的保证,本文将简单介绍一下用heartbeat的v2版 ...
  • 协议(protocol)是Objective-c中一个非常重要的语言特性,从概念上讲,非常类似于JAVA中接口. 一个协议其实就是一系列有关联的方法的集合(为方便后面叙述,我们把这个协议命名为myProtocol). ...
  • 从WEB 2.0到GAME 2.0   文/花纯春 http://blog.csdn.net/metababy   盛大宣布了全新的Game2.0游戏平台<零世界>(world Zero)之后,各大网游企 ...
  •    在项目中查询时间段的sql语句(时间类型为datetime或date): <if test="pojo.begintime!=null and pojo.begintime!=''"& ...