Twemproxy是 Twitter 开源出来的 Redis 和 Memcached 代理。
功能介绍
无论是 Memcached 还是当前的 Redis,其本身都不具备分布式集群特性,当我们有大量 Redis 或 Memcached 的时候,通常只能通过客户端的一些数据分配算法(比如一致性哈希),来实现集群存储的特性。
而 Twemproxy 通过引入一个代理层,可以将其后端的多台 Redis 或 Memcached 实例进行统一管理与分配,使应用程序只需要在 Twemproxy 上进行操作,而不用关心后面具体有多少个真实的 Redis 或 Memcached 存储。
安装与配置
将autoconf升级到2.4以上版本。
- # http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
- # tar -zxvf autoconf-2.69.tar.gz
- # cd autoconf-2.69
- # ./configure --prefix=/usr
- # make
- # make install
- # git clone https://github.com/twitter/twemproxy.git
- # cd twemproxy/
- # CFLAGS="-ggdb3 -O0" autoreconf -fvi && ./configure --prefix=/usr/local/twemproxy --enable-debug=log
- # make
- # make install
- # /usr/local/twemproxy/bin/nutcracker -t
- nutcracker: configuration file 'conf/nutcracker.yml' syntax is ok
- # cp conf/nutcracker.yml /usr/local/twemproxy
- # vim /usr/local/twemproxy/nutcracker.yml
- ....
- beta:
- listen: 0.0.0.0:22122
- hash: fnv1a_64
- hash_tag: "{}"
- distribution: ketama
- auto_eject_hosts: false
- timeout: 400
- redis: true
- servers:
- - 192.168.5.73:5380:1 server1
- - 192.168.5.73:5379:1 server2
- ....
启动命令
1. 调试启动
- # /usr/local/twemproxy/bin/nutcracker -c /usr/local/twemproxy/nutcracker.yml
2.守护进程启动
- # /usr/local/twemproxy/bin/nutcracker -d -c /usr/local/twemproxy/nutcracker.yml
测试twemproxy
- # /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 22122
- redis 127.0.0.1:22122> set key1 1
- OK
- redis 127.0.0.1:22122> get key1
- "1"
- redis 127.0.0.1:22122> quit
- [root@localhost ~]# /usr/local/redis/bin/redis-cli -h 192.168.5.73 -p 5379
- redis 192.168.5.73:5379> get key1
- (nil)
- redis 192.168.5.73:5379> quit
- [root@localhost ~]# /usr/local/redis/bin/redis-cli -h 192.168.5.73 -p 5380
- redis 192.168.5.73:5380> get key1
- "1"
- redis 192.168.5.73:5380> quit