twemproxy的安装及集群搭建

5 篇文章 0 订阅
5 篇文章 0 订阅


twemproxy(nutcracker)是一个快且轻量级的缓存代理,同时支持 memcached和 redis的协议【配置文件中有配置项redis,不配置的话默认false,代理memcached】,这种代理在简化客户端使用的同时,最主要是减少redis连接数,降低redis连接成本,服务器压力不至于过大,该代理同时支持集群分片(sharding),即允许水平扩展,对于分布式缓存架构是一个不错的选择。
twemproxy是通过一致性哈希或者其他类似的算法将数据分配到不同的redis服务机,许多redis都支持一致性哈希。
redis官方推荐代理就是:twemproxy,可参看:https://redis.io/topics/twitter-clone
以及 https://redis.io/topics/partitioning
小伙伴们,知道这意味着啥么?
;),意味着这个代理应该是目前使用较多的redis代理了,实际上,对于redis还有很多其他代理,比如:
predixy, codis, redis-cerberus,squirrel ,cellar act.

其中predixy是一款性能很高的redis代理,有一篇关于predixy性能测试的文章,可以让我们对他刮目相看:一款吊打众对手的redis代理

在这里插入图片描述
twemproxy是推特开发的redis以及memcached 代理,c开发的开源软件,根据apache2.0许可条款发布的,支持多个redis实例的自动分区,redis作为缓存时推荐使用它推特开发的这款代理。

那么这个代理的角色我大概能知道了,它是客户端和redis实例之间的接入层,客户端可以只连接该代理(连接的时候输入代理的端口即可),至于后面有多少redis实例,客户端不需要关注,由代理按一致性哈希或者其他类似算法(在github上 twemproxy开源项目里有介绍具体支持哪些hash算法,感兴趣的小伙伴可以去查阅),将数据分配存储到不同的redis实例。

安装twemproxy

安装参考github源码安装:github~twemproxy
需要留意的如下图:
在这里插入图片描述

1、下载redis代理源码到本地

cd soft/
mkdir twemproxy
cd twemproxy
git clone https://github.com/twitter/twemproxy.git
cd twemproxy

2、安装

安装提示 ,下一步要先安装这俩:automake , libtool

yum install automake libtool  -y 
ll
autoreconf -fvi   -- 这里可能会报错本地仓库版本过低,解决方案:使用aliyun镜像仓库拷贝到本地仓库,然后安装一个高版本的autoconf即可
-- 安装autoconf268 ,接着可继续执行,执行完之后多了configure    
`yum install autoconf268` ,
 
.....
autoreconf268 -fvi  
./configure
 make  -- 执行完make  编译  之后,一定会有可执行程序出现
 cd src -- 能看到可执行程序:nutcracker
 cd ..
 cd scripts -- 能看到nutcracker.init文件,可以看一下
 cat nutcracker.init
 cp nutcracker.init /etc/init.d/twemproxy   -- 拷贝文件到这个路径下的这个文件里
 cd /etc/init.d/
 ll 
 chmod +x twemproxy
 cat twemproxy

这里提示我们要把这个yml文件拷贝到/etc/nutcracker 这个路径下
在这里插入图片描述

另开个窗口吧,mkdir /etc/nutcracker
到源码目录:cd /usr/local/soft/twemproxy/twemproxy/conf
拷贝当前目录所有东西到后面这个路径下cp ./* /etc/nutcracker/

  cd  /etc/nutcracker/  -- 查看
  根据脚本内容得知,把src下的可执行程序拷贝一份到`/usr/bin/`目录下,然后在任何地方都可以执行 `nutcracker` 。
  cd /usr/local/soft/twemproxy/twemproxy/src
  cp nutcracker /usr/bin
  

根据系统里的这个脚本scripts/twemproxy ,根据脚本提示,把配置文件和可执行脚本放到指定的位置,就可以随处运行了。比如执行;

service  twemproxy   start/stop/status 

3、集群搭建

修改yml配置文件

cd /etc/nutcracker      ll   
cp nutcracker.yml nutcracker.yml.bak   -- 改之前备份下原件,修改配置文件,只留下第一个就可以
vi  nutcracker.yml
只保留第一部分,且追加 - 127.0.0.1:6380:1

alpha:
  listen: 127.0.0.1:22121
  hash: fnv1a_64
  distribution: ketama
  auto_eject_hosts: true
  redis: true
  server_retry_timeout: 2000
  server_failure_limit: 1
  servers:
   - 127.0.0.1:6379:1
   - 127.0.0.1:6380:1

只留第一个就行了,可以参看github上https://github.com/twitter/twemproxy
可参看Configuration,下面有redis =true ,因为默认它为false,表示代理memcached 。
在这里插入图片描述
再往下看,能看到这个,服务可以在servers里加
在这里插入图片描述

redis手动启动时,会拿当前目录作为持久化目录,所以创建文件夹并进入此文件夹,启动6379
cd /root/data/6379
[root@node02 6379]# pwd
/root/data/6379
redis-server --port 6379
-- 如果你的6379已经在跑了,可输入命令让其停止
redis-cli -p 6379 shutdown

cd /root/data/6380
redis-server --port 6380

新开窗口,输入service  twemproxy   start
[root@node02 ~]# service  twemproxy   start
Starting nutcracker: [  OK  ]

-- 根据yml文件里的端口22121,连的不是具体的redis实例,是推特代理的机器
[root@node02 ~]# redis-cli -p 22121
127.0.0.1:22121> set k1 abc
OK
127.0.0.1:22121> 

-- 连接redis客户端查看
新开窗口redis-cli6379
[root@node02 utils]# redis-cli -p 6379
127.0.0.1:6379> keys *
(empty list or set)

新开窗口redis-cli6380,发现数据落在80机器上了
[root@node02 ~]# redis-cli -p 6380
127.0.0.1:6380> keys *
1) "k2"
2) "k1"
127.0.0.1:6380> get k1
"abc"
127.0.0.1:6380> get k2
"ss"
127.0.0.1:6380> 
我们正常交互就是应该和代理机交互,至于数据落到哪台redis实例上,我们不必知道

不支持的功能:

如果要查全部redis实例的话,代价比较高,所以不支持
127.0.0.1:22121> keys * 
Error: Server closed the connection

127.0.0.1:22121> watch k1
Error: Server closed the connection
-- 执行事务也不支持
127.0.0.1:22121> multi
Error: Server closed the connection
-- 退出
exit 
停止服务
[root@node02 ~]# service twemproxy stop
Stopping nutcracker: [  OK  ]

搭建完毕 ;)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值