![Openstack Neutron 稳定性问题](https://linux22.com/image/629751/Openstack%20Neutron%20%E7%A8%B3%E5%AE%9A%E6%80%A7%E9%97%AE%E9%A2%98.png)
我有一个相当简单的 Openstack 设置用于 PoC。2 个节点,都运行 Nova,其他所有节点都在节点 1 上。它运行的是 CentOS 6,并使用 RDO 进行设置。重要的是,我使用 Neutron 进行联网,并使用 GRE 租户网络从现有网络的 RDO 文档。
我会定期(我估计每隔几天)失去与 Openvswitch 的所有通信(因此我的实例也会丢失)。我知道这是 OVS 的问题,因为我可以通过 SSH 进入节点 2,然后通过其专用网络连接到节点 1。我在日志中看到的最有说服力的内容是:
unix:/var/run/openvswitch/db.sock: database connection failed (Protocol error)
此外,OVS 使用了大量 CPU(在我的 16 核机器上占了 800%),当我尝试干净地关机时,它永远不会发生,因为它无法杀死 ovsdb-server。
我谷歌了一下,发现一些基于旧 Openstack 版本的旧建议,其中人们遇到 OVS/内核版本不匹配的情况。由于我运行的是 RDO 版本,我认为可以忽略这一点(除非 Red Hat 犯了重大错误)。
还有人见过这个吗?有什么建议吗?
附言:不要告诉我重新编译 Openvswitch,由于各种原因,这在近期不会发生。
答案1
您使用的是哪个版本的 OpenStack、哪个版本的 RDO repo?我只是根据这么少的细节进行猜测,但您指出 OpenvSwitch 和内核存在某种问题,即 OVS 进程失控。可能与数据库或消息代理有关。
检查您的 qpid 日志:/var/log/messages,查找在实例通信丢失时显示断开连接原因的内容。这可以揭示消息传递断开连接的原因以及是否由消息传递连接失败(外部/第三原因)引起;或者反过来,由 OVS 断开连接引起(可能是 OVS/内核构建问题)。
由于 RDO 是“在 RHEL 6.4 上测试的”,因此我将使用最低版本的 CentOS 6.4,而不是您所说的 6。最好使用 6.5,因为内核中包含许多组件,而不是使用 RDO 进行修补。
如果没有日志和配置详细信息,则很难为您进行额外的故障排除,但在您评估了这一点之后,可以说,存在已知的 Neutron 配置挑战需要通过 GRE 和 MTU 设置来克服。
无论如何,要成功构建 OpenStack(无论多么基础,它都很复杂),您需要从受支持且最新的操作系统、内核和 OVS 构建开始。您如何确定可以忽略“OVS/内核版本不匹配”,您使用的是哪个版本?
我建议您使用最新的 CentOS 6.5 和 RDO 进行配置,然后如果问题仍然存在,请在 RDO 论坛上重新发布(包含更新的详细信息、日志文件等):http://openstack.redhat.com/forum/这样你就会得到你可能需要的发行版的具体细节。
编辑:通过这些文章检查 dhcp.ini 和 dnsmask 配置中的 MTU 设置,显然 1454 对于运行 GRE 的客户实例来说应该是合适的: http://bderzhavets.blogspot.com.au/2014/01/setting-up-two-physical-node-openstack.html https://ask.openstack.org/en/question/12499/forcing-mtu-to-1400-via-etcneutrondnsmasq-neutronconf-per-daniels/
不要忘记,根据您的内核和 OVS 版本,MTU 和 GRE 可能仍然存在问题,因此请告知您拥有的版本并更新您的帖子,这样您就可以帮助其他有类似问题的人,在两个节点上显示结果:
uname -a
rpm -qpi | grep openvswitch
另外,在进行大型 20G 传输时,请查看您的 OVS GRE 流并在相关的 qrouter 命名空间中运行一些 tcpdump,RDO 的这个指南会有所帮助,请在 60 分钟后查看 Joe Talerico 在双节点上进行出色的 GRE 调试的解释: http://www.youtube.com/watch?v=wEa_8ESxPAY&feature=share&t=1h20s
最后,您还需要检查您是否受到通用接收卸载配置的影响,如帖子#24 中所述:https://bugs.launchpad.net/neutron/+bug/1252900