快速配置树莓派集群的 SD 卡

创建多个预配置的 SD 卡,以便使用 Cloudmesh Pi Burner 创建 Pi 集群。
96 位读者喜欢这篇文章。
Raspberries with pi symbol overlay

Dwight Sipler (来自 Flickr)

人们想要使用树莓派创建计算机集群的原因有很多,包括他们可以完全控制自己的平台,他们能够使用廉价且高度可用的平台,并有机会了解一般的集群计算。

设置集群的方法有很多种,例如无头模式、网络启动和从 SD 卡启动。每种方法都有优点和缺点,但对于使用过单个 Pi 的用户来说,后一种方法是最熟悉的。大多数集群设置都涉及许多复杂的步骤,需要大量时间,因为它们是在单个 Pi 上执行的。即使是入门也很困难,因为您需要设置网络才能访问它们。

尽管 Raspberry Pi ImagerPiBakery 都有所改进,但该过程仍然过于复杂。因此,在 Cloudmesh,我们提出了一个问题:

是否有可能开发一种专门用于一次为一个集群中的 Pi 刻录 SD 卡的工具,以便可以将卡直接插入,并以最少的努力启动一个可以简单工作的集群?

为了回应这个问题,我们开发了一个名为 Cloudmesh Pi Burner 的 SD 卡工具,并在 Pi Planet 中展示了它。您无需再花费数小时来重复步骤和学习复杂的 DevOps 教程;相反,您只需几个命令即可设置集群。

为此,我们开发了 cms burn,这是一个可以在“管理器” Pi 或 Linux 或 macOS 计算机上执行的程序,用于为您的集群刻录卡。

我们在 GitHub 上设置了一个综合软件包,可以轻松安装。您可以在 README 中详细了解它。在那里,您还可以找到关于如何从 macOS 或 Linux 计算机直接刻录的详细说明。

入门

本文介绍了如何使用五个树莓派单元创建集群设置(您至少需要两个,但此方法也适用于更大的数量)。要继续操作,您必须有五个 SD 卡,每个 Pi 单元一个。有一个带有五根以太网电缆(每个 Pi 一根)的网络交换机(托管或非托管)会很有帮助。

要求

您需要

  • 5 个树莓派主板
  • 5 张 SD 卡
  • 5 根以太网电缆
  • 一个网络交换机(非托管或托管)
  • WiFi 接入
  • 显示器、鼠标、键盘(用于 Pi 上的桌面访问)
  • 计算机或管理器 Pi 的 SD 卡插槽(最好支持 USB 3.0 速度)
  • 如果您在 Mac 上执行此操作,则必须安装 XCodeHomebrew

在 Linux 上,默认情况下支持开源 ext4 文件系统。但是,Apple 不为 macOS 提供此功能,因此您必须单独购买支持。我使用 Paragon Software 的 extFS 应用程序。与 macOS 本身一样,这在很大程度上是基于开源的,但本身不是开源的。

在 Cloudmesh,我们维护一个硬件部件列表,您在设置集群时需要考虑这些部件。

网络配置

图 1 显示了我们的网络配置。在五台树莓派计算机中,一台专用于作为管理器,四台作为工作节点。将 WiFi 用于管理器 Pi 允许您将其设置在您家中的任何位置或其他位置(README 中讨论了其他配置)。

我们的配置使用非托管网络交换机,其中管理器和工作节点在本地相互通信,并且管理器通过为您配置的桥接器为工作节点提供互联网访问。

设置 Cloudmesh burn 应用程序

要设置 Cloudmesh burn 程序,首先创建一个 Python venv

$ python3 -m venv ~/ENV3
$ source ~/ENV3/bin/activate

接下来,安装 Cloudmesh 集群生成工具并启动刻录过程。您必须调整 SD 卡的路径,这取决于您的系统和您使用的 SD 卡读卡器类型。这是一个示例

(ENV3)$ pip install cloudmesh-pi-cluster
(ENV3)$ cms help
(ENV3)$ cms burn info 
(ENV3)$ cms burn cluster \
--device=/path/to/sdcard \
--hostname=red,red01,red02,red03,red04 \
--ssid=myssid -y

填写密码并根据要求插入 SD 卡。

启动您的集群并进行配置

将刻录好的 SD 卡插入 Pi 并打开电源。执行 ssh 命令以登录到您的管理器 - 它是名为 red 的那个(工作节点通过数字标识)

(ENV3)$ ssh pi@red.local

这需要一段时间,因为 SD 卡上的文件系统需要安装,并且需要激活国家/地区、SSH 和 WiFi 等配置。

进入管理器后,在其上安装 Cloudmesh 集群软件。(您可以自动执行此操作,但我们决定将此过程的一部分留给您,以便为您提供最大的灵活性。)

pi@red:~ $ curl -Ls \
http://cloudmesh.github.io/get/pi \
--output install.sh
pi@red:~ $ sh ./install.sh

在看到大量日志消息后,您会看到

#################################################
# Install Completed                             #
#################################################
Time to update and upgarde: 339 s
Time to install the venv:   22 s
Time to install cloudmesh:  185 s
Time for total install:     546 s
Time to install: 546 s
#################################################
Please activate with
    source ~/ENV3/bin/activate

重启

pi@red:~ $ sudo reboot

开始使用您的集群

通过 SSH 登录到您的管理器 Pi

(ENV3)$ ssh pi@red.local

一旦您登录到网络上的管理器(在本例中为 red.local),请执行命令以查看是否一切正常。例如,您可以使用温度监视器从所有 Pi 板获取温度

(ENV3) pi@red:~ $ cms pi temp red01,red02,red03,red04

pi temp red01,red02
+--------+--------+-------+----------------------------+
| host   |    cpu |   gpu | date                       |
|--------+--------+-------+----------------------------|
| red01  | 45.277 |  45.2 | 2021-02-23 22:13:11.788430 |
| red02  | 42.842 |  42.8 | 2021-02-23 22:13:11.941566 |
| red02  | 43.356 |  42.8 | 2021-02-23 22:13:11.961245 |
| red02  | 44.124 |  42.8 | 2021-02-23 22:13:11.981896 |
+--------+--------+-------+----------------------------+

访问工作节点

访问工作节点甚至更方便,因此我们设计了一个隧道命令,使设置变得容易。在管理器节点上调用它,例如

(ENV3) pi@red:~ $ cms host setup "red0[1-4]" user@laptop.local

这会在所有工作节点上创建 ssh 密钥,从所有主机收集 ssh 密钥,并将公钥分散到管理器和工作节点的 authorized_key 文件中。这也使管理器节点成为工作节点的桥梁,以便它们可以访问互联网。现在我们的笔记本电脑使用以下命令更新我们的 ssh 配置文件。

(ENV3)$ cms host config proxy pi@red.local red0[1-4] 

现在您可以从您的计算机访问工作节点。使用温度程序试用一下

(ENV3)$ cms pi temp "red,red0[1-4]"              

+-------+--------+-------+----------------------------+
| host  |    cpu |   gpu | date                       |
|-------+--------+-------+----------------------------|
| red   | 50.147 |  50.1 | 2021-02-18 21:10:05.942494 |
| red01 | 51.608 |  51.6 | 2021-02-18 21:10:06.153189 |
| red02 | 45.764 |  45.7 | 2021-02-18 21:10:06.163067 |
...
+-------+--------+-------+----------------------------+

更多信息

由于这使用 SSH 密钥在管理器和工作节点之间进行身份验证,因此您可以直接从管理器登录到工作节点。您可以在 READMEPi Planet 上找到更多详细信息。 Cloudmesh 手册中讨论了其他 Cloudmesh 组件。


本文基于 使用 MacOS 上的 Cloudmesh 轻松设置树莓派集群,并经许可重新发布。

接下来阅读什么
标签

1 条评论

非常有帮助

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.