某散財系鯖主の企画である、逸般の誤家庭に触発され、自分でも自宅サーバー運用してみたいという気持ちになりました。そこで手始めにラズパイクラスタを作ってみることにしました。用途としてはOpenMPIを用いた分散メモリ並列化や、Kubernetesに触ってみる、を想定しています。ちなみにKubernetesはYouTubeで見かけただけなのでなんだかよく分かってません。
使ったもの
ひとまずRaspberry Pi 3台構成でクラスタを組みました。ホコリや発熱の問題があるので、本当はケースやヒートシンクも用意した方が良いと思います。ラズパイが思いの外高価でしたが、総額3万円程度で揃えられたと思います。
名称 | 備考 |
Raspberry Pi 4B (4GB) | ラズパイ |
Raspberry Pi 4B (2GB) x 2 | ラズパイ。メルカリで購入 |
電源ケーブル | エレコム USB充電器 |
スイッチングハブ | NETGEAR GS308-300JPS, 8ポート |
LANケーブル x 3 | Senetem LANケーブル 0.5m |
USB x 3 | OS書き込み用。自宅にあったもの |
USBケーブル | ラズパイの電源用。自宅にあったもの |
環境構築
まずは1台の場合と同様、OSのセットアップやssh接続設定をします。OpenMPIを使う場合はファイアウォールを無効にする必要があるため、注意が必要です。またsshのポート番号は変更しない方が良いでしょう。初期設定が終了したら、Raspberry Piに割り当てるIPアドレスを固定化します。/etc/dhcpcd.conf
を編集すればOKという記事も見かけますが、ドキュメントではMACアドレスを参照してルーター側で固定する方法が推奨されています。
/etc/hosts
を編集することで、IPアドレスにホスト名を割り当てることができます。例えば以下を追加すると、ping <host name>
でipアドレスが192.168.xx.xx
のコンピュータにping
コマンドを通すことができます。
192.168.xx.xx <host name>
これをクラスタを構成する各ノードで行います。
MPIの下準備
MPIを用いてマルチノードでプログラムを実行するためには、マスターノードと呼ばれるノードから全てのノードへ、パスフレーズなしのRSA認証が可能なsshによってログインできる必要があります。この際、全てのノードに同じユーザー名を登録する必要があります。RSA認証を行うためマスターノードで公開鍵を作成し、残りのノードに登録します。公開鍵の転送は、例えばssh-copy-id
コマンドなどを使えば良いでしょう。
参考
本記事は以下の資料を参考に執筆しました。
- https://qiita.com/kkk627/items/49c9c35301465f6780fa
- https://qiita.com/moyu12028/items/98de86c032413105911d
- https://note.com/rasen/n/n793feb3d6424
- https://note.com/rasen/n/n57dd963a7a40#1Zrn8
- https://www.raspberrypi.com/documentation/computers/configuration.html#assign-a-static-ip-address
- https://qiita.com/reireias/items/0d87de18f43f27a8ed9b
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント