share facebook facebook 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)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。