twemproxy的安装要求autoconf的版本在2.64以上,需要先安装新版autoconf
autoconf安装
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz tar zxvf autoconf-2.69.tar.gz cd autoconf-2.69 ./configure make && make install cd ..
twemproxy的安装
git clone https://github.com/twitter/twemproxy.git autoreconf -fvi #生成configure文件 ./configure --prefix=/opt/twemproxy/ --enable-debug=log mkdir -p /opt/twemproxy/{run,conf} /data/logs/twemproxy/ ln -s /opt/twemproxy/sbin/nutcracker /usr/bin/
vim conf/nutcracker.yml #编辑配置文件
alpha: listen: 172.16.175.106:6379 #监听端口 hash: fnv1a_64 #key值hash算法,默认fnv1a_64 distribution: ketama #分布算法 #ketama一致性hash算法;modula非常简单,就是根据key值的hash值取模;random随机分布 auto_eject_hosts: true #摘除后端故障节点 redis: true #是否是redis缓存,默认是false timeout: 400 #代理与后端超时时间,毫秒 server_retry_timeout: 200000 #摘除故障节点后重新连接的时间,毫秒 server_failure_limit: 1 #故障多少次摘除 servers: - 172.16.175.145:6379:1 - 172.16.175.122:6379:1 - 172.16.175.85:6379:1 - 172.16.175.168:6379:1
nutcracker -t -c /opt/twemproxy/conf/nutcracker.yml
#测试配置文件 如果不加-c 默认是检测conf/nutcracker.yml
nutcracker -d -c /opt/twemproxy/conf/nutcracker.yml -p /opt/twemproxy/run/redisproxy.pid -o /data/logs/twemproxy/redisproxy.log #启动
twemproxy测试
1.后端加机器会导致部分key丢失,机器加的越多,丢失率越高
2.自动摘除故障机器是根据配置来的:server_retry_timeout 是失败后间隔多少毫秒再连接;server_failure_limit 是失败多少次摘除(有个问题,摘除故障节点后,分布到此节点的key会分布到其他节点,当故障节点恢复后,key还是重新分布到故障节点)
3.如果启动多个nutcracker进程,需要-s指定监控端口,默认是22222
4.单台twemproxy比单redis性能略有下降,多台相同配置twemproxy同时提供请求比redis性能好,可以通过haproxy的tcp模式实现
5.key分布基本均匀,取1万个号码,执行set num num操作,4台redis分布key数量是2500左右
原文地址:http://record.blog.51cto.com/3300006/1599746