命名的 veth 对

日期:

2015-08-31 22:00

标签:

lxc, veth, 故障排除

本规范旨在通过使用容器名称构建 veth 接口的名称,使 OpenStack-Ansible 问题的故障排除过程更加高效。

链接到蓝图

问题描述

主机上的所有 veth 接口都使用随机生成的名称命名,例如 vethK070G4。这会使故障排除容器网络问题更具挑战性,因为很难将 veth 名称追溯到容器内的特定网络接口。

提议的变更

veth 接口的名称应唯一且易于与其容器关联。但是,网络接口名称存在限制,必须小心处理

  • 最大长度 16 个字符

  • 某些字符,例如连字符 (-) 不允许

容器主机名末尾的随机字符可以与接口名称结合使用,以形成 veth 名称。例如,名为 aio1_utility_container-a9ef9551 的容器可以有两个命名的 veth 接口

  • a9ef9551_eth0

  • a9ef9551_eth1

备选方案

将 veth 名称保留为 LXC 随机生成。

Playbook/Role 影响

veth 名称仅会在 LXC 配置文件本身的主机上进行调整。容器不会受到影响。Playbooks 不会在主机上对 veth 名称执行任何操作。

如果容器停止时未正确清理 veth(有时称为“悬挂的 veth”),则在手动删除悬挂的 veth(使用 ip link del <veth>)之前,容器可能无法启动。

升级影响

升级不受影响。此更改仅调整 LXC 容器配置文件,不会更改任何容器的运行配置。

如果容器正在运行并且其 LXC 配置文件被调整为使用命名的 veth,则仅在重新启动时才会使用这些调整。如果升级仅重新启动主机上的部分容器,则只有这些容器在重新启动后才会使用命名的 veth。

安全影响

此更改不应影响安全性。

性能影响

此更改不应影响性能。

最终用户影响

此更改不应影响最终用户。

部署者影响

部署 OpenStack 的用户应该能够更有效地排查网络问题。

例如,如果用户在访问 nova API 容器时遇到问题,他们可以快速查看与该容器关联的 veth。这将允许用户使用各种工具(如 ethtool 和 tcpdump)诊断网络问题,而无需深入研究接口索引或编写脚本。

如果部署者希望立即开始使用命名的 veth 对,则必须重新启动所有容器。这是因为 LXC 配置文件会在磁盘上进行调整,但正在运行的容器不会进行调整。

开发人员影响

与上述部署者影响类似,此更改还可以帮助开发人员更有效地诊断不同容器中的问题。

依赖项

本规范没有已知的依赖项。

实现

负责人

主要负责人

https://launchpad.net/~rackerhacker mhayden

工作项

  • 更新 Ansible Playbooks,以便在主 LXC 配置文件以及接口 .ini 文件中指定 lxc.network.veth.pair

测试

  • 进行全新部署并验证命名的 veth

  • 在版本之间进行升级并验证命名的 veth

  • 验证这两个测试都不会影响正在运行的容器

文档影响

文档会很有帮助,尤其是在这如何帮助解决问题方面。

参考资料

N/A