以前、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.

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら