Aerospikeを試す #1 環境構築
最近ちょくちょく見るようになったAerospikeです。 OSSになってからほんとよく見かけますが、あんまり日本語の情報が多くないですね。
- 作者: 佐藤鉄平,小林明大,石村真吾,坂上卓史,上原誠,鳥居英,佐藤歩,泉水翔吾,うさみけんた,伊藤直也,高橋侑久,佐藤太一,hayajo,橋本翔,西尾泰和,中島聡,はまちや2,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2015/06/24
- メディア: 大型本
- この商品を含むブログを見る
これのAerospike入門を読んで触発されて触ってみることにしたので、 環境構築からやってみたいなと思います。
今日のテーマ
環境
- Mac OSX 10.10.3
- Vagrant 1.7.2
VagrantでAerospike謹製のboxを起動する
http://www.aerospike.com/docs/operations/install/vagrant/mac/
ここに書いてある通りなんですけど、今回は2台でクラスタ環境つくりたいので、
vagrant init
した後にちょいと書き換えます
vagrant init aerospike/centos-6.5
してVagrantfile
をこんな感じに
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure(2) do |config| aerospike_box = "aerospike/centos-6.5" config.vm.define "node1" do |server| server.vm.box = aerospike_box server.vm.network :private_network, ip: "192.168.33.101" server.vm.network "forwarded_port", guest: 8081, host: 8081 server.vm.network "forwarded_port", guest: 3000, host: 3000 end config.vm.define "node2" do |server| server.vm.box = aerospike_box server.vm.network :private_network, ip: "192.168.33.102" end end
- ゲスト間通信したいので、
private_network
でPrivateIPをふる - AMCにアクセスしたいので
node1
は8081
ポートをフォワーディング - Aerospikeにホストからアクセスしたいので、
node1
は3000
ポートをフォワーディング
では起動します。
vagrant up
起動したら、中に入って、ちょっと確認してみます。
$ vagrant ssh node1 $ asmonitor -e info ... 1 hosts in cluster: 127.0.0.1:3000 ...
てなのが出てればとりあえずOKかな。
AMCを見てみる
Aerospike Management Consoleを見てみます。
この為に8081
ポートでアクセスできるようにしたので、下記をブラウザで開きます。
http://localhost:8081/
なんかかっこいい画面が出てきましたね。
- Disk Usage
- RAM Usage
- Cluster Summary
- Cluster Throughput
- etc ...
これは良い感じですね。 マジ運用で使う場合は、踏み台経由のポートフォワーディングとかだけ見れるようにしとけば楽そう。
2台のクラスター環境を構築する
さて、ここからが今回のメインです。 クラスター環境を構築してみます。 (今回はAWSではないですが、最終的にAWSに構築する事を前提にしているので、multicastは使わず、meshでやります)
それぞれ以下のようにconfを書き換え
- node1
network { service { address any port 3000 access-address 192.168.33.101 network-interface-name eth1 } heartbeat { mode mesh port 3002 address 192.168.33.101 mesh-seed-address-port 192.168.33.101 3002 interval 5 timeout 10 } fabric { port 3001 } info { port 3003 } }
- node2
network { service { address any port 3000 access-address 192.168.33.102 network-interface-name eth1 } heartbeat { mode mesh port 3002 address 192.168.33.102 mesh-seed-address-port 192.168.33.101 3002 interval 5 timeout 10 } fabric { port 3001 } info { port 3003 } }
ポイントは
- service
- access-adress
をVagrantfileで指定したIPアドレスに書き換える
- network-interface-name
をeth1
にする
- heartbeat
- mode
はmesh
にする
- address
をVagrantfileで指定したIPアドレスにする
- mesh-seed-address-port
はnode1
を見るようにする(2台とも)
- ここは、両方のconfに両方のIP書いても大丈夫でした
network-interface-name
を変えないといけないことに気づくのにめっちゃ時間かかった...
[vagrant@localhost ~]$ ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:78:30:4D inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe78:304d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3323 errors:0 dropped:0 overruns:0 frame:0 TX packets:2423 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:267581 (261.3 KiB) TX bytes:579927 (566.3 KiB) eth1 Link encap:Ethernet HWaddr 08:00:27:CA:31:8D inet addr:192.168.33.102 Bcast:192.168.33.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:feca:318d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:27960681 errors:0 dropped:0 overruns:0 frame:0 TX packets:27846070 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5863570470 (5.4 GiB) TX bytes:5871987364 (5.4 GiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:7999 errors:0 dropped:0 overruns:0 frame:0 TX packets:7999 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5992988 (5.7 MiB) TX bytes:5992988 (5.7 MiB)
両方再起動して確認
$ sudo /etc/init.d/aerospike restart $ asmonitor -e info Enter help for commands 2 hosts in cluster: 192.168.33.101:3000,192.168.33.102:3000 ===NODES=== 2015-07-10 00:29:19.964079 Sorting by IP, in Ascending order: ip:port Build Cluster Cluster Free Free Migrates Node Principal Replicated Sys . Size Visibility Disk Mem . ID ID Objects Free . . . pct pct . . . . Mem 192.168.33.101:3000 3.5.14 2 true 98 98 (1961,1) BB98262CE270008 BB98D31CA270008 197,932 87 192.168.33.102:3000 3.5.14 2 true 98 95 (2008,1) BB98D31CA270008 BB98D31CA270008 197,932 86 Number of nodes displayed: 2 ===NAMESPACE=== Total (unique) objects in cluster for test : 197,932 Note: Total (unique) objects is an under estimate if migrations are in progress. ip/namespace Avail Evicted Master Repl Stop Used Used Used Used hwm hwm Pct Objects Objects Factor Writes Disk Disk Mem Mem Disk Mem . . . . . . % . % . . 192.168.33.101/test 98 0 101,982 2 false 84.42 M 2 36.89 M 2 50 60 192.168.33.102/test 98 0 95,950 2 false 84.42 M 2 84.23 M 5 50 60 Number of rows displayed: 2
2 hosts in cluster: 192.168.33.101:3000,192.168.33.102:3000
2台のクラスタになっていることがわかりますね
AMCから見てみる
ちゃんと2台いることがわかりますね。