Twemproxy(Nutcracker)


Twtter 开源的一个 Redis 和 Memcache 代理服务器,主要用于管理 Redis 和 Memcached 集群。

编译

git :https://github.com/twitter/twemproxy
下载源码
安装依赖工具
$ yum install automake libtool

添加阿里云epel repository
$ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
$ yum clean all

查找新版本的autoconf
$ yum search autoconf
$ yum install autoconf268

从源码编译
$ makereconf -fvi
$ ./configure
$ make

安装

编译完成后进入script目录下,可以找到nutcracker.init文件,这是个脚本文件可以打开看下。
里面有指定了
a. chkconfig
b. 执行程序:
prog=“nutcracker”
c. 配置文件nutcracker.yml:
OPTIONS="-d -c /etc/nutcracker/nutcracker.yml"

接下来需要做的就是:
1.将这个脚本文件复制到 /etc/init.d/
$ cp nutcracker.init /etc/init.d/nutcracker
$ chmod +x /etc/init.d/nutcracker

2.回到编译目录下找到nutcracker.yml配置文件并复制到/etc/nutcracker/目录下
$ mkdir /etc/nutcracker
$ cp ./conf/nutcracker.* /etc/nutcracker/

3.在编译文件的src目录下找到程序nutcracker,并复制到/usr/bin/下
$ cp ./src/nutcracker /usr/bin/

4.修改nutcracker
文件中有配置好了几个参考模版。我们只需保留任意一个,然后修改services部分指向redis master就行。

扫描二维码关注公众号,回复: 11571161 查看本文章
alpha:
  listen: 127.0.0.1:22121
  hash: fnv1a_64
  distribution: ketama
  auto_eject_hosts: true
  redis: true
  server_retry_timeout: 2000
  server_failure_limit: 1
  servers:
   - vm1:6379:1
   - vm3:6379:1

auto_eject_host: 当连接一个server失败次数超过server_failure_limit值时,是否把这个server驱逐出集群,默认是false
server_retry_timeout:单位毫秒,当auto_eject_host打开后,重试被临时驱逐的server之前的等待时间
server_failure_limit: 当auto_eject_host打开后,驱逐一个server之前重试次数

运行测试

启动服务
$ service nutcracker start

连接到代理程序并测试
$ redis-cli -p 22121
set pass mypassword
set k1 mytestk1
set 多个key 后再分别到多台master上get 验证,由于算法原因,可能会连续很多key存到了同一台redis, 所以多set一些不同的key验证。

其缺点:
不支持Redis的事务操作。
不支持针对多个值的操作,比如取sets的子交并补等。

猜你喜欢

转载自blog.csdn.net/huanghuitan/article/details/107929969