Turing Piでお手軽クラスターを作ろう
Turing Piは、マルチノードクラスターを簡単に構築することができるボードです。このノードとして使えるコンピュートモジュールはいくつかあり、RaspberryPiのコンピュートモジュールも使用することができます。
今回は、Turing Piの公式サイトで、Turing RK1 32GBを4枚購入しました。

また、フレームとして、次のものを購入しました。
電源は、以下のものを使用しました。
組み立て
組み立ては、公式サイトを参考に行なっていきます。

これがTuring Pi本体です。本体のボードには、4つのコンピュートモジュールを装着できるようになっています。

また、Turing RK1とヒートシンクはこのようなケースに入っていました。


これがTuring Pi本体です。

ヒートシンクのケースには、サーマルパッドが大小合わせて2枚入っています。大きい方を銀色のRockchipと書かれた大きいチップに、小さい方を、右上の小さくRockchipと書かれた黒いチップに貼りましょう。
それが終わったら、ヒートシンクをくっつけましょう。あとでヒートシンクとRK1をネジで止めるので、ネジ穴を合わせて貼り付けましょう。
貼り付けられたら、ヒートシンクのケースに入っているネジで4箇所固定します。ヒートシンクのケースには予備で一本ネジが付属していました。


次に、コンピュートモジュールを本体基板に接続します。

まず、両側の白い部分を外側に倒し、RK1を上からまっすぐ押し込みます。正しい向きで差し込むと、自動的に白い部分が戻り、固定されます。(写真では見やすさのためにファンを外して撮影しています)

その後、ファンのケーブルを各ポートの右下にあるコネクタにしっかりと差し込みます。
全てのRK1を接続できたので、次にフレームを組み立てます。

中には次のものが入っていました。

組み立て方については、一緒に入っていた説明書に詳しく記載されていたため、ここでは割愛します。

電源ボタンがついています。
https://docs.turingpi.com/docs/turing-pi2-specs-and-io-ports#front-io
にあるように接続をすることができます。

電源はこれを使用しました。

中には、電源本体と、電源コードが入っていました。Turing Piで使用する電源は24ピンなので、そのコードを電源本体に接続しました。

その後、ケースに取り付けました。

組み立てが完成するとこんな感じになりました。写真の都合上TuringPiが床についていますが、実際の運用時には、電源が下になるようにおきます。ネットワークは有線LANを接続しました。
電源を入れて起動する
それでは、実際にTuring Piを起動してみましょう。Turing Piには、BMCというモジュールを管理するための小さなコントローラーがあり、電源を投入すると最初にそれが起動します。

最初は右下のランプが黄色ですが、準備が完了すると緑色になります。そうしたら自分のWebブラウザからアクセスすることができるようになります。
アドレスは、
です。
最初にアクセスすると、次のような警告が表示されます。

これは、BMCがSSL証明書を自己署名して作成しているためです。詳細設定をクリックして、アクセスしましょう。


もしMacを使用していてアクセスできず、接続がリセットされましたなどが表示される場合、次の記事も参考にしてみてください。
すると、次のようなログイン画面が表示されます。初期設定は、
username:root
password:turing
でアクセスすることができます。
ログインすると、次のようなダッシュボードが表示されます。

ここで、各ノードの電源の制御などを行えます。まず、BMCのファームウェアを最新のものにアップグレードしておきましょう。
https://github.com/turing-machines/BMC-Firmware/releases
から、Latestのものを選択し、.tpuの拡張子のものをダウンロードします。
次に、BMCのダッシュボードで、Firmware Upgradeというタブを選択します。すると、次のような画面になります。

ここに先ほどダウンロードしたtpuファイルをアップロードし、UPGRADEボタンを押してしばらく待つと、アップグレードが完了します。
各ノードにOSをインストールしよう
ファームウェアのアップグレードが終了したら、各ノードにOSをインストールしていきましょう。Node1のみはTuring PiのHDMIポートに接続されているため、Node1にはUbuntu Desktopをインストールすることもできますが、今回は全てのノードにUbuntu Serverをインストールします。
https://firmware.turingpi.com/turing-rk1/ubuntu_22.04_rockchip_linux
上記のリンクから、最新のものを選び、ubuntu-******-preinstalled-server-arm64-turing-rk1_v***.img.xzというものをダウンロードしてください。ダウンロードが終わったら、xzを解凍して、.imgにしておきます。
次に、BMCのダッシュボードでFlash Nodeにアクセスします。

まず、Node1にインストールするためSelected nodeにnode1を選択し、fileに先ほど解凍したimgファイルを選択します。そうしたら、INSTALL OSをクリックしてインストールが完了するのを待ちます。自分の場合は10分ほどでインストールが完了しました。
これをノードが4つあるので4回繰り返しましょう。
ノードを起動しよう
それでは、実際にノードを起動してみましょう。
BMCのダッシュボードで、Nodesを選択しましょう。

ここで、各ノードの電源がついているかどうかを確認することができます。Node 1を起動するために、右下のEDITボタンをクリックしましょう。

そうしたら、Node 1の左側にある電源ボタンを右にスライドします。

すると、Node 1に電源が供給され、起動します。右下のSaveボタンを押して保存しておきましょう。
各ノードにはSSHでアクセスしますが、最初はSSHが有効になっていない場合があるため、BMCのシリアル通信を用いてSSHを有効にしましょう。
まず、BMCにSSHで接続します。
$ ssh root@turingpi.localパスワードは前回同様turingです。
BMCにアクセスできたら、次のコマンドを実行します。
$ picocom /dev/ttyS1 -b 115200これを実行すると、ターミナルに入力した文字をnode1に送ることができます。このコマンドを入力した後に一度エンターを入力すると、ubuntu login:というように表示されると思います。初期ユーザーは
ユーザー名:ubuntu
パスワード:ubuntu
のため、これを入力してログインします。

ログインできると、このようにnode1のIPアドレスが表示されると思います。これを後のSSHで使用するため、メモしておきましょう。
SSHを有効にするため、次のコマンドを実行します。
$ sudo apt update -y && sudo apt upgrade -y && sudo apt install ssh && sudo ssh-keygen -A && sudo systemctl restart sshこれを実行したら、SSHで接続ができるようになっていると思うので、ターミナルから直接node1に接続してみましょう。
$ ssh ubuntu@IPアドレスアクセスできるようになっているはずです。この工程を、node2-4に対しても行います。
node2以降に対してシリアル通信を行う方法は、
$ picocom /dev/ttyS1 -b 115200の/dev/ttyS1の部分を接続したいノード番号に変えるだけです。ノード2に接続したい場合は、/dev/ttyS2になります。
これで、全てのノードに対してSSH接続ができるようになりました。
ホスト名の変更と名前解決
このままだと、全てのノードでホスト名がubuntuのため、今どのノードを触っているのかがわからなくなってしまうことがあります。そのため、ホスト名をnode1などといったわかりやすい名前に変更しましょう。
$ sudo hostnamectl set-hostname node1これを実行すると、ホスト名をnode1に変更することができます。
また、現在はIPアドレスを指定してSSHに接続していますが、IPアドレスは変わることがあるため、サーバーとして使用するには不便です。そのため、名前解決ができるようにしましょう。
$ sudo apt update
$ sudo apt install avahi-daemon -yavahiをインストールすることで、自動的にホスト名.localでアクセスすることができるようになります。
つまり、次回以降、node1にSSH接続する際は
$ ssh ubuntu@node1.localと指定して接続すればいいことになります。
かなり便利になりました。
公開鍵認証を有効にする
最後に、SSHの公開鍵認証を有効にして、毎回パスワードを入力する必要がないようにしようと思います。
まず、自分のPC上で、公開鍵と秘密鍵のペアを作成します。
$ ssh-keygen -t ed25519いくつか質問が表示されますが、全て何も入力せずにエンターキーを押します。
終了したら、公開鍵を各ノードにコピーします。
$ ssh-copy-id ubuntu@node1.local
$ ssh-copy-id ubuntu@node2.local
$ ssh-copy-id ubuntu@node3.local
$ ssh-copy-id ubuntu@node4.local完了すれば、ssh接続した時にパスワードを聞かれることなくログインすることができるようになります。
これで初期設定は終了です。これで、クラスターを使えるようになりました。次回以降、活用した記事を書いていきたいと思います。お疲れ様でした。
