首页 > 数据库 >Redis 高可用: twemproxy实现缓存服务器分片集群

Redis 高可用: twemproxy实现缓存服务器分片集群

时间:2023-01-14 21:35:56浏览次数:62  
标签:twemproxy Redis 分片 redis etc usr centos222 autoconf root


Twemproxy 又称 nutcracker ,是一个memcache、redis协议的轻量级代理,一个用于sharding 的中间件。有了Twemproxy,客户端不直接访问Redis服务器,而是通过twemproxy 代理中间件间接访问。 twemproxy 为 twitter 开源产品(参考:​​https://github.com/twitter/twemproxy​​)


一个简单的 Twemproxy 分片测试:

Redis 高可用: twemproxy实现缓存服务器分片集群_redis

本人测试在一台服务器上,启动3个redis实例。

本机已经安装了一个redis 实例(192.168.1.222 6379),现在再开启两个实例。


# 创建新的 redis 目录

[root@centos222 ~]# mkdir -p /var/lib/redis/6380 /var/lib/redis/6381


# 复制2份新的配置文件

[root@centos222 ~]# cp /etc/redis/6379.conf /etc/redis/6380.conf
[root@centos222 ~]# cp /etc/redis/6379.conf /etc/redis/6381.conf


#

分别修改配置端口及文件位置(或者批量替换修改 %s#6379#6380#g  %s#6379#6381#g)

[root@centos222 ~]# vi /etc/redis/6380.conf
port 6380
pidfile "/var/run/redis_6380.pid"
logfile "/var/log/redis_6380.log"
dir "/var/lib/redis/6380"
daemonize yes
#requirepass
#masterauth

[root@centos222 ~]# vi /etc/redis/6381.conf
port 6381
pidfile "/var/run/redis_6381.pid"
logfile "/var/log/redis_6381.log"
dir "/var/lib/redis/6381"
daemonize yes
#requirepass
#masterauth


# 启动服务(第一个为默认端口 6379)

[root@centos222 ~]# service redisd start
[root@centos222 ~]# /usr/local/bin/redis-server /etc/redis/6380.conf
[root@centos222 ~]# /usr/local/bin/redis-server /etc/redis/6381.conf


# 访问实例(正常)

[root@centos222 ~]# redis-cli -p 6379
[root@centos222 ~]# redis-cli -p 6380
[root@centos222 ~]# redis-cli -p 6381



# 安装 autoconf

[root@centos222 ~]# mkdir -p /usr/local/autoconf
[root@centos222 ~]# cd /usr/local/src
[root@centos222 ~]# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
[root@centos222 ~]# tar -zxvf autoconf-2.69.tar.gz
[root@centos222 ~]# cd autoconf-2.69
[root@centos222 ~]# ./configure --prefix=/usr/local/autoconf/
[root@centos222 ~]# make && make install


# 更改新版本 autoconf 2.69 为默认程序

[root@centos222 ~]# autoconf -V
[root@centos222 ~]# autoreconf -V
[root@centos222 ~]# /usr/local/autoconf/bin/autoconf -V
[root@centos222 ~]# /usr/local/autoconf/bin/autoreconf -V
[root@centos222 ~]# mv /usr/bin/autoconf /usr/bin/autoconf_backup
[root@centos222 ~]# mv /usr/bin/autoreconf /usr/bin/autoreconf_backup
[root@centos222 ~]# ln -s /usr/local/autoconf/bin/autoconf /usr/bin/autoconf
[root@centos222 ~]# ln -s /usr/local/autoconf/bin/autoreconf /usr/bin/autoreconf


# 安装 twemproxy

[root@centos222 ~]# mkdir -p /usr/local/twemproxy
[root@centos222 ~]# cd /usr/local/src
[root@centos222 ~]# wget https://github.com/twitter/twemproxy/archive/master.zip
[root@centos222 ~]# unzip master
[root@centos222 ~]# cd /usr/local/src/twemproxy-master
[root@centos222 ~]# autoreconf -fvi
[root@centos222 ~]# ./configure --prefix=/usr/local/twemproxy/
[root@centos222 ~]# make && make install


# 配置环境变量

[root@centos222 ~]# echo "PATH=$PATH:/usr/local/twemproxy/sbin/" >> /etc/profile
[root@centos222 ~]# source /etc/profile


# 配置文件 nutcracker.yml

[root@centos222 ~]# mkdir -p /etc/nutcracker
[root@centos222 ~]# cp /usr/local/src/twemproxy-master/conf/nutcracker.yml /etc/nutcracker/
[root@centos222 ~]# vi /etc/nutcracker/nutcracker.yml

alpha:
listen: 0.0.0.0:22121 #twemproxy监听的端口
hash: fnv1a_64 #md5/crc16/crc32/crc32a/fnv1_64/fnv1a_64/fnv1_32/fnv1a_32/hsieh/murmur/jenkins
distribution: ketama #ketama/modula/random
auto_eject_hosts: true #自动临时剔除不可用节点
redis: true #监控是否为redis
server_retry_timeout: 10000 #剔除节点尝试恢复时间间隔(毫秒)
server_failure_limit: 2 #节点访问失败N次则被自动剔除
servers: #(IP:端口号:权重)
- 192.168.1.222:6379:1
- 192.168.1.222:6380:1
- 192.168.1.222:6381:1


# 测试配置文件

[root@centos222 ~]# nutcracker -t -c /etc/nutcracker/nutcracker.yml
nutcracker: configuration file '/etc/nutcracker/nutcracker.yml' syntax is ok


# 后台运行,配置完成!

[root@centos222 ~]# nutcracker -d -c /etc/nutcracker/nutcracker.yml


#访问 twemproxy 节点,并设置 3 个键值

[root@centos222 ~]# redis-cli -p 22121
127.0.0.1:22121>
127.0.0.1:22121> set name aaaaa
OK
127.0.0.1:22121> set age 33
OK
127.0.0.1:22121> set value 100000
OK


# 此时分别连接3个实例,查看键值情况:

[root@centos222 ~]# redis-cli -p 6379
127.0.0.1:6379> keys *
1) "age"

[root@centos222 ~]# redis-cli -p 6380
127.0.0.1:6380> keys *
1) "name"

[root@centos222 ~]# redis-cli -p 6381
127.0.0.1:6381> keys *
1) "value"


可以看到,代理节点 22121 将数据水平划分到了每个节点。

测试结果如下图:

Redis 高可用: twemproxy实现缓存服务器分片集群_centos_02


参考:

​​基于Twemproxy的Redis集群方案​​

​Redis代理twemproxy安装,配置,使用​

​​Redis+twemproxy(nutcracker)实现Redis多集群方案​​


标签:twemproxy,Redis,分片,redis,etc,usr,centos222,autoconf,root
From: https://blog.51cto.com/hzc2012/6007800

相关文章

  • Redis 6 学习笔记 3 —— 用SpringBoot整合Redis的踩坑,了解事务、乐观锁、悲观锁
    SpringBoot整合Redis时踩到的坑jdk1.8环境,用idea的SpringInitializr创建springboot项目,版本我选的2.7.6。pom文件添加的依赖如下,仅供参考。注意commons-pool2选错版本......
  • 【Redis实战专题】「性能监控系列」全方位探索Redis的性能监控以及优化指南
    Redis基本简介Redis是一个开源(BSD许可)、内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合等数据类型。内置复......
  • redis搭建集群
    1.准备三台机器搭建redis集群机器ip分别为:10.0.5.6110.0.5.10210.0.5.742.在各个机器上安装redisyuminstall-yhttp://rpms.famillecollet.com/enterp......
  • MISCONF Redis is configured to save RDB snapshots, but is currently not able to
    早上一上班发现系统登录不上去了,查看后台日志:Caused by: io.lettuce.core.RedisCommandExecutionException: MISCONF Redis is configured to save RDB snapshots......
  • (9)go-micro微服务Redis配置
    目录一go-redis介绍二go-redis安装三redis初始化连接四存储mail邮件五存储token六最后一go-redis介绍Redis(RemoteDictionaryServer),即远程字典服务,是一个开......
  • Redis-独立功能-监视器
    监视器通过执行MONITOR命令,客户端可以将自己变为一个监视器,实时地接收并打印出服务器当前处理的命令请求的相关信息。每当一个客户端向服务器发送一条命令请求时,服务器除......
  • python-连接redis
    python-连接redis1、python-连接redis安装连接redis客户端工具pip3installredis编写python-redis连接使用"""redis===============Host:127.0.0.1PORT:6......
  • Redis-独立功能-二进制位数组
    二进制位数组Redis提供了SETBIT、GETBIT、BITCOUNT、BITOP四个命令用于处理二进制位数组。SETBIT命令用于为位数组指定偏移量上的二进制位设置值,GETBIT命令则用于获取位......
  • python-连接redis池
    python-连接redis池1.python-连接redis池编写redis池,进行连接redis服务防止连接每次请求连接池"""redis===============Host:127.0.0.1PORT:6379Password:Aq......
  • redis删除数据
    3.查看所有key值:keys*4.删除指定索引的值:delkey5.清空整个Redis服务器的数据:flushall6.清空当前库中的所有key:flushdb......