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。
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中。