続Memcached分散サーバー

2008/04/11に書いたMemcachedの分散サーバーについてテストしてみた。

2台のサーバー上でそれぞれmemcachedを起動してみた。

 require "rubygems"
 require "memcache"
 cache = MemCache.new %w!192.168.0.1:11211 192.168.0.2:11211!

この状態でcache["name"] = "tarou"とかcache["job"] = "se"とかいれてみる。

全く別の端末から以下のようにつなぐ

 require "rubygems"
 require "memcache"
 cache = MemCache.new %w!192.168.0.1:11211!

つまり片方だけにつないでみた。するとこの時はたまたまcache["job"]だけは取り出せたがcache["name"]は中身が無かった。適当に分散してデータが格納されていることがわかる。

2箇所に同時につないでいるオブジェクトがある状態で、片方のmemcachedサーバーを停止するとcache["XXXX"]と参照アクセスしようとするだけで、「XXXXXサーバーからレスポンスがない」と怒られて停止する。

この辺うまく再接続してくれるオプションがあるといいところだが、単純に故障率が2倍になってしまうのはおいしくない。2台以上にミラーリングしてくれる機能とかあるといいんだけどな。