redis集群方案-Twemproxy

1 Twemproxy是什么?

Twemproxy是一种代理分片机制,来源于Twitter开源。Twemproxy按照路由规则,转发给后台的各个Redis服务器,然后Redis返回结果给Twemproxy,该方案很好的解决了单点Redis数据承载能力的问题。一台机器的内存是有限的这样单台Redis存储的数据量也是有限的,数据量庞大的时候会导致查询数据变慢。引入Twemproxy中间件以后,相当于引入一个内存空间巨大的Redis在后台提供服务。当然,Twemproxy本身也是单点,需要用Keepalived做高可用方案。通过Twemproxy可以使用多台服务器来水平扩张redis服务,可以有效的避免单点故障问题。虽然使用Twemproxy需要更多的硬件资源和在redis性能有一定的损失(twitter测试约20%),但是能够提高整个系统的HA也是相当划算的。不熟悉twemproxy的同学,如果玩过nginx反向代理或者mysql proxy,那么你肯定也懂twemproxy了。其实twemproxy不光实现了redis协议,还实现了memcached协议,什么意思?换句话说,twemproxy不光可以代理redis,还可以代理memcached。

 

 

promethesu 监控redis集群 redis集群proxy_配置文件

 

2 安装,配置Twemproxy

环境 centos6.0 、java jdk1.7

需要下载的文件(统一打包上传)

redis-3.2.8.tar.gz

tcl-8.5.7-6.el6.x86_64.rpm

nutcracker-0.4.0.tar.gz

 

l 安装Redis

下载包放在/soft/目录下

解压Redis

cd /soft

tar -zxvf redis-3.2.8.tar.gz

复制配置文件到/etc下方便统一管理

cp /soft/redis-3.2.8/redis.conf /etc/

l 修改redis.conf

protected-mode yes 更改为protected-mode no  #这里暂时取消用户名密码登录,上线以后可以打开此设置

daemonize no 更改为  daemonize yes  #这里设置为yes是Redis可以后台运行

# bind 127.0.0.1  注释掉这段,避免其他的机器无法访问Redis

l 启动Redis

 /soft/redis-3.2.8/src/redis-server /etc/redis.conf

 

l rpm安装nutcracker依赖

rpm -ivh tcl-8.5.7-6.el6.x86_64.rpm

 

l 安装Twemproxy

解压

tar -zxvf  /soft/nutcracker-0.4.0.tar.gz

编译安装

cd /soft/nutcracker-0.4.0

./configure

 make && make install

 

复制配置文件到/etc 统一管理

cp /soft/nutcracker-0.4.0/conf/nutcracker.yml /etc/

修改配置文件

vim nutcracker.yml

修改为如下

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:

这里为你安装的Redis

这里为你安装的Redis

启动Twemproxy

/soft/nutcracker-0.4.0/src/nutcracker -d -c /etc/nutcracker.yml

 

然后测试Twemproxy

/soft/redis-3.2.8/src/redis-cli -p 22121

 

127.0.0.1:22121> get admin

"admin"

127.0.0.1:22121> set admin admiin

OK

127.0.0.1:22121>

 

 

这里的key,value 会根据策略分配到不同的Redis中。