码迷,mamicode.com
首页 > 其他好文 > 详细

twemproxy安装配置(memcahe代理)

时间:2015-04-10 11:40:11      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:redis memcache 代理 twemproxy nutcracker

twemproxy介绍与安装配置
简单来说,twemproxy是twitter开发的一个redis代理proxy。如果使用过nginx的反向代理或者mysql的代理工具,如amoeba,你也能很快理解这个redis proxy。如果你第一次接触到这个概念,不理解proxy,那就举个例子吧-: 。你可以把公司前台的MM看作一个proxy,你是个送快递的,你可以通过这个妹子替你代理把你要送达的包裹给公司内部的人,而你不用知道公司每个人座位在哪里。Twemproxy可以把多台redis server当作一台使用,开发人员通过twemproxy访问这些redis servers 的时候不用关心到底去哪一台redis server读取k-v数据或者把k-v数据更新到数据集中。

通过Twemproxy可以使用多台服务器来水平扩张redis服务,可以有效的避免单点故障问题。虽然使用Twemproxy需要更多的硬件资源和在redis性能有一定的损失(twitter测试约20%),但是能够提高整个系统的HA也是相当划算的。比如我所在的公司,只使用一台redis server进行读写(前端台web servers共用),但是还有一台slave server一直在同步这台生产服务器的数据。这样做就是为了防止这台单一的生产服务器出现故障时能够有一个“备胎”,可以把前端的redis数据读写请求切换到从服务器上,web程序因而不需要直接去访问mysql数据库。再借助于haproxy(又是proxy,^.^)或者VIP技术可以实现一个简单的HA方案,可以避免单点故障。但是这种简单的Master-Slave“备胎”方案不能扩张整个redis的容量[如果用系统内存大小衡量,且不考虑内存不足时把数据swap到磁盘上],最大容量由所有的redis servers中最小内存决定的【木桶的短板】。

Twemproxy可以把数据sharding到多台服务器的上(看见有人说Twemproxy中的服务器可以共享数据,难以理解!share or shard?),每台服务器存储着整个数据集的一部分。因而,当某一台redis服务器宕机了,那么也就失去了一部分数据。如果借助于redis的master-slave replication,能保证在任何一台redis不能工作情况下,仍然能够保证能够存在一个整个数据集的完全覆盖,那么整个redis  group(或者称作cluster)仍然能够正常工作。

介绍:
twemproxy,也叫nutcraker。是一个twtter开源的一个redis和memcache代理服务器。
redis作为一个高效的缓存服务器,非常具有应用价值。但是当使用比较多的时候,就希望可以通过某种方式 统一进行管理。
避免每个应用每个客户端管理连接的松散性。同时在一定程度上变得可以控制。
作用:
通过代理的方式减少缓存服务器的连接数
自动在多台缓存服务器间共享数据
通过不同的策略与散列函数支持一致性散列
通过配置的方式禁用失败的结点
运行在多个实例上,客户端可以连接到首个可用的代理服务器
支持请求的流式与批处理,因而能够降低来回的消耗



1.安装autoconf
#autoconf下载地址:http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
cd /root/soft
tar zxvf autoconf-2.69.tar.gz
cd autoconf-2.69
 ./configure
make
make install

yum -y install curl  curl-devel  zlib-devel  openssl-devel perl   tcl cpio expat-devel gettext-devel


3.安装twemproxy
cd /root/soft
wget https://twemproxy.googlecode.com/files/nutcracker-0.3.0.tar.gz
tar zxvf nutcracker-0.3.0.tar.gz
./configure --prefix=/usr/local/twemproxy
make && make install
src/nutcracker -h
mkdir /usr/local/twemproxy/conf
cp src/nutcracker /usr/local/nutcracker/bin
cp conf/* /usr/local/nutcracker/conf
4.修改配置文件

vi /usr/local/nutcracker/etc/nutcracker.yml  #添加proxy配置文件
gamma:
  listen: 192.168.4.215:11211
  hash: crc32a
  distribution: ketama
  timeout: 400
  backlog: 1024
  preconnect: true
  auto_eject_hosts: true
  server_retry_timeout: 2000
  server_failure_limit: 3
  servers:
      - 192.168.4.213:11211:1
      - 192.168.4.214:11211:1
#备注:
  hash: crc32a                   # crc32a表示算法,我们老大要求用这个算法,线上就用了它。
  auto_eject_hosts: true        #是否在结点无法响应的时候临时摘除结点
  server_retry_timeout: 2000    #重试的时间(毫秒)
  server_failure_limit: 3    #结点故障多少次就算摘除掉
5.启动twemproxy服务
 /usr/local/nutcracker/bin/nutcracker -t -c /usr/local/nutcracker/conf/nutcracker.yml  #测试配置文件
 /usr/local/nutcracker/bin/nutcracker -d -c /usr/local/nutcracker/conf/nutcracker.yml
6.测试
#往代理缓存192.168.4.215的11211端口输入一个键值key1 为zhou
[root@localhost conf]# telnet 192.168.4.215 11211
Trying 192.168.4.215...
Connected to 192.168.4.215.
Escape character is ‘^]‘.
set key1 0 60 4
zhou
STORED
get key1
VALUE key1 0 4
zhou
END

备注:
#我们向代理插入的key1值有可能在客户端任意一台机器上面。我们可以分别进入每一台去get这个值。当你看到其中有一台有数据,说明代理就成功了。这样我们就可以利用代理存储更多的数据。记住这一点,缓存是不需要高可用的。

本文出自 “成┾%¥☆风” 博客,请务必保留此出处http://lovesource.blog.51cto.com/1454821/1630812

twemproxy安装配置(memcahe代理)

标签:redis memcache 代理 twemproxy nutcracker

原文地址:http://lovesource.blog.51cto.com/1454821/1630812

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!