ども、 cloudpackかっぱ (@inokara) です。

妄想

Raspberry Pi 複数で consul クラスタ組みたい!

現実

ビルド

ドキュメントによると…

If you wish to work on Consul itself, you’ll first need Go installed (version 1.4+ is required). Make sure you have Go properly installed, including setting up your GOPATH.

どうやら Go 1.4 以上であればビルドが出来るようです。

あ、手元に…

Go 1.4 がインストールされた Raspberry PI B+ があるじゃないか。

pi@raspberrypi ~ $ go version
go version go1.4 linux/arm
pi@raspberrypi ~ $ echo $GOROOT
$HOME/go1.4
pi@raspberrypi ~ $ echo $GOPATH
$HOME/go-dev
pi@raspberrypi ~ $ which go
$HOME/go1.4/bin/go
pi@raspberrypi ~ $

おお、これはやってみるしかなさそうですな。

早速ビルド

準備は整った(整っていた)ので早速ビルドしてみます。。

cd $HOME/go-dev/src/github.com
git clone https://github.com/hashicorp/consul.git
cd consul
make

以下のように出力されました。
Raspberry Pi で consul を動かす妄想と現実: ビルド実行中 (1)
さて、何分かかるのやら…とお茶を飲みながら待っていると…
Raspberry Pi で consul を動かす妄想と現実: ビルド実行中 (2)
やったー。 だいたい 20 分程度でした。

起動してみる

とりあえず一台の Raspberry Pi で Consul を起動してみました。
cd $GOPATH/src/github.com/consul/bin/
./consul agent -server -data-dir=/tmp/ -join 127.0.0.1 -bootstrap &

以下のように出力されます。( -bootstrap オプションは非推奨ですのでご注意下さい。)
Raspberry Pi で consul を動かす妄想と現実: 動作確認

おお、起動しました。
更に consul members を叩くと…

 $ ./consul members
    2015/03/19 23:56:09 [INFO] agent.rpc: Accepted client: 127.0.0.1:48943
Node         Address             Status  Type    Build  Protocol
raspberrypi  xxx.xxx.xxx.xxx:8301  alive   server  0.5.0  2

アローンですがメンバーも確認出来ました。 ついでに Leader node の確認も。

$ http GET localhost:8500/v1/status/leader
HTTP/1.1 200 OK
Content-Type: application/json
Date: Thu, 19 Mar 2015 14:58:49 GMT
Content-Length: 20

" xxx.xxx.xxx.xxx:8300"

Leader がちゃんと頑張っています。

それがどうした…と言わないでー

Go が動けば Consul は動くだろうと思ったら Raspberry Pi(ARM アーキテクチャの CPU でも動いた)のは嬉しかった。複数の Raspberry Pi をかき集めてクラスタ組んでなんか面白いこと出来そうな妄想と共におやすみなさい。

追伸:Raspberry Pi 2 が欲しい。

元記事はこちらです。
Raspberry Pi で consul を動かす妄想と現実