前回memcachedのアプリサイドでのバランシングを行ったが、
前回のやり方だと、どちから片方にしかデータが存在しない形となる。
両方のnodeに同期するには、Repcachedを使用すると良い。
あらかじめ必要になるものを入れておく
yum install libevent-devel
yum install c++
Repcachedの取得先はこちら
↓
Repcached - KLablabWiki
前提条件
node1、node2のサーバを用意し、同期する。
node1サーバの作業
上記からダウンロードしてmake install
# wget http://downloads.sourceforge.net/repcached/memcached-1.2.8-repcached-2.2.tar.gz
# tar zxf memcached-1.2.8-repcached-2.2.tar.gz
# memcached-1.2.8-repcached-2.2
# ./configure --enable-replication --prefix=/opt/softwares/memcached-1.2.8-repcached-2.2
--enable-replicationはレプリケーションするには必須のオプション。
起動
# cd /opt/softwares/memcached-1.2.8-repcached-2.2
# ./memcached -v -x node2 -u root
node2サーバの作業
node1サーバと同じようにRepcachedをインストールする。
起動
# cd /opt/softwares/memcached-1.2.8-repcached-2.2
# ./memcached -v -x node1 -u root
起動はnode1を指定する。
これで同期完了。
接続テスト
テストはtelnetでもかまわないがsocatというツールを使うと便利。
# yum list |grep socat
socat.i386 1.7.1.2-1.el5.rf installed
yumでさっくり入れといた。
localhostに接続してみる
# socat READLINE tcp:localhost:11211,crlf
接続ポートはRepcachedの標準11212ではなく、memcachedの標準、11211を使う点に注意。
後はset getなど試してみて、もう一方のnodeでも確認。
ちなみに、Repcachedのレプリケーションは2台まで、という制限があり、冗長化をどうしようかと悩んだが、
よく考えてみれば、このnode充てに同期させれば、3台、4台といけるんだよね。
node3の場合
# ./memcached -v -x node3 -u root
試しに3台目でテストしたが、うまく同期できた。すごい!
但し、このやり方は本家のRepcached - KLablabWikiさんの記事では見られなかったので(ざっと見た感じだが)
推奨されているやり方かどうかは分からないけど。自己責任で。
参考URL
http://kapi.jp/kapi_blog/268
2010年04月15日
関連カテゴリ Linux Unix