redisスライスストレージクラスタの構築


環境の説明:
twemproxy
192.168.0.112:22122
centos6.5
redis
192.168.0.113:6379
centos6.5
redis
192.168.0.113:6380
centos6.5
twemproxyインストール:
[root@localhost src]# tar -zxf nutcracker-0.4.0.tar.gz 
[root@localhost src]# cd nutcracker-0.4.0
[root@localhost nutcracker-0.4.0]# ./configure --prefix=/usr/local/nutcracker/
[root@localhost nutcracker-0.4.0]# make && make install
[root@localhost nutcracker-0.4.0]# cp -r conf scripts /usr/local/nutcracker/

環境変数の設定:
[root@localhost nutcracker-0.4.0]# cd /etc/profile.d/
[root@localhost profile.d]# vim twemproxy.sh 
#!/bin/sh
#set Rutcracker environment
export RUTCRACKER_HOME=/opt/phpdba/nutcracker-0.2.4
export PATH=$RUTCRACKER_HOME/bin:$PATH
source twemporxy.sh

nutcrackerプロファイルを変更するには、次の手順に従います.
[root@localhost nutcracker-0.4.0]# cd /usr/local/nutcracker/
[root@localhost nutcracker]# vim conf/nutcracker.yml
alpha:
  listen: 0.0.0.0:22121
  hash: fnv1a_64
  distribution: ketama    
  auto_eject_hosts: true    #      redis      
  redis: true
  server_retry_timeout: 2000    
  server_failure_limit: 1        
  servers:                        
   - 192.168.0.112:6379:1 server1
   - 192.168.0.113:6379:1 server2
   - 192.168.0.113:6380:1 server3

プロファイルの説明
プロファイル構文の確認
[root@localhost nutcracker]# nutcracker -c conf/nutcracker.yml -t
nutcracker: configuration file '/opt/phpdba/nutcracker-0.2.4/conf/nutcracker.yml' syntax is ok

開始:
[root@localhost nutcracker]# nutcracker -d -c /opt/phpdba/nutcracker-0.2.4/conf/nutcracker.yml

redisインストールはマスタスレーブ構成のインストール部分を参照してください
パフォーマンステスト
ここではredisが持参したredis-benchmarkを用いて簡単な性能テストを行い、テスト結果は以下の通りである.
1.テスト:
a.twemproxyテストに合格する:
[root@localhost nutcracker]# redis-benchmark -h 127.0.0.1 -q -t set,get,incr,lpush,lpop,sadd,spop,lpush,lrange -c 100 -p 22121
 
SET: 62972.29 requests per second
GET: 87336.24 requests per second
INCR: 85034.02 requests per second
LPUSH: 81699.35 requests per second
LPOP: 82987.55 requests per second
SADD: 85034.02 requests per second
SPOP: 87412.59 requests per second
LPUSH (needed to benchmark LRANGE): 80840.74 requests per second
LRANGE_100 (first 100 elements): 28384.90 requests per second
LRANGE_300 (first 300 elements): 9022.01 requests per second
LRANGE_500 (first 450 elements): 4810.00 requests per second
LRANGE_600 (first 600 elements): 3363.04 requests per second

b.バックエンドredisを表示する:
[root@localhost nutcracker]# redis-cli 
127.0.0.1:6379> KEYS *
1) "counter:__rand_int__"
127.0.0.1:6379> 
[root@localhost nutcracker]# redis-cli 
127.0.0.1:6379> KEYS *
1) "mylist"
2) "key:__rand_int__"

我々のテストデータは2つのredisインスタンスにスライスされていることが分かった.
2.キー値分布の表示(クラスタバックエンドのredisインスタンスごとに表示)
[root@localhost nutcracker]# redis-cli info|grep db0
db0:keys=1,expires=0,avg_ttl=0
[root@localhost nutcracker]# redis-cli info|grep db0
db0:keys=1,expires=0,avg_ttl=0
[root@localhost nutcracker]# redis-cli info|grep db0
db0:keys=2,expires=0,avg_ttl=0

テスト結果:基本的なコマンドでtwemproxyを通過すると性能が低下します.twemproxy分布によりほぼ平均した.テストデータはビジネステストに準拠しています.