paint-brush
32 コアの Raspberry Pi クラスターをゼロから構築する方法@alejandroduarte
28,442 測定値
28,442 測定値

32 コアの Raspberry Pi クラスターをゼロから構築する方法

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

長すぎる; 読むには

Raspberry Pi は、モニター、マウス、およびキーボードを接続し、GUI を備えた Linux ベースのオペレーティング システムをインストールできるミニコンピューター ボードです。 GUI を使用せずに「ヘッドレス」モードで使用して、データベース サーバーなどを実行できます。このようなクラスターは、分散システムを試すのに最適な方法です。この記事では、32 コアの 8 ノード、64 GB の RAM、2 TB のストレージを備えた Raspberry Pi クラスターを構築する方法を紹介します。

Company Mentioned

Mention Thumbnail
featured image - 32 コアの Raspberry Pi クラスターをゼロから構築する方法
Alejandro Duarte HackerNoon profile picture

Raspberry Pi は、モニター、マウス、およびキーボードを接続し、GUI を備えた Linux ベースのオペレーティング システムをインストールできるミニコンピューター ボードです。または、GUI を使用せずに「ヘッドレス」モードで使用して、データベース サーバーなどを実行することもできます。 Raspberry Pi にはさまざまな用途があります。マインクラフト サーバーの構築からスマート ミラーまで、可能性は無限大です。


ミニコンボード


MariaDB を発見し始め、データベース クラスター、分散 SQL 、およびXpandについて学んだときから、Raspberry Pi クラスターを構築するというアイデアが頭の片隅にありました。このようなクラスターは、分散システムを試すのに最適な方法です。


この記事では、以下を使用して Raspberry Pi クラスターを構築する方法を紹介します。


  • 8 ノード
  • 32コア
  • 64 GB の RAM
  • 2TBのストレージ

何が必要

独自のクラスターを構築する場合は、8 つの Raspberry Pi デバイスを購入する必要はありません。学習するにはデバイスが 1 つあれば十分です。この記事の手順は、 Raspberry Pi を 1 つだけ構成する予定がある場合でも役立ちます。ただし、 Linux管理、 AnsibleDockerKubernetesデータベース クラスターなどのスキルを本当に向上させたい場合は、クラスターを構築するために少なくとも 3 つのデバイスを用意することをお勧めします。


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


それを念頭に置いて、8をあなたの番号に置き換えてください. RAM やストレージが異なるモデルや多いモデルがある場合は、Raspberry Pi デバイスの仕様についても同じことを行います。これが私が使用したものです:



セットアップに合わせて量を調整してください。デバイスが非常に少ない場合 (たとえば 1 つまたは 2 つ)、またはマルチ USB 充電器を使用する場合は、1 つまたは複数のRaspberry Pi 電源を入手できます。マルチ USB 充電器を使用する場合は、各ポートが少なくとも 2.4Am (5V) を供給できることを確認してください。目的と予算に合わせて microSD カードを選択してください。少なくとも 32 GB の SD カードを使用することをお勧めします。


ケーブルとケース側で、セットアップに対応するものを選択してください。必ずしも冷却ファンが必要というわけではありませんが、デバイスを長時間オンにしておく場合は冷却ファンをお勧めします。


また、特に複数の Raspberry Pi デバイスを使用する場合は、「調理」を開始する前にすべての材料を用意することをお勧めします。

Raspberry Pi OS (ヘッドレス) のインストール

使用するオペレーティング システム (OS) は、Raspberry Pi ボード用に最適化された Debian ベースの OS であるRaspberry Pi OSです。 Raspberry Pi OS は、コンピューターを使用して microSD カードにインストールされます。後でこれらの microSD カードを Raspberry Pi デバイスに接続して起動します。


すべての microSD カードと Raspberry Pi ボックスを机の上に置いてください。 SD カード アダプター (通常は microSD カードに付属しています) または使用中のコンピューターに SD カード用のスロットがない場合は、SD カード USB リーダーが必要です。シャーピーも持っていきましょう。


Raspberry Pi Imagerアプリケーションをダウンロードし、コンピューターにインストールします。 microSD カードをパソコンに接続します。 Raspberry Pi Imager アプリケーションを開き、 [ CHOOSE OS ] をクリックします。リストから [ Raspberry Pi OS (other) ] をクリックし、Raspberry Pi デバイスが 64 ビットの場合は [ Raspberry Pi OS Lite (64-bit) ]、それ以外の場合は [ Raspberry Pi OS Lite (32-bit)]を選択します。


ラズベリーパイイメージャー


[ストレージの選択] をクリックし、microSD カードを選択します。正しいドライブを選択したことを再確認し、「歯車」アイコン (高度なオプション) をクリックします。ホスト名にはrpi01などを使用します。デバイスにrpi01rp02rp03などの名前を付けます。


[ SSH を有効にする] と [パスワード認証を使用する]オプションをオンにします。ユーザー名を設定し (デフォルトのpiのままにします)、安全なパスワードを設定します。


[ワイヤレス LAN の構成] オプションをオンにして、WiFi 接続の名前とパスワードを入力します。ロケール設定も構成します。


これは microSD カードごとに 1 回行う必要があるため、[画像のカスタマイズオプション] フィールドを必ず [常に使用する] に設定してください。このようにして設定が保存され、次のカードのプロセスが簡単になります。


Raspberry Pi イメージャーの高度なオプション


これで、 SAVEをクリックしてからWRITEをクリックしてプロセスを開始できます。完了したら、カードを取り出して Raspberry Pi デバイスの 1 つに接続し、箱に戻して、箱に番号01の印を付けます。すべてのデバイスに対してこのプロセスを繰り返します。

クラスターの組み立て

クラスター ケースの種類によって、組み立て手順が異なる場合があります。ケースに付属の説明書に従うか、オンラインで写真を探して、デバイスをレイヤーに配置する方法を明確に把握してください。


クラスターの組み立て


どの部品を最初に組み立てるかは、先を見越して決めることをお勧めします。たとえば、私が選んだケースでは、レイヤーに Raspberry Pi デバイスをマウントする前に、冷却ファンを取り付ける必要がありました。


Raspberry Pi をマウントしたら、Sharpie を使用してその番号をレイヤーに書き込みます。これは、将来、再構成やハードウェアに触れるその他の管理タスクのために microSD カードを取り出す必要がある場合に役立ちます。


搭載されているすべてのデバイス


すべてのデバイスをマウントしたら、USB ケーブルを Raspberry Pi デバイスとマルチ USB 充電器に接続します。必要に応じて、必要に応じて USB 充電器の代わりにPower over Ethernetネットワーク スイッチを使用することもできますが、それについてはお任せします。それは間違いなくチェックする価値があります。


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 による手動設定

Raspberry Pi が 1 台ある場合は、上記のように SSH 経由で接続し、 raspi-configユーティリティ プログラムを使用してさまざまな設定を行うことができます。 WiFi 接続の変更 ( S1 )、ホスト名の変更 ( S4 ) とユーザー パスワードの変更 ( S3 )、ファイル システムの拡張 ( A1 ) など、さまざまなことができます。


raspi-config による手動設定

Ansible による自動設定

クラスターに複数の Raspberry Pi がある場合は、 Ansibleなどのツールを使用して構成プロセスを自動化することをお勧めします。 Ansible を使用すると、反復的なタスクを実行することなく、複数のマシンでコマンドを実行できます。たとえば、各 Raspberry Pi でファイルシステムを拡張するとします。これは、次のようにコマンド ラインから実行できます。


 sudo raspi-config --expand-rootfs


自動化がなければ、 rpi01.localに SSH で接続し、上記のコマンドを実行して、SSH セッションを終了する必要があります。 rpi02.localpr03.localrp04.localなどに対して、これらすべての手順を繰り返す必要があります。代わりに、すべてのマシンでコマンドを実行するように Ansible に指示するだけです。これを行う方法を見てみましょう。


ローカル ネットワークに接続されているコントロール ノードに Ansible をインストールする必要があります。 Linux や macOS などの Unix ベースのオペレーティング システムを実行している限り、Raspberry Pi デバイスの 1 つ、作業中のラップトップ、またはその他のマシンを使用できます。


ネットワークに接続された専用データベースとして転用した古いラップトップをたまたま持っていたので、それを制御ノードとして使用しました (今後の記事で、レプリケーションを使用して 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」によってどのように応答されるかを出力で確認する必要があります (ここでは 1 つだけを示しています)。


 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 については他にもたくさんあります。


ここでは、アドホック コマンドを使用して表面をなぞっただけですが、たとえば、クラスターをどのような状態にしたいかを含むPlaybookを作成できます。ドキュメントを調べて、楽しんでください!


こちらにも掲載