打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

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


一个简单的 Twemproxy 分片测试:


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

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


# 创建新的 redis 目录

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

# 复制2份新的配置文件

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

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

  1. [root@centos222 ~]# vi /etc/redis/6380.conf  
  2. port 6380  
  3. pidfile "/var/run/redis_6380.pid"  
  4. logfile "/var/log/redis_6380.log"  
  5. dir "/var/lib/redis/6380"  
  6. daemonize yes  
  7. #requirepass  
  8. #masterauth  
  9.   
  10. [root@centos222 ~]# vi /etc/redis/6381.conf  
  11. port 6381  
  12. pidfile "/var/run/redis_6381.pid"  
  13. logfile "/var/log/redis_6381.log"  
  14. dir "/var/lib/redis/6381"  
  15. daemonize yes  
  16. #requirepass  
  17. #masterauth  

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

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

# 访问实例(正常)

  1. [root@centos222 ~]# redis-cli -p 6379  
  2. [root@centos222 ~]# redis-cli -p 6380  
  3. [root@centos222 ~]# redis-cli -p 6381  


# 安装 autoconf

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

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

  1. [root@centos222 ~]# autoconf -V  
  2. [root@centos222 ~]# autoreconf -V  
  3. [root@centos222 ~]# /usr/local/autoconf/bin/autoconf -V  
  4. [root@centos222 ~]# /usr/local/autoconf/bin/autoreconf -V  
  5. [root@centos222 ~]# mv /usr/bin/autoconf /usr/bin/autoconf_backup  
  6. [root@centos222 ~]# mv /usr/bin/autoreconf /usr/bin/autoreconf_backup  
  7. [root@centos222 ~]# ln -s /usr/local/autoconf/bin/autoconf /usr/bin/autoconf  
  8. [root@centos222 ~]# ln -s /usr/local/autoconf/bin/autoreconf /usr/bin/autoreconf  

# 安装 twemproxy

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

# 配置环境变量

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

# 配置文件 nutcracker.yml

  1. [root@centos222 ~]# mkdir -p /etc/nutcracker  
  2. [root@centos222 ~]# cp /usr/local/src/twemproxy-master/conf/nutcracker.yml /etc/nutcracker/  
  3. [root@centos222 ~]# vi /etc/nutcracker/nutcracker.yml  
  4.   
  5. alpha:  
  6.   listen: 0.0.0.0:22121         #twemproxy监听的端口  
  7.   hash: fnv1a_64                #md5/crc16/crc32/crc32a/fnv1_64/fnv1a_64/fnv1_32/fnv1a_32/hsieh/murmur/jenkins  
  8.   distribution: ketama          #ketama/modula/random  
  9.   auto_eject_hosts: true        #自动临时剔除不可用节点  
  10.   redis: true                   #监控是否为redis  
  11.   server_retry_timeout: 10000   #剔除节点尝试恢复时间间隔(毫秒)  
  12.   server_failure_limit: 2       #节点访问失败N次则被自动剔除  
  13.   servers:                      #(IP:端口号:权重)  
  14.    - 192.168.1.222:6379:1  
  15.    - 192.168.1.222:6380:1  
  16.    - 192.168.1.222:6381:1  

# 测试配置文件

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

# 后台运行,配置完成!

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

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

  1. [root@centos222 ~]# redis-cli -p 22121  
  2. 127.0.0.1:22121>   
  3. 127.0.0.1:22121> set name aaaaa  
  4. OK  
  5. 127.0.0.1:22121> set age 33  
  6. OK  
  7. 127.0.0.1:22121> set value 100000  
  8. OK  

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

  1. [root@centos222 ~]# redis-cli -p 6379  
  2. 127.0.0.1:6379> keys *  
  3. 1) "age"  
  4.   
  5. [root@centos222 ~]# redis-cli -p 6380  
  6. 127.0.0.1:6380> keys *  
  7. 1) "name"  
  8.   
  9. [root@centos222 ~]# redis-cli -p 6381  
  10. 127.0.0.1:6381> keys *  
  11. 1) "value"  

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

测试结果如下图:



参考:

基于Twemproxy的Redis集群方案

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

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


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Twemproxy 介绍与使用
基于Twemproxy的Redis集群方案
CentOS和Windows互相远程桌面方法
centos完美搭建redis3.0集群并附测试
CentOS6.x 安装 Docker 和 Docker Compose
centos 7 安装 redis 3.2,并实现开机自启动
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服