热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

twemproxy的安装及集群搭建

linux环境-redis代理twemproxy的安装安装twemproxy1、下载redis代理源码到本地2、安装3、集群搭建twemproxy(nutcracke


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 ]

搭建完毕 ;)


推荐阅读
  • 开发笔记:Memcached高性能内存对象缓存系统
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Memcached高性能内存对象缓存系统相关的知识,希望对你有一定的参考价值。一、Memcached概述 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • 相对于内存来说,磁盘的容量是非常大的,所以Linux内核实现了一个叫 内存交换 的功能--把某些进程的一些暂时用不到的内存页保存到磁盘中,然后把物理内存页分配给更紧急的用户使用,当 ... [详细]
  • 基于内存和 Redis 的两级 Java 缓存框架!
    👇👇关注后回复“进群”,拉你进程序员交流群👇👇Java两级缓存框架,可以让应用支持两级缓 ... [详细]
  • Redis学习笔记(二) .NET中使用Redis
    Redis是一个用的比较广泛的KeyValue的内存数据库,新浪微博、Github、StackOverflow等大型应用中都用其作为缓存,Redis的官网为http:redis.io。最 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • 一,织梦后台后台设置进入系统后台,在[系统基本参数]下面的性能选项卡当中,关于memcache进行如下配置:cfg_memcache_enable:是否启用memcache缓存,如果为否(N) ... [详细]
author-avatar
刘胜良昭桂家贤
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有