轻量级 memcached缓存代理商 twemproxy实践
Profile
本文内容脑图如下:
本文内容脑图
文章共 533字,阅读大约需要 2分钟 !
概 述
twemproxy(nutcracker) 是 Twitter开源的轻量级 memcached / redis 代理商服务器,本质就是一个集群管理工具,主要用来弥补 Redis和 Memcached对集群管理的不足,其完成的最大功劳就是通过在后台减少同缓存服务器的连接数从而添加吞吐量。我们将 Twemproxy看成一个老大哥,背后 Carry着一群 memcached / redis实例小弟,如此看来,某一程序上也相似于 memcached / redis 的HA。
本文先实践一波让 twemproxy 来 Carry一群 memcached小弟时的工作情况。
注: 本文首发于 My Personal Blog:CodeSheep·程序羊,欢迎光临 小站
环境准备
准备三台节点:
| 节点 | OS | 角色 |
|---|---|---|
| 192.168.199.77 | CentOS 7.4 | 部署 memcached1实例 |
| 192.168.199.78 | CentOS 7.4 | 部署 memcached2实例 |
| 192.168.199.79 | CentOS 7.4 | 部署 twemproxy代理商服务器 |
memcached 部署
- 安装
yum install memcached- 作为后端服务运行之
memcached -u root -p 11211 -m 64m -dtwemproxy 部署
- 安装 m4工具
wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gztar -zvxf m4-1.4.9.tar.gzcd m4-1.4.9./configuremakemake install- 安装 autoconf 工具
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gztar zxvf autoconf-2.69.tar.gzcd autoconf-2.69./configure --prefix=/usr/make && make install- 安装 twemproxy代理商
wget twitter/twemproxy/archive/master.zipunzip master.zipmv twemproxy-master twemproxymv twemproxy /usr/local/cd /usr/local/cd twemproxy/autoreconf -fvi./configure --enable-debug=fullmakemake install- 查看 twemproxy帮助
nutcracker -h[root@localhost ~]# nutcracker -hThis is nutcracker-0.4.1Usage: 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配置文件
vim /usr/local/twemproxy/conf/nutcracker.yml修改配置文件 nutcracker.yml
memcached: listen: 127.0.0.1:22121 hash: fnv1a_64 distribution: ketama timeout: 400 backlog: 1024 preconnect: true auto_eject_hosts: true server_retry_timeout: 30000 server_failure_limit: 3 servers: - 192.168.199.77:11211:1 - 192.168.199.78:11211:1- 启动 tewmproxy服务
nutcracker -d -c /usr/local/twemproxy/conf/nutcracker.yml- 检查启动情况
[root@localhost ~]# netstat -nltp | grep nutcrackertcp 0 0 0.0.0.0:22222 0.0.0.0:* LISTEN 12737/nutcracker tcp 0 0 192.168.199.79:22121 0.0.0.0:* LISTEN 12737/nutcracker数据读/写测试
- 首先通过 twemproxy代理商来写缓存
一连存入了 6个key
[root@localhost conf]# telnet localhost 22121Trying ::1...telnet: connect to address ::1: Connection refusedTrying 127.0.0.1...Connected to localhost.Escape character is '^]'.set key1 0 0 11STOREDset key2 0 0 12STOREDset key3 0 0 13STOREDset key4 0 0 14STOREDset key5 0 0 15STOREDset key6 0 0 16STORED- 查看发现所有缓存都写到了 memcached2中
[root@localhost ~]# telnet 127.0.0.1 11211Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.get key1VALUE key1 0 11ENDget key2 VALUE key2 0 12ENDget key3VALUE key3 0 13ENDget key4VALUE key4 0 14ENDget key5VALUE key5 0 15ENDget key6VALUE key6 0 16END- 接下来断开 memcached2
[root@localhost ~]# ps -aux | grep memroot 634 0.0 0.0 326588 1960 ? Ssl 15:58 0:00 memcached -u root -p 11211 -m 64m -droot 704 0.0 0.0 112676 984 pts/0 S+ 16:01 0:00 grep --color=auto mem[root@localhost ~]# kill -9 634- 继续通过 twemproxy代理商来写缓存
[root@localhost conf]# telnet localhost 22121Trying ::1...telnet: connect to address ::1: Connection refusedTrying 127.0.0.1...Connected to localhost.Escape character is '^]'.set key9 0 0 19STORED[root@localhost conf]# - 此时去memcached1查看:
[root@localhost ~]# telnet 127.0.0.1 11211Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.get key9VALUE key9 0 19END我们发现 memcached2断开后,缓存 key9写到了 memcached1中,而对于客户来说,因为是跟 twemproxy代理商交互,因而并不能感觉到后台 memcached2实例的下线
- 我们再重新启动 memcached2
而后再继续通过代理商写数据:
[root@localhost conf]# telnet localhost 22121Trying ::1...telnet: connect to address ::1: Connection refusedTrying 127.0.0.1...Connected to localhost.Escape character is '^]'.set key10 0 0 1xSTOREDset key11 0 0 1ySTORED- 而后发现数据又写到 memcached2中了
[root@localhost ~]# telnet 127.0.0.1 11211Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.get key10 VALUE key10 0 1xENDget key11VALUE key11 0 1yEND从上面这个试验过程可以看出,一台 memcached实例挂掉后,twemproxy 能自动移除之;而恢复后,twemproxy 能够自动识别并重新加入到 memcached 组中重新使用
后 记
因为能力有限,若有错误或者者不当之处,还请大家批评指正,一起学习交流!
- My Personal Blog:CodeSheep 程序羊
- 我的半年技术博客之路
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 轻量级 memcached缓存代理商 twemproxy实践
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 轻量级 memcached缓存代理商 twemproxy实践