让我们构建一个28核的树莓PI集群

2020-08-12 07:58:12

这是我的“如何构建”三部曲的第二部分,详细介绍了我所有3个集群的构建过程。请在这里阅读第一个。

2018年10月,在构建了我的第一个集群章鱼一年多后,我正式超过了集群。当我尝试在上面运行Wordpress时,我开始注意到性能瓶颈,新安装的Wordpress博客的单个页面加载大约需要10秒!尽管如此,考虑到每个节点上的单核700 MHz处理器微不足道,所有这一切都不足为奇。

在那个时候,我大学毕业,在一家初创公司找到了一份数据科学家+全栈工程师的工作,我对自己说:

克拉肯(/ˈKRɑːkən/)[1]是斯堪的纳维亚民间传说中体型巨大的头足类海怪。(维基百科)。

海怪基本上是一种更大更可怕的章鱼,因此得名,象征着第一个星团的进化。它是由7个覆盆子PI 3B制成的,由一个USB充电器供电。

在我的第一张工资支票上,我最初打算最终构建一个由8个节点组成的集群,但我再次无法实现这个该死的想法。消费级网络交换机上的最大端口数为8个,足以容纳7个节点和一条连接路由器的电缆。

另一种选择是使用具有16个端口的商业级网络交换机,但这显然是不可能的(而且预算也是如此)。

我的钱包在克拉肯遭受的总损失是626.63新元,相当于449.73美元,这几乎是我减去费用和偿还教育贷款后一个月剩下的全部。

*截至撰写本文时,坡元/美元汇率为0.71770-1可选但帅气十足。

值得注意的是,我选择了32 GB的MicroSD卡作为第一个节点的存储,因为我希望它成为Docker群集设置的主节点,并预计我需要额外的存储来构建和部署Docker映像。

一年后的2019年9月,我发现自己经常在Raspberry PI 3B的内置以太网端口上达到100 Mbps的带宽限制,特别是在进行进出机器的大文件传输时,传输速度徘徊在令人沮丧的8MB/s左右。

我环顾四周,发现杰夫·格林(Jeff Geerling)的博客文章中,我了解到我可以使用USB千兆以太网适配器将带宽提高到略高于200 Mbps,于是我买了一堆便宜的中国USB千兆以太网适配器和一台千兆交换机,开始着手升级。

~连接到192.168.3.11的192.168.3.11---Client❯iperf-c,Tcp端口57041 TCP窗口大小:129KByte(default)---[4]本地192.168.3.71端口192.168.3.71与192.168.3.11端口5001[ID]间隔传输带宽[4]0.0-10.0秒111MB/秒93.1MB/秒。

安装千兆适配器后运行iperf,我们看到最大带宽为224 Mbps!

~连接到192.168.3.11的192.168.3.11---Client❯iperf-c,Tcp端口57298 TCP窗口大小:145KByte(default)---[4]本地192.168.3.71端口192.168.3.71与192.168.3.11端口5001[ID]间隔传输带宽[4]0.0-10.0秒268兆字节224兆位/秒。

有了这个简单的模块,每个节点的速度提高了131 Mbps。但是,这些仍然只是理论上的速度,因为典型的使用场景涉及将从网络接收的数据写入磁盘,而iperf只从网络接收数据,而不将数据写入磁盘。

在典型使用中,即使在Web服务中,也不太可能持续充分利用这一新的可用带宽。它在很大程度上将有助于在第一次加载时更快地传输图像等大型资产,之后用户浏览器将缓存图像。

此外,在Raspberry PI型号1到3中,实际带宽仍然受到臭名昭著的共享USB2.0总线的限制。

对于外行来说,单个USB 2.0总线中的480 Mbps理论单向带宽在以太网端口、SD卡插槽和所有USB端口之间共享。

尽管表格中的数字给人的印象是这次升级没有带来性能提升,但它们代表了最坏的情况,通常情况下,Web服务器中的读操作很多,写操作很少。

您不想花大价钱购买多个Raspberry PI 4B来建立集群。

我强烈建议任何热衷于进入Docker和Kubernetes的人构建这个集群,主要原因有两个。

首先,该集群兼容最新版本的官方支持的Docker镜像。Raspberry PI 3B运行在ARMv7的CPU架构上,恰好是目前ARM处理器中公分母最低的。

最新的ARM处理器(ARM64)向后兼容在ARMv7上编写和编译的所有代码。相比之下,arm64处理器不能向后兼容ARMv6处理器(Raspberry PI 1和2),因此它们基本上处于从社区逐步淘汰的过程中。

其次,该集群非常适合大多数但对带宽要求最高的应用程序,如托管您自己的博客、文件同步服务、媒体库管理器、链接缩短器、笔记应用程序等等。考虑到Raspberry PI 3中的USB 2.0总线瓶颈(该瓶颈仅在Raspberry PI 4中解决),只有当您的应用程序需要大量持续写入时(例如编码视频时),它才不会按预期执行。

总而言之,在我看来,构建一个Raspberry PI 3集群是学习Docker和集群的最具成本效益的方式,而且在可预见的未来仍将如此。所以如果你刚刚进入Docker,我强烈推荐这个版本。

在本系列的下一篇文章中,我将介绍我专门为高I/O应用程序构建的Leviathan集群,它能够对HEVC->;H264视频进行实时视频转码和流式传输。