linux环境-redis代理twemproxy的安装

  • 安装twemproxy
    • 1、下载redis代理源码到本地
    • 2、安装
    • 3、集群搭建

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
./configuremake  -- 执行完make  编译  之后,一定会有可执行程序出现cd src -- 能看到可执行程序:nutcrackercd ..cd scripts -- 能看到nutcracker.init文件,可以看一下cat nutcracker.initcp nutcracker.init /etc/init.d/twemproxy   -- 拷贝文件到这个路径下的这个文件里cd /etc/init.d/ll chmod +x twemproxycat 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/srccp 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:1alpha:listen: 127.0.0.1:22121hash: fnv1a_64distribution: ketamaauto_eject_hosts: trueredis: trueserver_retry_timeout: 2000server_failure_limit: 1servers:- 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 shutdowncd /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 connection127.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  ]

搭建完毕 ;)

twemproxy的安装及集群搭建相关推荐

  1. ActiveMQ此例简单介绍基于docker的activemq安装与集群搭建

    ActiveMQ拓展连接 此例简单介绍基于Docker的activemq安装与集群搭建 一 :安装 1.获取activemq镜像 docker pull webcenter/activemq 2.启动 ...

  2. RabbitMQ的安装及集群搭建方法

    转自:http://blog.csdn.net/u013256816/article/details/53524766 RabbitMQ安装 1 安装erlang 下载地址:http://www.er ...

  3. Redis基于Linux系统的安装与集群搭建

    最近项目里需要引入Redis,这里记录下Redis的安装.这里以centos7为例,首先我们需要确保防火墙关闭 systemctl status firewalld.service //查看防火墙状态 ...

  4. redis安装、集群搭建等

    1 Redis介绍 1.1 什么是NoSql 为了解决高并发.高可扩展.高可用.大数据存储问题而产生的数据库解决方案,就是NoSql数据库. NoSQL,泛指非关系型的数据库,NoSQL即Not-On ...

  5. 基于CentOS的分布式文件系统GlusterFS安装、集群搭建和运维

    一.准备工作 1.1 glusterfs的发展史 2011年10月04日,红帽收购Gluster. 2014年4月30日,红帽公司以1.75亿美元的价格将Ceph的企业级产品提供商Inktank收入囊 ...

  6. 【菜鸟教程】Kafka消息队列入门上(安装、集群搭建、基本命令行操作)

    概述 定义 Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域. 消息队列 什么是消息队列呢? 例如在网站注册时,一般是同步的,当接收到 ...

  7. linux系统中MongoDB数据库安装及分片集群搭建

    史上最全的mongodb分片集群搭建,从介绍安装到集群搭建授权,你再也找不到比他更加详细的资料了,未经允许禁止转载!! 一.简介 MongoDB是一个便于开发和扩展设计的文档数据库,属于NoSQL数据 ...

  8. Hadoop3集群搭建之——hive添加自定义函数UDTF (一行输入,多行输出)

    上篇: Hadoop3集群搭建之--虚拟机安装 Hadoop3集群搭建之--安装hadoop,配置环境 Hadoop3集群搭建之--配置ntp服务 Hadoop3集群搭建之--hive安装 Hadoo ...

  9. ES7.10集群搭建及EFK搭建教程

    本文主要介绍 Elasticsearch 集群的搭建.通过在一台服务器上创建 3 个 ES 实例来创建一个ES 集群. 以下内容参考详尽的 Elasticsearch7.X 安装及集群搭建教程, ES ...

最新文章

  1. java常量信用_JAVA常量
  2. 成功解决TypeError: 'float' object cannot be interpreted as an integer
  3. vscode技巧、vscode教程、vscode使用技巧
  4. 关于nginx配置的不完全总结
  5. oracle创建表之前判断表是否存在,如果存在则删除已有表
  6. mysql 黑框框 叫什么_Coreldraw菜单黑框框/黑块解决办法
  7. 有计算机考试励志的文案,关于考试的句子励志
  8. 故障转移群集 SQLSERVER解决方案
  9. HTML 制作一个通讯录
  10. java 映射类的方法_java什么是映射
  11. 无线投影服务器连接投影仪,无线投屏器怎么与投影机连接
  12. vue 停止页面滚动_Vue关于滚动停止的监听方法
  13. 一.数组(10)274. H 指数(不怎么理解)
  14. 【Vtt2Srt】VTT转SRT工具 Vtt2Srt
  15. 工资待遇情况的分析研究
  16. 斐讯k2刷不死breed K2 22.5.11.14
  17. 【电源专题】LDO基础——压降
  18. layui选项卡切换及右键的动态操作(新增、切换、删除)
  19. sql拼接同一字段中的数据_用SQL将Oracle中同一列的多行记录拼接成一个字符
  20. Servlet Jsp(个人笔记)

热门文章

  1. 1000题如何高效利用
  2. 使用flask,关于WARNING: This is a development server. Do not use it in a production deployment问题
  3. ant-design-vue 表单验证和 validator 自定义表单验证
  4. 迷你图+创建数据图表
  5. 安全扫描失败无法上传_暴雪游戏账号密码与安全令同时被黑,如何拿回账号?...
  6. ES多种搜索方式总结
  7. 专访网易云:数字企业九层之台,起于“全栈云” 1
  8. 浏览器title中加图标
  9. 《剑与远征》设计思路解读:“挂机”“简单”与“单机”
  10. 在使用ssh连接Linux服务器时,如何实现多窗口切换使用?Screen是个好工具