轻量的Memcached代理Twemproxy的部署
轻量的Memcached代理Twemproxy的部署Twemproxy(又称为nutcracker)是一个轻量级的Redis和Memcached代理,主要用来减少对后端缓存服务器的连接数。由Twitter开源出
轻量的Memcached代理Twemproxy的部署
Twemproxy(又称为nutcracker)是一个轻量级的Redis和Memcached代理,,主要用来减少对后端缓存服务器的连接数。由Twitter开源出来的缓存服务器集群管理工具,主要用来弥补Redis和Memcached对集群(cluster)管理指出的不足。
Twemproxy是一个快速的单线程代理程序,支持Memcached ASCII协议和更新的Redis协议。
Twemproxy最了不起的地方就在于它能在节点失败的时候卸载它,然后可以在一段时间以后重新尝试(随即)连接,又或者可以严格按照配置文件中写的键与服务器之间对应关系进行连接。
安装部署
现有测试机:192.168.11.51/52/68
先在51和52测试机上安装好libevent和memcached,分别启动两个memcached实例;
然后在68上安装好twemproxy,配置好参数,启动twemproxy实例。
安装和启动memcached实例
详细步骤,请参见之前的博文《Memcached 1.4.22安装和配置》,分别启动如下实例:
/usr/local/bin/memcached -d -m 128 -u memcached -l 192.168.11.51 -p 11211 -c 1024 -P /var/run/memcached/memcached1.pid /usr/local/bin/memcached -d -m 128 -u memcached -l 192.168.11.51 -p 11212 -c 1024 -P /var/run/memcached/memcached2.pid /usr/local/bin/memcached -d -m 128 -u memcached -l 192.168.11.52 -p 11211 -c 1024 -P /var/run/memcached/memcached1.pid /usr/local/bin/memcached -d -m 128 -u memcached -l 192.168.11.52 -p 11212 -c 1024 -P /var/run/memcached/memcached2.pid
安装和启动twemproxy实例
1、安装autoconf
cd /tmp wget tar zxvf autoconf-2.69.tar.gz cd autoconf-2.69 ./configure --prefix=/usr/ make && make install
2、安装twemproxy
cd /tmp wget https://github.com/twitter/twemproxy/archive/master.zip unzip master.zip -d /usr/local/ cd /usr/local mv twemproxy-master twemproxy cd twemproxy CFLAGS="-ggdb3 -O0" autoreconf -fvi ./configure --prefix=/usr/local/twemproxy --enable-debug=log make && make install
3、查看帮助
[root@test01 twemproxy]# ./sbin/nutcracker -hThis is nutcracker-0.4.0 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)
4、修改配置文件
mkdir /etc/nutcracker cp ./conf/nutcracker.yml /etc/nutcracker/ vi /etc/nutcracker/nutcracker.ymlmemcached: listen: 192.168.11.55:22121 hash: fnvla_64 distribution: ketama timeout: 400 backlog: 1024 preconnect: true auto_eject_hosts: true server_retry_timeout: 30000 server_failure_limit: 3 servers: - 192.168.11.51:11211:1 - 192.168.11.51:11212:1 - 192.168.11.52:11211:1 - 192.168.11.52:11212:1参数解析:
listen: 启动twemproxy服务的IP和端口
hash: 指定具体的哈希函数
distribution: 指定具体的哈希算法
preconnect: 一个布尔值,如果该控件的nutcracker前端连接在这个池上的所有服务器进程启动。默认值为假
auto_eject_hosts: 是否在结点无法响应的时候临时摘除结点
server_retry_timeout: 重试的时间(毫秒)
server_failure_limit: 结点故障多少次就算摘除掉
servers: 下面表示所有的memcached节点(IP:端口号:权重)
5、配置以服务启动
cp ./scripts/nutcracker.init /etc/init.d/nutcracker chmod 755 /etc/init.d/nutcracker vi /etc/init.d/nutcracker1. 新增定义daemo
daemon="/usr/local/twemproxy/sbin/nutcracker"2. 替换所有
daemon --user ${USER} ${prog} $OPTIONS为
${daemo} $OPTIONSchkconfig --add nutcracker chkconfig --level 35 nutcracker on chkconfig --list nutcrackervi /etc/profile在里面加入:
export PATH="$PATH:/usr/local/twemproxy/sbin". /etc/profile echo $PATH
6、测试配置并启动服务
nutcracker -t -c /etc/nutcracker/nutcracker.yml service nutcracker start