以前、TwemproxyからElastiCacheに分散(同じキーは同じElastiCacheへ)してみるの記事で、
TwemproxyでElastiCacheのノードをまとめてみたのですが、
今回は、moxi(Moxi Server 1.8)でまとめてみました。
○インストール
# rpm -Uvh http://packages.couchbase.com/releases/1.8.1/moxi-server_x86_64_1.8.1.rpm
○初期起動(/etc/init.d/moxi-server)スクリプトの調整
# diff /etc/init.d/moxi-server /etc/init.d/moxi-server.bak
30,35c30
---
> MOXI_CLUSTER_CFG=/opt/moxi/etc/moxi-cluster.cfg
37a33,34
> test -f $MOXI_CFG || exit 0
> test -f $MOXI_CLUSTER_CFG || exit 0
45c42
---
> daemon "/bin/su -c "$DAEMON -d -P $PIDFILE -Z $MOXI_CFG -z $MOXI_CLUSTER_CFG" moxi"
○対象ノード(ElastiCache)の設定
# cat /etc/sysconfig/moxi-server
MOXI_CLUSTER_CFG="11211=test.xxxxxx.0001.apne1.cache.amazonaws.com:11211,test.xxxxxx.0002.apne1.cache.amazonaws.com:11211"
○Moxiの起動
# service moxi-server start
Starting moxi server [ OK ]
○設定内容の確認
# echo stats proxy config | nc localhost 11211
STAT 11211:default:config test.bia10i.0001.apne1.cache.amazonaws.com:11211,test.bia10i.0002.apne1.cache.amazonaws.com:11211
END
確かTwenproxyではIPアドレスでの登録になってしまい、DNS名でエンドポイントが提供されるElastiCacheでは、
相性が良くないかと思っていたのですが、Moxiだと上記の通りDNS名での登録も可能なので、Moxiの方が
いいかも知れません。
(細かい検証まではできていません)
○データの登録
# echo -e 'set mykey 0 60 5rnhellor' | nc localhost 11211
STORED
○データの取得
# echo -e 'get mykeyr' | nc localhost 11211
VALUE mykey 0 5
hello
END
# echo -e 'get mykeyr' | nc localhost 11211
VALUE mykey 0 5
hello
END
# echo -e 'get mykeyr' | nc localhost 11211
VALUE mykey 0 5
hello
END
# echo -e 'get mykeyr' | nc localhost 11211
VALUE mykey 0 5
hello
END
# echo -e 'get mykeyr' | nc localhost 11211
VALUE mykey 0 5
hello
END
上記より、同じキーなら同じノードから取得していることがわかります。
また下記にも「ketama」だと記載がありました。
Chapter 4. Moxi with Memcached
When used with standard, classic memcached, Moxi should be
started with different command-line parameters that will make
Moxi use libmemcached (ketama) hashing.