阅读 190

Redis 代理集群方案

安装环境:centos7,redis6

twemproxy

大致流程操作
  1. 浏览twemproxy的github官方网站,阅读里面的readme

  2. 使用git clone https://github.com/twitter/twemproxy.git 下载源码

    image.png

  3. cd twemproxy ,执行autoreconf 命令的时候提示没有该命令,根据README里面的信息,需要安装automake和libtool


    image.png
  4. 安装 automake和libtool


    image.png
  5. 执行 autoreconf -fvi


    image.png

查看目录,可以看到多了个configure 可执行文件


image.png
  1. 执行 ./configure --enable-debug=full
    成功执行后可以看到 Makefile,前面一系列操作都是为了获取Makefile 文件,执行make 操作
image.png
  1. 执行make 操作,成功执行后,在src目录下多了个执行文件


    image.png
  2. 查看scripts/nutcracker.init 的文件


    image.png
  3. cp nutcracker.init /etc/init.d/twemproxy & cd /etc/init.d/ & chmod +x twemproxy
    服务启动的时候需要执行这个脚本

  4. 根据nutcracker.init 里面的 ,需要创建/etc/nutcracker 目录,并添加nutcraker.yml 文件

在 /twemproxy/conf目录下把 nutcraker.yml 文件拷贝过去

cp nutcracker.yml /etc/nutcraker/
  1. cp src/nutcracker /usr/bin 把可执行命令拷贝到bin下面,就可以在任何目录下执行 nutcracker 命令了

  2. 编辑/etc/nutcracker/nutcraker.yml 文件


    image.png

启动相应的redis服务


image.png
  1. 使用 service twemproxy start 启动服务 ,因为前面把nutcraker 改名成twemproxy 了。


    image.png
  2. 使用redis-cli 命令连接代理服务器ip端口


    image.png

使用命令验证


image.png
image.png
image.png
  1. 总结


    image.png

    可以加上hash_tag 的标签,让标签里面一下的key,可以到同一个redis实例中,twemproxy 做代理的时候事务不支持,有一些聚合命令也不支持:keys * ,PSUBSCRIBE * 等

predixy

支持redis sentinel 和redis cluster

  1. predixy github官方地址

  2. 下载编译好的tar包

# 下载
wget https://github.com/joyieldInc/predixy/releases/download/1.0.5/predixy-1.0.5-bin-amd64-linux.tar.gz

# 解压缩
tar xf predixy-1.0.5-bin-amd64-linux.tar.gz 
  1. 修改/conf/predixy.conf 配置文件


    image.png
image.png
  1. 配置sentinel 模式,修改sentinel.conf 的配置文件


    image.png

    里面 Group 的名称应该要和redis sentinel 的名称一样

  2. 启动3个redis sentinel 服务

redis-server /root/soft/sentinel/26379.conf --sentinel
redis-server /root/soft/sentinel/26380.conf --sentinel
redis-server /root/soft/sentinel/26381.conf --sentinel

  1. 启动4条redis server 服务,两主两从
redis-server --port 36379
redis-server --port 36380 --replicaof 127.0.0.1 36379
redis-server --port 46379
redis-server --port 46380 --replicaof 127.0.0.1 46379

  1. 启动predixy 服务
./predixy ../conf/sentinel.conf
image.png
  1. 使用redis-cli 客户端口连接 predixy 代理
redis-cli -p 7617
  1. 总结

predixy 代理只支持单sentinel 的事务 ,多个sentinel 不支持事务

redis cluster

  1. 进到源码包中utils/create-cluster目录下,使用create-cluster 快速启动redis cluster 实例,

  2. 使用 ./create-cluster start 创建6个redis实例

  3. 使用 ./create-cluster create 分配槽位


    image.png
  4. 使用redis-cli 进行连接

redis-cli -c  -p 30001

  1. 停止和清除
 ./create-cluster stop
 ./create-cluster clean
  1. 启动6台服务后,需要使用命令来创建集群
redis-cli --cluster create 127.0.0.1:30001 127.0.0.1:30002 127.0.0.1:30003 127.0.0.1:30004 127.0.0.1:30005 127.0.0.1:30006 --cluster-replicas 1

image.png
  1. 总结

redis cluster 模式中只要事务中的key在同一条机器上,就可以正常执行

作者:灰黄骨鱼

原文链接:https://www.jianshu.com/p/e8843523f63d

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐