読者です 読者をやめる 読者になる 読者になる

成らぬは人の為さぬなりけり

エンジニアライフをエンジョイする為のブログ

Aerospikeを試す #2 HeartBeat & ReverseProxy

前回から引き続き、Aerospikeネタ。 前回はheartbeatのmesh-seed-address-portに1つのインスタンスを指定しましたが、これが1個だとSPOFになってしまう。 mesh-seed-address-port複数指定できるっぽいので、いくつか指定しておけば良いのだろうけど、それはそれでめんどくさい。 インスタンスの追加・削除時に設定を撒かないといけないし。 というわけで、ReverseProxy挟んだらいけんじゃね?という仮説を検証してみようと思ったので、やってみました。 (どうやるのが正解なんだろうか?)

追記

やっぱりこの方法ダメっぽい。 Cluster Visibilityがずっとfalseだったりとか Repl'n Factor1のまま(2に設定しているのに)だったりする。

やっぱり公式に書いてある通り mesh-seed-address-port複数設定するのが正解なんだろうか。

今日のテーマ

  • Proxyサーバを立てる
  • heartbeatの向き先を変える
  • AMCから確認する

以上

環境

  • Mac OSX 10.10.3
  • Vagrant 1.7.2
  • Aerospike 3.5.14

Proxyサーバを立てる

前回同様vagrantインスタンスを立てる。 今回は超単純なReverseProxyができれば良いのでHAProxyを使います。

Vagarntfileの修正

...
  config.vm.define "proxy" do |server|
    server.vm.box = "proxy-base"
    server.vm.box_url = "http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box"
    server.vm.network :private_network, ip: "192.168.33.200"
  end
...
  • OSは特になんでも良い
  • VMインスタンス間で通信したいので、private_networkでprivate ipを固定しておく

インスタンス起動

vagrant up proxy

HAProxyのインストール&設定

まずはインストール

vagrant ssh proxy
sudo yum install -y haproxy

したら、設定を書き換える

...
frontend  forward_mesh *:3002
    mode tcp
    default_backend             aerospike_mesh

backend aerospike_mesh
    balance     roundrobin
    server  node1 192.168.33.101:3002 check
    server  node2 192.168.33.102:3002 check
...

3002ポートをroundrobinで前回立てたインスタンスに振り分けます

HAProxyを再起動

sudo /etc/init.d/haproxy restart

heartbeatの向き先を変える

以下、node1``node2両方に行います

vagrant ssh node1
sudo vi /etc/aerospike/aerospike.conf
network {
...
        heartbeat {
                mode mesh
                port 3002
                address 192.168.33.101
                mesh-seed-address-port 192.168.33.200 3002

                interval 5
                timeout 10
        }
...
}

mesh-seed-address-portproxyサーバのアドレスに変更する

aerospikeも再起動

sudo /etc/init.d/aerospike restart

AMCから確認してみる

http://localhost:8081

にアクセスします。

img

無事、2台いることが確認できました。 めでたしめでたし(?)

on EC2にするときは、PrivateELB的な物を立てるんだろうか。

けど、なんかAMCを見てるとRepilicationがうまくいって無い気がする... もうちょい調査する。

まとめ

  • heartbeatはreverse proxy通してもいけたけど、なんか怪しい
  • 次回以降
    • プログラムからCRUD
    • UDF