这是“构建Raspberry Pi群集”系列中的第三篇文章。我们将讨论可用于使所有群集节点一次全部响应您的命令的软件,以便您可以安装所需的任何内容,并且仅对11个群集节点执行一次操作,而不是一一对应地配置它们单独的实体。这种软件极大地简化了您的工作,并减少了执行操作所需的时间。您有四个,八个或五十个节点可以使用,可以使它们都同时执行相同的操作。
在本教程中,您将学习:
- 如何安装和配置ClusterSSH
- 如何安装结构和使用fab命令
- 如何向集群发出命令
构建树莓派系列:
- 构建Raspberry PI群集-第一部分:硬件采购和组装
- 构建Raspberry PI Cluster-第二部分:操作系统安装
- 构建Raspberry PI集群-第三部分:同时节点管理
- 构建Raspberry PI集群-第四部分:监视
使用的软件要求和约定
类别 | 要求,约定或使用的软件版本 |
---|---|
系统 | Raspberian Linux |
软件 | 集群SSH |
其他 | 以root身份或通过root特权访问Linux系统sudo 命令。 |
约定 | #-要求给出linux命令可以直接以root用户身份或通过使用root特权以root特权执行sudo 命令$-要求给出linux命令以普通非特权用户身份执行 |
制备
你有你的集群设置,Raspbian是安装在每个节点上。现在,您要做的就是将SSH连接到每个树莓派中,并从群集底部的树莓派开始更改这些Raspberry Pi的主机名。您可以使用更改主机名
$ sudo hostname rpi1
之后重新启动每个Pi,以使更改在提示级别生效并继续到下一个Raspberry Pi。保留默认值pi
每个节点上的用户,并将其密码更改为其他密码,但是请确保每个节点都定义了相同的用户和相同的密码。
使用ClusterSSH一次处理所有节点
Raspberry Pi集群的最好之处在于,它的制造成本低,速度快且不需要太多资源。并且,按照我们之前的文章中的详细说明进行设置后,就可以像使用一台计算机一样在每个节点上安装软件。最好的软件是集群SSH-可以在您的群集节点上设置的SSH软件,以便您可以一次访问所有它们并向他们发出执行命令。
想象一下一个四节点的Raspberry Pi集群,每个集群都有自己的终端窗口。在每个终端窗口中,在对话框中键入的内容都会在real-time中复制。那就是ClusterSSH所做的-它接受一个小窗口的输入,并将其转换为分配给所有集群节点的输入。
建立clusterssh
您可以在笔记本电脑上打开自己喜欢的Linux发行版,然后在存储库中搜索它。如果您正在使用的Ubuntu安装完成
$ sudo apt install clusterssh
这将在您的系统上创建一些文件。但是,您应该考虑的第一个是/etc/hosts
文件。在文本编辑器中将其打开,然后在该文件中添加集群的四个节点,每行一个:
192.168.1.124 rpi4
192.168.1.126 rpi1
192.168.1.150 rpi3
192.168.1.252 rpi2
我们在本教程中使用的群集通过DCHP从本地路由器获取其IP地址。要检查每个Raspberry Pi节点使用的IP地址ifconfig
。我们为以下每个节点分配了一个易于 memory 的主机名:rpi1
,rpi2
,rpi3
和rpi4
。拥有他们的IP地址并修改了/etc/hosts
文件在笔记本电脑或PC上,访问这些节点中的每个节点都将更加容易。保存/etc/hosts
文件并关闭它。
现在,您必须打开/etc/clusters
归档那个clusterssh
用途。如果安装后此文件不存在clusterssh
您可以自己创建它。在文件的第一行添加以下内容:
picluster pi@rpi1 pi@rpi2 pi@rpi3 pi@rpi4
并保存文件。这说明clusterssh
有一个名为picluster
定义,并且它有四个节点,每个节点上有一个相同的用户:pi
。您应该知道另一个文件-位于中的配置文件~/.clusterssh/
。简单命名config
,它包含有关将用于命令集群的终端窗口的配置选项。例如,如果要将终端字体更改为Terminus,请添加以下行
terminal_font=terminus-iso8859-9-16
到文件。您可以在每个终端窗口中预定义软件启动时将调用的ssh用户,因此也可以添加
user=pi
线到~/.clusterssh/config
。
一旦设置好所需的配置文件,就可以连接所有群集节点,以便Raspberry Pis都能全部启动,等待大约30秒钟,直到它们到达启动过程的最后,然后启动clusterssh
在您的笔记本电脑上
$ cssh picluster
四个Terminal
窗口应立即弹出,他们将询问名为的用户的登录密码pi
。有一个带有对话框的小窗口,您可以在其中键入所有命令,并且应该在该框中键入密码并点击Enter
。所有节点都将立即登录,从那时起,您可以在集群上批量安装任何内容,使用单个命令更新所有节点,编辑配置文件并基本上完成所有操作,而无需重复执行相同的步骤四次。一排。
使用Fabric一次处理所有节点
可能是您想向Raspberry Pi群集发出命令,而又不想使用四个单独的终端窗口。如果您打算将群集扩展到-8个或12个节点来处理桌面上的许多屏幕,那将是不愉快的。因此,除了clusterssh
这是一个小的Python脚本。
确保你有Python
安装在笔记本电脑或PC上,用于通过SSH访问群集节点并使用pip
安装fabric
Python套件:
$ sudo pip install fabric
现在创建一个fabfile.py
文件放在您的主目录中
$ touch fabfile.py
并使其可执行:
$ chmod +x fabfile.py
现在编辑该文件,并向其中添加以下脚本:
from fabric.api import *
env.hosts = [
#RPi1
'pi@192.168.1.126',
#RPi2
'pi@192.168.1.252',
#RPi3
'pi@192.168.1.124',
#RPi4
'pi@192.168.1.150',
]
# the downside is you have to use a plaintext password
env.password = 'YOUR_PI_PASSWORD'
# launch the command to all the cluster nodes
@parallel
def cmd(command):
sudo(command)
将上述IP地址替换为分配给群集节点的IP地址,然后进行更改YOUR_PI_PASSWORD
分配给pi
每个节点上的用户。保存fabfile.py
您刚修改的文件。现在输入
$ fab cmd:"ls -la"
查看每个群集节点的主目录中所有文件的目录列表-全部在同一终端窗口中。的fab cmd:""
该命令接受您在这些引号之间添加的任何命令,并在每个群集节点上执行该命令,从而在您键入的“终端”窗口中提供详细的输出。在执行长操作(如编译或更新系统)时,这很有用,因为您可以看到这些行滚动并始终知道哪个群集节点在什么时候处于过程的哪个部分。
结论
因此,您可以使用所需的软件来设置每个群集节点。您可以使用集群来批量编译应用程序,解析数据,安装[R软件包-全部都无需重复相同的命令。您可以使用以下任一方法控制整个集群clusterssh
或者fabfile.py
上面详述。在本系列的下一部分中,我们将研究如何从集群中获取信息以及如何监视所有节点及其资源。