IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原][WIP]一些openstack bug记录(by quqi99)

    quqi99发表于 2015-05-07 16:38:16
    love 0

    作者:张华 发表于: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命令查看):


    这是因为没有设置使用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
    $ nova migrate

    $ nova confirm-resize






沪ICP备19023445号-2号
友情链接