转载

Twemproxy

Twemproxy 是一个快速的单线程代理程序,支持 Memcached ASCII协议和更新的Redis协议。可以通过它减少Memcached或Redis服务器所打开的连接数,twemproxy的特性如下:

支持失败节点自动删除   可以设置重新连接该节点的时间  可以设置连接多少次之后删除该节点  该方式适合作为cache存储  支持设置HashTag   通过HashTag可以自己设定将两个KEYhash到同一个实例上去。  减少与redis的直接连接数   保持与redis的长连接  可设置代理与后台每个redis连接的数目  自动分片到后端多个redis实例上   多种hash算法(部分还没有研究明白)  可以设置后端实例的权重  避免单点问题   可以平行部署多个代理层.client自动选择可用的一个  支持redis pipelining request  支持状态监控   可设置状态监控ip和端口,访问ip和端口可以得到一个json格式的状态信息串  可设置监控信息刷新间隔时间  高吞吐量   连接复用,内存复用。  将多个连接请求,组成reids pipelining统一向redis请求。

下面就看看这个神器的安装过程及用法:

1 下载

git clone https://github.com/twitter/twemproxy.git

2 安装其他依赖

apt-get install libtool libsysfs-dev autoreconf

3 编译安装

cd twemproxy ./configure --prefix=/opt/twemproxy make make install

4 配置

mkdir /opt/twemproxy/conf/ cp conf/nutcracker.yml /opt/twemproxy/conf/

5 修改nutcracker.yml配置文件

alpha:   listen: 127.0.0.1:22121   hash: fnv1a_64   distribution: ketama   auto_eject_hosts: true   redis: true   server_retry_timeout: 3000   server_failure_limit: 2   servers:    - 127.0.0.1:9000:1    - 127.0.0.1:9001:1

6 启动redis实例

/opt/redis-cluster/bin/redis-server /opt/twemproxy/conf/redis-9000.conf  /opt/redis-cluster/bin/redis-server /opt/twemproxy/conf/redis-9001.conf

7 启动twemproxy

/opt/twemproxy/sbin/nutcracker -c /opt/twemproxy/conf/nutcracker.yml
Twemproxy

8 测试

Twemproxy

9 看看twemproxy的配置文件选项

listen: twemproxy监听的地址和端口(ip:port)或者是一个绝对路径sock文件 (/var/run/nutcracker.sock) client_connections: 允许多少redis client连接上来,默认是没有限制的   hash: 数据分片的hash算法,可以是以下值:  one_at_a_time  md5  crc16  crc32 (crc32 implementation compatible with libmemcached)  crc32a (correct crc32 implementation as per the spec)  fnv1_64  fnv1a_64  fnv1_32  fnv1a_32  hsieh  murmur  jenkins hash_tag: 一个由两个字符组成的字符串,在key进行hash的时候是key的一部分。例如 "{}" or "$$"。 Hash tag enable mapping different keys to the same server as long as the part of the key within the tag is the same. distribution: 可以的分发模式,值可以是以下:  ketama  modula  random timeout: 连接后端服务或者等待后端服务响应的超时时间 backlog: TCP backlog(连接队列的大小),默认是512。 backlog队列总和=未完成三次握手队列+已经完成三次握手队列 preconnect: 一个boolen值,用来控制twemproxy是否在redis池中的服务启动前进行连接,默认是false redis: 一个boolen值,用来控制一个服务器池是传输redis协议还是memcache协议,默认是false。 redis_auth: 连接时需要认证 redis_db: 在这个redis服务器池中使用哪个DB,Twemproxy默认连接DB 0 server_connections: 每个服务器的最大连接数,默认我们打开 1个连接 auto_eject_hosts: 一个boolean值,控制一个server达到server_failure_limit故障次数时的动作。默认是false。 server_retry_timeout: 尝试重连后端服务器的超时时间, 默认是 30000 msec. server_failure_limit: 尝试连接后端服务器的次数,默认是2. servers: 一个服务器地址列表,由port和权重构成(ip:port:weight) 

10 nutcracker命令的用法

Options: -h, –help                        : 查看帮助文档,显示命令选项 -V, –version                   : 查看nutcracker版本 -t, –test-conf                  : 测试配置脚本的正确性 -d, –daemonize              : 以守护进程运行 -D, –describe-stats         : 打印状态描述 -v, –verbosity=N            : 设置日志级别 (default: 5, min: 0, max: 11) -o, –output=S                 : 设置日志输出路径,默认为标准错误输出 (default: stderr) -c, –conf-file=S               : 指定配置文件路径 (default: conf/nutcracker.yml) -s, –stats-port=N            : 设置状态监控端口,默认22222 (default: 22222) -a, –stats-addr=S            : 设置状态监控IP,默认0.0.0.0 (default: 0.0.0.0) -i, –stats-interval=N       : 设置状态聚合间隔 (default: 30000 msec) -p, –pid-file=S                 : 指定进程pid文件路径,默认关闭 (default: off) -m, –mbuf-size=N          : 设置mbuf块大小,以bytes单位 (default: 16384 bytes)

果然简单易用,目前来看是比原生的cluster好用一些,不过被反超只是时间问题......

正文到此结束
Loading...