轻量的Memcached署理Twemproxy的布置51CTO博客 - 凯时娱乐

轻量的Memcached署理Twemproxy的布置51CTO博客

2019年03月01日12时11分39秒 | 作者: 浩轩 | 标签: 署理,发动,效劳 | 浏览: 1353

轻量的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 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

 

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 -h
This 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.yml
memcached:
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/nutcracker

1. 新增界说daemo

daemon="/usr/local/twemproxy/sbin/nutcracker"

2. 替换一切

daemon user ${USER} ${prog} $OPTIONS

${daemo} $OPTIONS
chkconfig add nutcracker
chkconfig level 35 nutcracker on
chkconfig list nutcracker
vi /etc/profile

在里面参加:

export PATH="$PATH:/usr/local/twemproxy/sbin"
. /etc/profile
echo $PATH

 

6、测验装备并发动效劳

nutcracker -t -c /etc/nutcracker/nutcracker.yml
service nutcracker start

 

数据写入测验

[root@test01 init.d]# telnet 192.168.11.55 11211
Trying 192.168.11.55...
Connected to 192.168.11.55.
Escape character is ^].
set key1 0 0 1
1
STORED
set key2 0 0 2
22
STORED
set key3 0 0 3
333
STORED
set key4 0 0 4
4444
STORED
set key5 0 0 5
55555
STORED
quit
Connection closed by foreign host.
[root@test01 ~]# telnet 192.168.11.51 11211
Trying 192.168.11.51...
Connected to 192.168.11.51.
Escape character is ^].
get key1
END
get key2
END
get key3
END
get key4
END
get key5
END
quit
Connection closed by foreign host.
[root@test01 ~]# telnet 192.168.11.51 11212
Trying 192.168.11.51...
Connected to 192.168.11.51.
Escape character is ^].
get key1
END
get key2
END
get key3
END
get key4
END
get key5
END
quit
Connection closed by foreign host.
[root@test02 ~]# telnet 192.168.11.52 11211
Trying 192.168.11.52...
Connected to 192.168.11.52.
Escape character is ^].
get key1
END
get key2
END
get key3
END
get key4
END
get key5
END
quit
Connection closed by foreign host.
[root@test02 ~]# telnet 192.168.11.52 11212
Trying 192.168.11.52...
Connected to 192.168.11.52.
Escape character is ^].
get key1
VALUE key1 0 1
1
END
get key2
VALUE key2 0 2
22
END
get key3
VALUE key3 0 3
333
END
get key4
VALUE key4 0 4
4444
END
get key5
VALUE key5 0 5
55555
END
quit
Connection closed by foreign host.


可以看到数据全部从52的11212端口获取到。

现在停掉52的11212端口效劳。

持续往署理写数据。

[root@test03 init.d]# telnet 192.168.11.55 11211
Trying 192.168.11.55...
Connected to 192.168.11.55.
Escape character is ^].
set username 0 0 6
ryanxu
STORED
set aa 0 0 2
aa
STORED
quit
Connection closed by foreign host.
[root@test03 init.d]# telnet 192.168.11.55 11211
Trying 192.168.11.55...
Connected to 192.168.11.55.
Escape character is ^].
get key1
SERVER_ERROR Connection refused
Connection closed by foreign host.
[root@test03 init.d]# telnet 192.168.11.55 11211
Trying 192.168.11.55...
Connected to 192.168.11.55.
Escape character is ^].
get key1
SERVER_ERROR Connection refused
Connection closed by foreign host.
[root@test03 init.d]# telnet 192.168.11.55 11211
Trying 192.168.11.55...
Connected to 192.168.11.55.
Escape character is ^].
get key1
END
get key2
END
get key3
END
quit
Connection closed by foreign host.

 

一台memcached 挂掉后,twemproxy 可以主动去除。康复后,twemproxy 可以主动识别、康复并从头参加到 memcached 组中从头运用。


问题总结


1).yml装备文件中每个参数值对分隔符”:”后需求有一个空格。

2)不同层次的参数需求缩进区别,最好运用tab键缩进,不然nutcracker进程不能发动。

3)在auto_eject_hosts: true的时分,封闭一个memcached实例后,写入数据仍是提示“(error) ERR Connection refused”。这个与server_retry_timeout参数设置太小有关,30000是一个很好的挑选。



版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯时娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章