基于twemproxy的redis分布式应用

根据以往的测试结论,单个redis的实例的内存总量最好控制在8G以内(最大不能超过20G),而实际上应用对redis的内存的需求可能会远远大于8G,因此需要一个保持redis server性能不下降,但可以有效扩充redis server的容量的方案。


twemproxy是一个恰当的选择。


简介
twemproxy,也叫nutcraker。是一个twtter开源的一个redis和memcache代理服务器。

特点
• 支持失败节点自动删除
• 支持设置HashTag
• 减少与redis的直接连接数
• 自动分片到后端多个redis实例上
• 避免单点问题
• 可以平行部署多个代理层.client自动选择可用的一个
• 支持redis pipelining request
• 支持状态监控
• 高吞吐量

部署

参考网站: https://github.com/twitter/twemproxy

核心脚本:

git clone git://github.com/twitter/twemproxy.git
autoreconf -fvi
./configure --prefix=/usr/local --enable-debug=log
make && make install


帮助文档:

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, --verbosity=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)


启动脚本:

./bin/nutcracker -c /usr/local/twemproxy/conf/nutcracker_test.yml -s 22222 -d -o /usr/local/twemproxy/logs/nutcracker.log


依赖包
执行过程中可能遇到依赖包不存在或者版本过低的情况,主要有m4, autoconf, automake, libtool。手动安装过程如下:

安装m4

wget http://mirrors.kernel.org/gnu/m4/m4-1.4.17.tar.gz 
tar -xzvf m4-1.4.17.tar.gz 
cd m4-1.4.17 
./configure --prefix=/usr/local
make && make install


安装autoconf

wget http://mirrors.kernel.org/gnu/autoconf/autoconf-2.69.tar.gz 
tar -xzvf autoconf-2.69.tar.gz 
cd autoconf-2.69 
./configure --prefix=/usr/local
make && make install


安装automake

wget http://mirrors.kernel.org/gnu/automake/automake-1.14.tar.gz
tar xzvf automake-1.14.tar.gz 
cd automake-1.14 
./configure --prefix=/usr/local
make && make install


安装libtool

wget http://mirrors.kernel.org/gnu/libtool/libtool-2.4.tar.gz 
tar xzvf libtool-2.4.tar.gz 
cd libtool-2.4 
./configure --prefix=/usr/local
make && make install

猜你喜欢

转载自cpjsjxy.iteye.com/blog/2090313