Intel EdisonとUbuntuにconsulを導入し、クラスタを構築する。
Intel Edisonはx86アーキテクチャのため、公式サイトが配布している 32bitバイナリ を配置するだけで動作する。
Ubuntuの準備
consulクラスタに参加するUbuntuを準備する。
Ubuntu | 15.04 |
---|---|
kernel | 3.19.0-15-generic |
arch | x86_64 |
consul | 0.5.0(amd64) |
IPaddr | 192.168.0.9/24 |
consul(linux 64bit)のインストール
consulインストール
nmatsui@develop:~$ wget https://dl.bintray.com/mitchellh/consul/0.5.0_linux_amd64.zip -qO /tmp/consul_0.5.0_amd64.zip
nmatsui@develop:~$ unzip /tmp/consul_0.5.0_amd64.zip -d ~/bin
nmatsui@develop:~$ chmod +x ~/bin/consul
nmatsui@develop:~$ consul version
Consul v0.5.0
Consul Protocol: 2 (Understands back to: 1)
Intel Edisonの準備
consulクラスタに参加するIntel Edisonを準備する。
http://tech-sketch.jp/2014/12/edison-setup.html 等のセットアップ手順に従い、Edisonに最新イメージをインストールする。今回インストールしたイメージはedison-image-ww05-15.zip
Intel Edison | weekly-120 |
---|---|
kernel | 3.10.17-poky-edison+ |
arch | i686 |
consul | 0.5.0(386) |
IPaddr | 192.168.0.10/24 |
Intel Edisonのセットアップ
Edisonセットアップ
nmatsui@develop:~$ sudo screen /dev/ttyUSB0 115200
Poky (Yocto Project Reference Distro) 1.6 edison ttyMFD2
edison login: root
[ 126.834432] systemd-fsck[233]: /dev/mmcblk0p10: recovering journal
[ 126.881414] systemd-fsck[233]: /dev/mmcblk0p10: clean, 13/152608 files, 26868/610299 blocks
root@edison:~#
root@edison:~# reboot ota
root@edison:~# configure_edison --setup
Configure Edison: Device Password
Configure Edison: Device Name
Configure Edison: WiFi Connection
root@edison01:~# opkg update
root@edison01:~# opkg upgrade
consul(linux 32bit)のインストール
consulインストール
root@edison01:~# mkdir -p /usr/local/bin
root@edison01:~# wget https://dl.bintray.com/mitchellh/consul/0.5.0_linux_386.zi
p -qO /tmp/consul_0.5.0_386.zip --no-check-certificate
root@edison01:~# unzip /tmp/consul_0.5.0_386.zip -d /usr/local/bin
root@edison01:~# chmod +x /usr/local/bin/consul
root@edison01:~# consul version
Consul v0.5.0
Consul Protocol: 2 (Understands back to: 1)
consulクラスタの構築
Ubuntuのconsulをbootstrapとして起動
consul起動
nmatsui@develop:~$ consul agent -data-dir /tmp -server -bootstrap-expect 2 &
Intel Edisonのconsulを起動してUbuntuにJOIN
consul起動
root@edison01:~# consul agent -data-dir /tmp -server -join 192.168.0.9 &
consulクラスタの状態
ubuntuからメンバー確認
nmatsui@develop:~$ consul members
2015/04/29 09:32:19 [INFO] agent.rpc: Accepted client: 127.0.0.1:35648
Node Address Status Type Build Protocol
develop 192.168.0.9:8301 alive server 0.5.0 2
edison01 192.168.0.10:8301 alive server 0.5.0 2
edisonからメンバー確認
root@edison01:~# consul members
2015/04/29 00:40:35 [INFO] agent.rpc: Accepted client: 127.0.0.1:54706
Node Address Status Type Build Protocol
edison01 192.168.0.10:8301 alive server 0.5.0 2
develop 192.168.0.9:8301 alive server 0.5.0 2
consulによる名前解決
digで確認
nmatsui@develop:~$ dig @127.0.0.1 -p 8600 develop.node.consul ANY
...
;; ANSWER SECTION:
develop.node.consul. 0 IN A 192.168.0.9
...
nmatsui@develop:~$ dig @127.0.0.1 -p 8600 edison01.node.consul ANY
edison01.node.consul. 0 IN A 192.168.0.10
...
APIで確認
root@edison01:~# curl localhost:8500/v1/catalog/nodes
[{"Node":"develop","Address":"192.168.0.9"},{"Node":"edison01","Address":"192.168.0.10"}]
KVSの利用
Consul KVSに値({'foo'=>'bar'})を登録すると、すべてのクラスタメンバーで共有される。
(Consul KVSに登録される値はbase64エンコードされていることに注意)
EdisonからKVSにキーと値を登録
root@edison01:~# curl -X PUT -d 'hello world' http://localhost:8500/v1/kv/hoge
true
KVSの確認
root@edison01:~# curl -s http://localhost:8500/v1/kv/hoge
[{"CreateIndex":35,"ModifyIndex":35,"LockIndex":0,"Key":"hoge","Flags":0,"Value":"aGVsbG8gd29ybGQ="}]
nmatsui@develop:~$ curl -s http://localhost:8500/v1/kv/hoge
[{"CreateIndex":35,"ModifyIndex":35,"LockIndex":0,"Key":"hoge","Flags":0,"Value":"aGVsbG8gd29ybGQ="}]
base64デコードして値を確認
nmatsui@develop:~$ curl -s http://localhost:8500/v1/kv/hoge | jq -r ".[0].Value" | base64 -d
hello world
まとめ
公式サイトが配布している32bitバイナリを配置するだけでIntel Edison上でconsulが動作し、PC上で動作するconsulとクラスタを構築することができた。