与 Zorp 和 openSUSE 团队一起学习的经验
2014 年 9 月 1 日 | Manu Gupta | 无许可
大家好,我是来自匈牙利的 Peter。在过去的几个月里,我投入了大量的时间和精力,为开源社区贡献一些成果,作为 GSoC 的一部分。我的项目目标是在 openSUSE 环境中为 OpenStack(//openstack.net.cn/)实现一个负载均衡即服务 (LBaaS) Zorp(//www.balabit.com/network-security/zorp)驱动程序。
项目里程碑
该项目分为三个部分,我想详细讨论一下。
软件包
第一个障碍是编译和打包。说实话,这对我来说都是全新的,因为我以前从未创建过软件包,甚至不知道它是如何工作的。 在这里,我想衷心感谢我的导师们,他们指导我,并建议我使用 Open Build Service (OBS https://build.opensuse.org/)。这东西太棒了,经过一些练习,我已经能够将 Zorp 构建成许多不同版本的不同发行版(OpenSuse、CentOS、Debian、Fedora、Ubuntu)。
将负载均衡策略应用到 Zorp
第二部分是 Zorp 缺失的负载均衡策略。Zorp 可以用作负载均衡器,但为了将其集成到 OpenStack 中,必须实现一些缺失的策略,例如最少连接数或源 IP。 在这一点上,我印象深刻,Zorp 真正是瑞士军刀或死星的软件版本。能够通过良好的配置完成几乎所有事情,这真是一次美妙的体验。我尝试了针对此部分工作进行测试驱动开发 (TDD //en.wikipedia.org/wiki/Test-driven_development)。我不能说这对我来说完全是全新的,但我以前从未在实际开发环境中(例如,不是在代码静修中)使用过它。似乎是一种有效的方法。
我的导师建议我尝试 Travis,因为它可能是一个有用的工具,可以编译和运行测试,然后如果一切顺利,将所需的文件发送到 OBS。这个想法很棒,所以我遵循了他们的建议。结果是它现在与 GitHub 集成,并且每次更改都会自动执行上述任务。
Neutron 驱动程序
第三部分,我发现最困难的部分,是为 OpenStack 的 Neutron 组件编写驱动程序。OpenStack 是一个非常复杂的系统,理解它需要花费大量时间,但最终,我还是成功地将 Zorp 集成到系统中。它可以从仪表板中选择,并使用各种不同的池进行设置,并用作 LBaaS。
如何使用它
我现在将描述如何使用它。首先,使用我的 Neutron 存储库(https://github.com/VPetyaa/neutron)设置一台具有 OpenStack 的机器。为了方便起见,DevStack 是一个不错的选择,但如果您更喜欢手动操作,则有几个指南可以引导您完成所需的步骤。从 OBS(https://build.opensuse.org/project/show/security:Zorp:LBaaS)安装一个 Zorp,并在 Neutron 中启用驱动程序。完成此步骤后,您就可以使用仪表板,或以您喜欢的方式使用它了。
我为那些感兴趣的人编写了一个非常详细的设置指南。我希望它不会留下任何未解决的问题: https://github.com/VPetyaa/neutron/blob/master/neutron/services/loadbalancer/drivers/zorp/README
此外,还有两台虚拟机供您试用,第一台是安装了 Zorp 的 OpenSuse,并配置为用作负载均衡器。另一台是完整的预配置 OpenStack,带有 Zorp,因为即使 openSUSE Factory 也不包含最新的 OpenStack。此机器使用 Ubuntu 14.04。请随意试用它们。链接:https://db.tt/J3bM1qWh
感谢
总结这个夏天,它真的很有趣,并且提供了一个非常丰富的学习体验。我无法表达我对能够参与如此伟大的项目有多么感激。因此,首先我要感谢 openSUSE 给予我的机会。 此外,我要衷心感谢我的导师们,他们花了很多时间指导我(以避免原力的黑暗面:)。 Balint Kovacs、Peter Czanik、Szilard Pfeiffer 非常感谢你们,没有你们的帮助,这个项目永远无法完成。
我希望我们明年夏天也能一起工作! V_Petya
标签