うわさの yrmcds を CentOS6.4 で動かしたメモ
@ymmt2005 さんの開発した yrmcds の開発シナリオ(何が欲しいのか)を読んで、これは適用出来るシーンがあるんではなかろうかと思い、早速手元で動かして確認してみようとしたので記録。
gcc-4.8.1のインストール
最新のgccが必要なのでまずはそちらからインストールする必要があります。
kawa0810さんのエントリを参考にして、gcc-4.8.1をインストールしましょう。
prefix を /opt あたりに指定して閉じ込めておけば扱いも面倒がないので良いかと思います。
yrmcdsのビルド
ドキュメントの通りやれば良いです。
IPv6 が無効だとビルドは通るけど実行時にコケるので、ipv6.conf を変更して適用しておいたほうがいいです。
$ cat /etc/modprobe.d/ipv6.conf alias net-pf-10 off options ipv6 disabled=1 # この行
また、gcc を /opt とかに入れた場合 Makefile の指定を変えたりする必要があるので書き換えましょう。
その他で、nobody/nogroup指定になっていたりするところを直さないと「そんなグループないよ」と言われます。
diff --git a/Makefile b/Makefile index 343437a..740da3c 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ CPPFLAGS = -I. -DCACHELINE_SIZE=$(shell getconf LEVEL1_DCACHE_LINESIZE) CPPFLAGS += -DDEFAULT_CONFIG=$(DEFAULT_CONFIG) -DUSE_TCMALLOC OPTFLAGS = -gdwarf-3 -O2 #-flto WARNFLAGS = -Wall -Wnon-virtual-dtor -Woverloaded-virtual -CPUFLAGS = -march=core2 -mtune=corei7 +CPUFLAGS = -march=core2 -mtune=native CXXFLAGS = -std=gnu++11 $(OPTFLAGS) $(shell getconf LFS_CFLAGS) $(WARNFLAGS) $(CPUFLAGS) LDFLAGS = -L. $(shell getconf LFS_LDFLAGS) LIBTCMALLOC = -ltcmalloc_minimal @@ -40,7 +40,7 @@ install: $(EXE) cp etc/logrotate /etc/logrotate.d/yrmcds cp etc/yrmcds.conf $(DEFAULT_CONFIG) cp $(EXE) $(PREFIX)/sbin/yrmcds - install -o nobody -g nogroup -m 644 /dev/null /var/log/yrmcds.log + install -o nobody -g nobody -m 644 /dev/null /var/log/yrmcds.log #lz4/lz4.c: # svn checkout http://lz4.googlecode.com/svn/trunk/ lz4
yrmcdsの動作確認
/path/to/yrmcds を実行すれば起動するので、telnetとかで動作確認が取れます。
$ telnet localhost 11211 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. stats STAT pid 56124 STAT time 1373377451 STAT version yrmcds version 0.9.0 STAT pointer_size 64 STAT rusage_user 0:75988 STAT rusage_system 0:120981 STAT curr_items 0 STAT total_items 0 STAT bytes 0 STAT limit_maxbytes 1073741824 STAT threads 10 STAT gc_count 1 STAT slaves 0 STAT last_expirations 0 STAT last_evictions 0 STAT evictions 0 STAT last_gc_elapsed 71548 STAT total_gc_elapsed 71548 END get test END set test 0 0 4 hoge STORED get test VALUE test 0 4 hoge END delete test DELETED get test END stats STAT pid 56124 STAT time 1373377481 STAT version yrmcds version 0.9.0 STAT pointer_size 64 STAT rusage_user 0:205968 STAT rusage_system 0:180972 STAT curr_items 0 STAT total_items 1 STAT bytes 0 STAT limit_maxbytes 1073741824 STAT threads 10 STAT gc_count 4 STAT slaves 0 STAT last_expirations 0 STAT last_evictions 0 STAT evictions 0 STAT last_gc_elapsed 52120 STAT total_gc_elapsed 226951 END
おわりに
statsが取れるので、既存のmemcachedの監視運用ノウハウがそのままつかえるので運用に投下するまでは簡単に出来そうです。
memcachedプロトコル(ほぼ)互換なので、既存のmemcachedクラスタに入れて試験などするのもそれほど苦にならないでしょう。
レプリカ周りはまた別途確認したいと思います。