北京时间1月17日,由UnitedStack有云的SDN网络工程师团队开发的名为“Steth”(中文译名为听诊器)的分布式网络诊断工具项目正式被OpenStack开发社区接受,成为“大帐篷”(Big tent)开发模式中的新成员。而从向OpenStack社区提交该项目,到正式被合并入“大帐篷”模式项目集,仅仅花费了4天的时间。
根据Steth的GitHub文档显示,该工具是一个针对OpenStack网络的诊断工具,基于代理(C/S)模式,能够在OpenStack网络环境部署前或者运营过程中对网络问题进行精准定位。目前,Steth仅适用于ML2网络。而除了可以应用在OpenStack环境以外,Steth还可以使用在其他的分布式网络环境之中。
我们来看看Steth项目的开发背景:OpenStack网络的部署架构是多种多样的,比如ML2(legacy and DVR)、Linux网桥、OVN、Dragonflow等等。但毫无例外的是,这些架构在部署过程中都需要进行先期的调试。比方说,VLAN需要被预先配置,带宽需要按需求进行分配,节点之间的连接需要确保链路可用,等等。
而对于OpenStack的网络工程师来说,即便网络架构设计得非常完善,针对VM网络的故障排查都是一项艰苦的工作。例如,一些虚拟机无法获取IP地址,还有一些虚拟机无法连接到互联网,节点之间的带宽无法达到预期效果等等。
Steth集成了一系列实用的脚本和第三方工具(包括iperf、tcpdump等),并能够模拟虚拟机发出 DHCP 请求、ARP 请求,帮助网络运营者实时追踪VM网络的状态。Steth采用了多节点部署架构,由无状态的CLI Controller和Agent组成。CLI Controller通过读取配置文件远程调用Agent侧的API来执行相关动作。Agent可以安装在任何想要调试的节点之上,并且不局限于节点的角色。
据说一开始的项目名称是Stetho,可惜和Fackbook的Android调试工具项目重名了。为了避免误解,开发团队选择了使用Steth的名字,同样表达了诊断、检查的含义。
Steth是由中国最早的OpenStack创业公司UnitedStack有云的SDN网络技术团队设计并开发。这款网络诊断工具开发的初衷是为了解决SDN团队工作中的痛点。
由于采用高度迭代式和集成化的开发模式,同时面临持续增长的客户真实环境部署需求,UnitedStack有云的SDN团队需要耗费大量的时间和精力排查OpenStack部署过程中遇到的网络故障。而往往这些网络故障与Neutron是没有任何关系的,它们通常是一些常见的配置问题,比如VLAN配置错误、交换机的VLAN没有放行、Floating IP网关没有打开、用于VxLAN隧道的端点IP配置错误等等。另外还有一些稀奇古怪的问题,比方说策略路由造成的简单检查无法暴露,但虚拟机却无法发送广播报文、光纤质量引发的跨机柜通信带宽异常,等等。
SDN工程师每天都要花费大量的时间在网络运维方面,一遍一遍地排查网络配置,苦不堪言。如此繁琐和重复的工作激发了他们开发Steth开发的想法与灵感。而另一方面,这款自动化工具的开发也是为了更加有效地节省网络运维的人工,真正实现OpenStack网络配置的高效大规模分发。目前,合格OpenStack人才在中国仍然处在相对稀缺状态,实现工具的自动化更具重要意义。
“在设计Stath之前,我们考察了Zabbix和Scalpals等同类工具。但感觉现有的工具仍然无法满足我们在大规模部署过程中的网络运维需求。Zabbix的技术架构相对僵化,Scalpals在解决新集群部署方面还有一些局限。实际上,Mirantis也同样遇到了网络自动化运维的问题,在FUEL中集成了 network-checker,这个工具后来被剥离出来成为独立项目。但network-checker相对简单、代码质量和把控比较糟糕,无法满足我们的需求。”
——UnitedStack有云SDN网络部PTL 王为
我们每周都会有新项目或者新POC,很多时间都花在了调试硬件网络的连通性或者性能上。Steth的初衷就是为了解决这些问题。通过Steth我们可以使用CLI远程调用运行在个节点的Steth-Agent提供的API,快速定位网络问题,为运维人员提供准确的排查思路,从而节省运维人员花费在定位网络问题上的时间。Steth项目从成立到现在只有不到两个月的时间,它还有很多不成熟的地方。我们希望有更多的OpenStack开发者可以加入我们,让我们共同打造一个快速交付,持续运维的OpenStack网络!
——UnitedStack有云SDN网络部工程师 苌智
网络的的稳定性是是OpenStack云平台稳定可用的基石。对于新部署的Region,我们总会遇到很多莫名的网络配置或性能问题,Steth能够迅速抓包分析数据包路径,定位问题所在;对于生产Region,可能会被虚拟网络连通性困扰,Steth能够在虚拟设备上发包快速模拟问题现场。我们想要提供一条OpenStack网络的无痛部署和运维的途径,节约老手时间,免除新手烦恼。
——UnitedStack有云SDN网络部工程师 姚威
从提交到合并,Steth成为OpenStack社区项目的一员仅花费了4天的时间。除了该项目本身具有重要的实践意义外,如何快速的合并速度也得益于OpenStack社区从2015年5月以来大力推行的“大帐篷”开发模式。
最新的OpenStack Liberty版本是OpenStack社区开发模式转型的重要成果。在全新的、被称为“大帐篷”(Big Tent)的Upstream模式中,OpenStack社区既保持了对规模较小的核心项目的关注,也积极鼓励在更广泛的Upstream生态环境中的自由创新。
在这种全新模式的推动之下,OpenStack项目数量呈现指数级增长。目前,在github.com的OpenStack目录下,Repos数量已经达到661个。也就是说,在十余个核心项目的基础上,OpenStack社区迅速孵化出众多的子项目。
毫无疑问,“大帐篷”模式大大提升了OpenStack社区的繁荣度,催生了很多优秀的项目,同时也带来项目持续发展、项目协作与管理的诸多挑战。在更具包容性的OpenStack社区中,众多子项目可是自由生长,同时也遵循“优胜劣汰、适者生存”的法则。“大帐篷”正在改变OpenStack,开发者们需要以更加自由且专注、更具未来视野且聚焦的心态和决心迎接新的挑战。
虽然是一个刚刚并入OpenStack社区“大帐篷”模式的新项目,Steth的目标是成为Neutron家族的正式成员。该项目正在寻找优秀的开发者和文档工程师,如果你希望加入Steth开发团队,可以关注IRC频道#openstack-steth。
目前,Steth已经被UnitedStack的SDN团队在测试环境中所采用。有兴趣的开发者和用户可以通过http://git.openstack.org/cgit/openstack/steth/查看项目详情并下载该工具。
▼彩蛋:揭秘Steth的开发团队