RaspberryPi 32台で可搬型クラスタ実験環境を作る(ハードウェア編)

PROCESS WARPの実験やデモ用にある程度の台数で移動可能なクラスタ実験環境があったら凄く良いだろうなということで、RaspberryPiを32台利用した、クラスタ実験環境を作りました。

f:id:llamerad-jp:20160708164250j:plain

追記:JTF2016登壇時に現物持参する予定です。興味ある方見に来てください。

2016.techfesta.jp

コンセプト

実験用途
  • PROCESS WARPの分散機能を実験するため、ある程度の台数のノードを用意する。
  • 自動負荷分散の実験をするために、ここのマシンに性能差があると良い(PROCESS WARPヘテロ環境を目標にしている)。RaspberryPiは設定ファイルの書き換えで簡単にCPUの速度を調整できる。
  • ノードごとに通信帯域を変えたい。Linux環境であれば、iptablesなどで帯域制限ができる。
デモ展示用途
  • せっかく作るので、デモや展示などが行えるように持ち運びができるようにする。
  • 音楽機器用のラックケースはサーバ用のそれと規格が同じため、持ち運び可能なシステムに流用可能。

製造

土台準備

RaspberryPiを8台×4グループ毎に固定する板を作ります。 3mm厚のアルミ板を440mm×70mmで切りました。アルミ板はアクリルカッターで切りました。

f:id:llamerad-jp:20160708151748j:plain

1枚切るのに2時間以上かかり、3日ほど指がおかしくなります。東急ハンズが近くにあるならそちらで加工してもらえるようです(後から知った)。 土台のサイズは入手可能なケースの奥行きなどに依存します。RaspberryPi同士が近すぎると配線ができなくなったりmicroSDの交換ができなくなります。120mmピッチ(長辺85mmなので35mm間隔)での配置はピンセットを使えばギリギリなんとななるレベルです。 ネジ穴は公開されている図を元に4つづつ開けました。しかし、配線取り回しの関係上利用した穴は3つづつでした。

http://doc.switch-science.com/schematic/RaspberryPi/Raspberry+Pi+B%2B+Layout+Model.pdf

RaspberryPiの組み立て

通りすがりの安藤さんが、「これだけあるなら初期不良ありそう」とのこと。確かにそうなので据え付け前に1台ずつ動作を確認します。HDMI出力、OS起動、ネットワーク接続は確認しましょう。どのみち必要なのでRaspbianをここでインストールしてしまいます(あとからmicro-SDの挿抜もできるけど面倒)。ヒートシンクも付けます。

f:id:llamerad-jp:20160708152807j:plain

スペーサー(15mmを2つ使って30mm相当)とRaspberryPiを交互に重ねます。スペーサーと基盤の間には安全のため絶縁用のナイロンワッシャーを挟みます。 この時、給電用USB隣の穴は使いません。LANの配線や、micro-SDの挿抜に凄く邪魔になります。

www.youtube.com

8台×4グループできました。土台に付けます。

www.youtube.com

土台ごとトレイに載せてしまいます。

f:id:llamerad-jp:20160708160407j:plain

固定位置を確認するため、一旦ケースに格納します。 背面にファンを付けるつもりなので、干渉しない位置を見定めます。 土台が前後に動かないように、小さな溝を掘ります。ドリルで簡単に掘れます。

f:id:llamerad-jp:20160708161629p:plain

左右のスペースにUSB充電器を設置します。少しでも放熱しやすいように交互に配置します。

ラックへのマウント

配線前にRaspberryPi以外の機器をマウントしてしまいます。

f:id:llamerad-jp:20160708163143j:plain

可搬性とのバランス上、前面に24ポートスイッチ×2台、背面にルーターとコントロール用PCをマウントしています。32台(コントロール用PCあわせて33台)になると、家庭用の機器では物理的にコネクタが足りません。DHCPもIPをそれほど多く発行出来ません。ネットブートなどを考えると細かな設定が可能なサーバ用のスイッチ&ルータを用意したほうが無難です。

f:id:llamerad-jp:20160708163352j:plain

背面用排気ファンです。ファンコントローラーなどは利用していないので、ワンルームで動かすと音が気になります。

配線

microSDを挿していない場合はLANの前に指す必要があります。 LANとUSB、どちらから作業しても難易度はあまり変わりませんでした。

f:id:llamerad-jp:20160708163547j:plain

↑USBだけ配線した状態。「トマトみたい」とのこと。

f:id:llamerad-jp:20160708163841j:plain

↑ネットワークも配線。「そうめん食べたい」とのこと。

f:id:llamerad-jp:20160708151415j:plain

↑全て配線したところ。

f:id:llamerad-jp:20160708163918j:plain

↑ラックに格納してみたところ。

  • トレイの抜き差しを考えるとLANは1mくらい。抜き差しをしない場合、最短50cmくらい?
  • RaspberryPi自体が100Mbpsなので、高級なケーブルより取り回しの楽な細いケーブルを選んだ。
  • USBケーブルは30cmほどあれば足りる。
  • RaspberryPi3を利用する場合、2.5Aを通せるUSBケーブルは思ったより少ない。少ない選択肢の中から1mのものを選んだら余って邪魔。
  • USB充電器の電源ケーブルが太くて長くて邪魔になる。河村さんの提案で短いものに変えただけでかなりスッキリした。

f:id:llamerad-jp:20160708164201j:plain

電源ケーブル類です。タップはケースの蓋に両面テープで接着しました。 可能であればスイッチ類の電源ケーブルも短いものに変えたいところです。

完成

f:id:llamerad-jp:20160708164250j:plain

通電することを確認します。 ネットワークやOSなどの設定をしていない場合、ブツ切りしかできません。microSDのイメージが破損すると、ピンセットを使っての交換作業になるので要注意です。

振り返り

  • 移動は可能ですが結構重いです。多分30Kg位あるのでは?普通のキャリーカートでは耐えられません。
  • 可搬性が必要ないのであれば全て前面配置にしてしまったほうが良いです。IntelのNUC5i7は1Uにぎりぎり収まらないです。NUC6i7なら1U未満なので、入手可能であればそちらのほうが良いかも。