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