LoginSignup
3
3

More than 5 years have passed since last update.

Intel Edison と Ubuntuでconsulクラスタ構築

Posted at

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とクラスタを構築することができた。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3