redis集群实现(八)redis+twemproxy集群
2017-08-30 16:51
609 查看
Redis的确是一个非常高效的缓存服务器,但是单台redis服务器的内存管理能力有限,如果一味的加大内存的话会导致redis服务器的性能下降,所以就必须要搭建redis集群来提供服务。在redis官方在3.0.0版本给出集群方案之前,大部分的企业都使用twemproxy组件来进行redis集群的搭建。
twemproxy 通过引入一个代理层,可以将其后端的多台redis进行统一管理与分配,使应用程序只需要在twemproxy 上进行操作,而不用关心后面具体有多少个真实的redis服务器。
接下来我们来搭建一个twemproxy代理的redis,感受一把redis + twemproxy的魅力。
我们首先搭建起来6个节点的redis集群,具体步骤见http://blog.csdn.net/sanwenyublog/article/details/52946669
搭建twemproxy,步骤如下
[cpp] view
plain copy
#编译twemproxy需要用到automake和libtool两个编译工具包
sudo apt-get install automake
sudo apt-get install libtool
git clone https://github.com/twitter/twemproxy.git
cd twemproxy
autoreconf -fvi
./configure --enable-debug=log
make
这样,我们就安装成功了,如果我们输入nutcracker -h会有如下的打印结果,就说明我们安装twemproxy成功。
[cpp] view
plain copy
This is nutcracker-0.4.1
Usage: nutcracker [-?hVdDt] [-v verbosity level] [-o output file]
[-c conf file] [-s stats port] [-a stats addr]
[-i stats interval] [-p pid file] [-m mbuf size]
Options:
-h, --help : this help
-V, --version : show version and exit
-t, --test-conf : test configuration for syntax errors and exit
-d, --daemonize : run as a daemon
-D, --describe-stats : print stats description and exit
-v, --verbose=N : set logging level (default: 5, min: 0, max: 11)
-o, --output=S : set logging file (default: stderr)
-c, --conf-file=S : set configuration file (default: conf/nutcracker.yml)
-s, --stats-port=N : set stats monitoring port (default: 22222)
-a, --stats-addr=S : set stats monitoring ip (default: 0.0.0.0)
-i, --stats-interval=N : set stats aggregation interval in msec (default: 30000 msec)
-p, --pid-file=S : set pid file (default: off)
-m, --mbuf-size=N : set size of mbuf chunk in bytes (default: 16384 bytes)
然后我修改配置文件,启动twemproxy作为redis的代理。在conf/nutcracker.yml有配置文件的模板,我们照着修改下就可以了,修改后的配置文件如下
[cpp] view
plain copy
beta:
listen: 127.0.0.1:22122
hash: fnv1a_64
hash_tag: "{}"
distribution: ketama
auto_eject_hosts: false
timeout: 400
redis: true
servers:
- 127.0.0.1:7000:1 server1
- 127.0.0.1:7001:1 server2
- 127.0.0.1:7002:1 server3
- 127.0.0.1:7003:1 server4
- 127.0.0.1:7004:1 server5
- 127.0.0.1:7005:1 server6
执行如下命令启动twemproxy
[cpp] view
plain copy
nutcracker -d -c conf/nutcracker.yml
我们测试下twemproxy是否可用
[cpp] view
plain copy
ubuntu@ubuntu-virtual-machine:~/redis-3.0.0/src$ redis-cli -p 22122 -c
127.0.0.1:22122> set key value
-> Redirected to slot [12539] located at 192.168.39.153:7005
OK
192.168.39.153:7005> get key
"value"
然后进行twemproxy和redis后端的benchmark对比
[cpp] view
plain copy
ubuntu@ubuntu-virtual-machine:~/redis-3.0.0/src$ redis-benchmark -h 127.0.0.1 -p 22122 -c 100 -t set -d 100 -l
SET
35790.98 requests per second
而redis后端的性能是
SET
64935.07 requests per second
说明twemproxy的代理使得redis性能有所损失,但是为了使redis能够支持集群,损失一点性能还是可以接受的。
twemproxy 通过引入一个代理层,可以将其后端的多台redis进行统一管理与分配,使应用程序只需要在twemproxy 上进行操作,而不用关心后面具体有多少个真实的redis服务器。
接下来我们来搭建一个twemproxy代理的redis,感受一把redis + twemproxy的魅力。
我们首先搭建起来6个节点的redis集群,具体步骤见http://blog.csdn.net/sanwenyublog/article/details/52946669
搭建twemproxy,步骤如下
[cpp] view
plain copy
#编译twemproxy需要用到automake和libtool两个编译工具包
sudo apt-get install automake
sudo apt-get install libtool
git clone https://github.com/twitter/twemproxy.git
cd twemproxy
autoreconf -fvi
./configure --enable-debug=log
make
这样,我们就安装成功了,如果我们输入nutcracker -h会有如下的打印结果,就说明我们安装twemproxy成功。
[cpp] view
plain copy
This is nutcracker-0.4.1
Usage: nutcracker [-?hVdDt] [-v verbosity level] [-o output file]
[-c conf file] [-s stats port] [-a stats addr]
[-i stats interval] [-p pid file] [-m mbuf size]
Options:
-h, --help : this help
-V, --version : show version and exit
-t, --test-conf : test configuration for syntax errors and exit
-d, --daemonize : run as a daemon
-D, --describe-stats : print stats description and exit
-v, --verbose=N : set logging level (default: 5, min: 0, max: 11)
-o, --output=S : set logging file (default: stderr)
-c, --conf-file=S : set configuration file (default: conf/nutcracker.yml)
-s, --stats-port=N : set stats monitoring port (default: 22222)
-a, --stats-addr=S : set stats monitoring ip (default: 0.0.0.0)
-i, --stats-interval=N : set stats aggregation interval in msec (default: 30000 msec)
-p, --pid-file=S : set pid file (default: off)
-m, --mbuf-size=N : set size of mbuf chunk in bytes (default: 16384 bytes)
然后我修改配置文件,启动twemproxy作为redis的代理。在conf/nutcracker.yml有配置文件的模板,我们照着修改下就可以了,修改后的配置文件如下
[cpp] view
plain copy
beta:
listen: 127.0.0.1:22122
hash: fnv1a_64
hash_tag: "{}"
distribution: ketama
auto_eject_hosts: false
timeout: 400
redis: true
servers:
- 127.0.0.1:7000:1 server1
- 127.0.0.1:7001:1 server2
- 127.0.0.1:7002:1 server3
- 127.0.0.1:7003:1 server4
- 127.0.0.1:7004:1 server5
- 127.0.0.1:7005:1 server6
执行如下命令启动twemproxy
[cpp] view
plain copy
nutcracker -d -c conf/nutcracker.yml
我们测试下twemproxy是否可用
[cpp] view
plain copy
ubuntu@ubuntu-virtual-machine:~/redis-3.0.0/src$ redis-cli -p 22122 -c
127.0.0.1:22122> set key value
-> Redirected to slot [12539] located at 192.168.39.153:7005
OK
192.168.39.153:7005> get key
"value"
然后进行twemproxy和redis后端的benchmark对比
[cpp] view
plain copy
ubuntu@ubuntu-virtual-machine:~/redis-3.0.0/src$ redis-benchmark -h 127.0.0.1 -p 22122 -c 100 -t set -d 100 -l
SET
35790.98 requests per second
而redis后端的性能是
SET
64935.07 requests per second
说明twemproxy的代理使得redis性能有所损失,但是为了使redis能够支持集群,损失一点性能还是可以接受的。
相关文章推荐
- Redis+twemproxy(nutcracker)实现Redis多集群方案
- 第一章:Redis+twemproxy+keepalive+ sentinel实现完整的redis集群方案实验
- twemproxy + redis + sentinel 实现redis集群高可用
- redis集群实现(八)redis+twemproxy集群
- keepalived+twemproxy部署redis高可用集群
- redis之proxy集群之twemproxy
- 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型
- Redis集群之twemproxy
- keepalived+twemproxy部署redis集群高可用
- twemproxy + redis 集群
- redis(10)、redis集群twemproxy
- Redis集群方案之Twemproxy+HAProxy+Keepalived+Sentinel+主从复制(待实践)
- 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型
- Redis+TwemProxy(nutcracker)集群方案部署记录
- keepalived+twemproxy部署redis集群高可用
- Redis+Twemproxy+HAProxy集群
- Redis 和 Memcached集群-Twemproxy
- 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型
- Redis+Twemproxy+HAProxy集群
- [redis集群] twemproxy + redis + sentinel