paint-brush
如何从零开始构建 32 核 Raspberry Pi 集群经过@alejandroduarte
22,894 讀數
22,894 讀數

如何从零开始构建 32 核 Raspberry Pi 集群

经过 Alejandro Duarte9m2022/07/18
Read on Terminal Reader
Read this story w/o Javascript

太長; 讀書

Raspberry Pi 是一个微型计算机板,您可以在其上连接显示器、鼠标和键盘,并安装带有 GUI 的基于 Linux 的操作系统。您可以在没有 GUI 的“无头”模式下使用它并运行例如数据库服务器。像这样的集群是试验分布式系统的好方法。在本文中,我将向您展示如何构建一个 Raspberry Pi 集群:8 个节点,32 个内核,64 GB RAM 和 2TB 存储空间。

Company Mentioned

Mention Thumbnail
featured image - 如何从零开始构建 32 核 Raspberry Pi 集群
Alejandro Duarte HackerNoon profile picture

Raspberry Pi 是一种微型计算机板,您可以在其上连接显示器、鼠标和键盘,并安装带有 GUI 的基于 Linux 的操作系统。或者,您可以在没有 GUI 的“无头”模式下使用它并运行例如数据库服务器。您可以为 Raspberry Pi 提供多种用途——从构建 Minecraft 服务器到智能镜子,可能性无穷无尽。


微型电脑板


自从我开始发现 MariaDB 并了解了数据库集群、分布式 SQLXpand 以来,构建树莓派集群的想法一直在我脑海中浮现。像这样的集群是试验分布式系统的好方法。


在本文中,我将向您展示如何构建一个 Raspberry Pi 集群:


  • 8个节点
  • 32核
  • 64 GB 内存
  • 2TB 存储空间

你需要什么

如果您想构建自己的集群,您不必购买 8 台 Raspberry Pi 设备。即使是一台设备也足以学习东西。即使您打算只配置一个Raspberry Pi,本文中的说明也很有用。但是,我的建议是,如果您真的想提高您在Linux管理方面的技能, AnsibleDockerKubernetes数据库集群……您可以命名它!


8 x Raspberry Pi 4 B 型(8 GB RAM)


考虑到这一点,请将 8 替换为您的号码。如果您有不同型号的 RAM 或存储空间更多或更少,请对 Raspberry Pi 设备的规格执行相同操作。这是我使用的:



根据您的设置调整数量。如果您的设备很少(例如 1 或 2 个)或多 USB 充电器,您可以购买一个或多个Raspberry Pi 电源。如果您使用多 USB 充电器,请确保每个端口可以提供至少 2.4Am (5V) 的电流。选择适合您的目标和预算的 microSD 卡。我建议使用至少 32 GB 的 SD 卡。


在电缆和外壳一侧,选择适合您设置的任何东西。您不一定需要冷却风扇,但如果您打算长时间开启设备,我建议您使用它们。


我还建议在开始“烹饪”之前获取所有成分,特别是如果您想使用多个 Raspberry Pi 设备。

安装树莓派操作系统(无头)

我们将使用的操作系统 (OS) 是Raspberry Pi OS ,这是一种基于 Debian 的操作系统,针对 Raspberry Pi 板进行了优化。 Raspberry Pi OS 使用您的计算机安装在 microSD 卡上。您稍后将这些 microSD 卡连接到您的 Raspberry Pi 设备并启动它们。


将所有 microSD 卡和 Raspberry Pi 盒子放在您的办公桌上。如果您的工作计算机没有 SD 卡插槽,您将需要一个 SD 卡适配器(它们通常带有 microSD 卡)或 SD 卡 USB 读卡器。带上一个Sharpie。


下载Raspberry Pi Imager应用程序,并将其安装在您的计算机上。拿一张 microSD 卡并将其连接到您的计算机。打开 Raspberry Pi Imager 应用程序,然后单击CHOOSE OS 。从列表中,单击Raspberry Pi OS(其他),如果您的 Raspberry Pi 设备是 64 位,则选择Raspberry Pi OS Lite(64 位)Raspberry Pi OS Lite(32 位),否则:


树莓派成像仪


单击选择存储,然后选择 microSD 卡。仔细检查您是否选择了正确的驱动器,然后单击“齿轮”图标(高级选项)。对于主机名,请使用rpi01或类似名称。您将设备命名为rpi01rp02rp03等。


选中启用 SSH使用密码验证选项。设置用户名(我将保留默认pi ),并设置安全密码。


选中配置无线 LAN选项,然后输入您的 WiFi 连接的名称和密码。也配置您的区域设置。


由于我们必须对每张 microSD 卡执行一次此操作,因此请确保将图像自定义选项字段设置为:始终使用.这样设置将被保存,并且下一张卡片的过程将更容易:


Raspberry Pi Imager 高级选项


现在,您可以单击SAVE ,然后单击WRITE开始该过程。完成后,弹出卡并将其连接到其中一个 Raspberry Pi 设备,将其放回盒子中,并在盒子上标记数字01 。对所有设备重复此过程。

组装集群

根据您拥有的集群情况,组装过程可能会有所不同。请按照机箱随附的说明进行操作,或在线查找照片以清楚了解设备应如何放置在各层中。


组装集群


我建议提前决定首先组装哪些零件。例如,对于我选择的案例,我必须在将 Raspberry Pi 设备安装到各层之前安装冷却风扇。


安装 Raspberry Pi 后,使用 Sharpie 在图层上写入其编号。如果您必须取出 microSD 卡进行重新配置或任何其他涉及触摸硬件的管理任务,这将对您有所帮助。


安装的所有设备


安装好所有设备后,将 USB 电缆连接到 Raspberry Pi 设备和多 USB 充电器。如果您愿意,您可以选择使用以太网供电网络交换机来代替 USB 充电器,但我会留给您探索;绝对值得检查。


您可以将充电器(或网络交换机,如果您愿意的话)放在您的 Raspberry Pi 机架旁边或连接到它。我用橡皮筋将充电器固定在外壳的侧面。它工作得很好。


插入 USB 电缆后,您就可以启动所有这些微型计算机了!连接充电器,然后打开。根据您使用的 Raspberry Pi 型号,它们可能需要一些时间才能启动,因此请耐心等待。同时,享受 LED 闪烁和风扇启动的乐趣。


LED 闪烁和风扇启动

通过 SSH 连接

如果一切顺利,您应该能够通过 SSH 访问 Raspberry Pi 设备。通过在您的计算机上运行以下命令来尝试一下:


 ssh [email protected]


输入您的密码,然后回答“”以将设备添加到已知主机列表中。恭喜!您的集群现已上线。


集群直播

您可能需要运行命令来检查硬件信息。例如:


  • lscpu :有关 CPU 架构的信息
  • df -H :文件系统磁盘空间使用情况
  • sudo fdisk -l :分区信息
  • free -m : 已用、空闲和总 RAM 量
  • cat /proc/version : Linux 内核信息

使用 raspi-config 手动配置

如果你有一个树莓派,你可以如上所述通过 SSH 连接到它,并使用raspi-config实用程序来配置各种设置。您可以修改 WiFi 连接 ( S1 )、更改主机名 ( S4 ) 和用户密码 ( S3 ),以及扩展文件系统 ( A1 ) 等等。


使用 raspi-config 手动配置

使用 Ansible 进行自动化配置

如果您的集群中有多个 Raspberry Pi,您可能希望使用Ansible 之类的工具自动化配置过程。使用 Ansible,您可以在多台机器上运行命令,而无需执行重复性任务。例如,假设我们要在每个 Raspberry Pi 上扩展文件系统。这可以从命令行完成,如下所示:


 sudo raspi-config --expand-rootfs


如果没有自动化,您必须通过 SSH 连接到rpi01.local ,运行上面的命令,然后结束 SSH 会话。您必须对rpi02.localpr03.localrp04.local等重复所有这些步骤。相反,您可以简单地告诉 Ansible 在所有机器上为您运行命令。让我们看看如何做到这一点。


您必须在连接到本地网络的控制节点上安装 Ansible。它可以是 Raspberry Pi 设备之一、您的工作笔记本电脑或任何其他机器,只要它运行基于 Unix 的操作系统,如 Linux 或 macOS。


我碰巧有一台旧笔记本电脑,我将其用作连接到网络的专用数据库,因此我将其用作控制节点(我将在以后的文章中展示如何在 Raspberry Pi 设备中安装具有复制功能的数据库)。


我不会详细介绍安装 Ansible 的说明,因为在不同的操作系统上安装过程是不同的。检查官方文档并将其安装在您的笔记本电脑或您要分配为控制节点的任何设备上。


在开始之前,我建议您生成一个示例配置文件,您可以稍后根据需要进行调整:


 sudo su ansible-config init --disabled -t all > /etc/ansible/ansible.cfg exit


在此文件中,禁用主机密钥检查以简化流程。不要在生产环境中这样做!更改以下行:


 ;host_key_checking=True


对此:


 host_key_checking=False


接下来,您需要定义一个清单。这是您要使用 Ansible 控制的机器的列表。清单在/etc/ansible/hosts文件中定义。例如,您可以使用它们的 IP 地址或主机名将以下机器添加到清单中:


 [mymachines] foo.example.com bar.example.com 192.0.2.50 192.0.2.51


如果机器的 IP 地址或主机名有某种模式,您也可以使用范围。这就是您可以使用 Raspberry Pi 设备执行的操作。通过在末尾添加以下内容来编辑/etc/ansible/hosts文件:


 [rpis] rpi[01-08].local


更改模式以匹配您的主机名和数字。这相当于:


 [rpis] rpi01.local rpi02.local rpi03.local rpi04.local rpi05.local rpi06.local rpi07.local rpi08.local


在此清单中, rpis是一个任意名称,您可以在使用 Ansible 在其上运行命令时引用所有 Raspberry Pi 设备。


您需要配置 Ansible 在连接到机器时将使用的 SSH 用户名。将以下内容添加到/etc/ansible/hosts文件中:


 [rpis:vars] ansible_user=pi


是时候控制机器了。一个好的开始是ping它们:


 ansible rpis -m ping --ask-pass


键入 SSH 密码。您应该在输出中看到“ping”是如何由每台机器的“pong”回答的(我在这里只显示一个):


 rpi01.local | SUCCESS => {  "ansible_facts": {    "discovered_interpreter_python": "/usr/bin/python3"  },  "changed": false,  "ping": "pong" }


让我们回到文件系统扩展(虽然,我认为现在这不再需要了,如果你能确认这一点,请在评论中告诉我)。要在所有机器上执行此操作,请运行:


 ansible rpis -m shell -a "raspi-config --expand-rootfs" --become --ask-pass


就这么简单,您所有的 Raspberry Pi 设备都有一个扩展的文件系统。这是在所有机器上更新系统的好时机:


 ansible rpis -m shell -a "apt update -y" --become --ask-pass ansible rpis -m shell -a "apt upgrade -y" --become --ask-pass


您可以按如下方式重新启动所有设备:


 ansible rpis -m shell -a "reboot" --become --ask-pass


一旦你完成并想要安全地关闭所有机器,只需运行:


 ansible rpis -m shell -a "poweroff" --become --ask-pass

下一步是什么?

这仅仅是个开始。现在,您拥有了一个可以由 Ansible 控制的小型计算机集群。您可以尝试设置任何类型的服务器软件,包括 Web 服务器或数据库(参见此示例)。还有更多关于 Ansible 的内容。


我只是在这里使用临时命令触及了表面,但是您可以例如创建包含您希望集群处于的状态的剧本。探索文档,玩得开心!


也在这里发布