share facebook facebook2 twitter menu hatena pocket slack

2013.02.21 THU

ElastiCacheのクラスタ情報を取得してみた(Auto Discovery)

鈴木 宏康

WRITTEN BY鈴木 宏康

ElastiCacheを作成すると、「Configuration Endpoint」というものが利用でき、
Auto Discoveryで利用するElastiCacheのクラスタ情報を取得することができます。

情報は下記のように「config get cluster」で取得することができます。


# telnet test.xxxxxx.cfg.apne1.cache.amazonaws.com 11211
Trying xxx.xxx.xxx.xxx...
Connected to test.xxxxxx.cfg.apne1.cache.amazonaws.com.
Escape character is '^]'.
config get cluster
CONFIG cluster 0 191
2
test.xxxxxx.0001.apne1.cache.amazonaws.com|10.156.25.174|11211 test.xxxxxx.0002.apne1.cache.amazonaws.com|10.158.181.191|11211

END
quit
Connection closed by foreign host.

上記の情報からノードやポートの情報を切り出すシェルスクリプトを作ってみました。


#!/bin/sh
CONFIG_NODE=test.xxxxxx.cfg.apne1.cache.amazonaws.com
CONFIG_PORT=11211
LINE=`echo config get cluster | nc $CONFIG_NODE $CONFIG_PORT | head -3 | tail -1`
COUNT=`echo $LINE | tr -dc ' ' | wc -c`
COUNT=`expr $COUNT + 1`
for INDEX in `seq 1 $COUNT`; do
NODE=`echo $LINE | cut -d ' ' -f $INDEX`
HOST=`echo $NODE | cut -d '|' -f 1`
PORT=`echo $NODE | cut -d '|' -f 3`
echo $HOST $PORT
done

※下記でインストールしたnetcat(nc)を利用しています。


# yum -y install nc
...

実行すると下記のようにノード情報を切り出すことができます。


# ./test.sh
test.xxxxxx.0001.apne1.cache.amazonaws.com 11211
test.xxxxxx.0002.apne1.cache.amazonaws.com 11211

ElastiCacheのノードを追加し再度実行すると、追加を確認できました。


# ./test.sh
test.xxxxxx.0001.apne1.cache.amazonaws.com 11211
test.xxxxxx.0002.apne1.cache.amazonaws.com 11211
test.xxxxxx.0003.apne1.cache.amazonaws.com 11211

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

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。