如果说集群模式是在Redis中进行槽位的拆分,代理就是在Client对槽位进行拆分。目前比较流行的代理框架有:

  • predixy:高性能全特征redis代理,支持Redis Sentinel和Redis Cluster。
  • twemproxy:快速、轻量级memcached和redis代理,Twitter推特公司开发。
  • codis:redis集群代理解决方案,豌豆荚公司开发,对redis源码有修改。

image.png

1 predixy

1.1 安装

  1. 访问GitHub地址:https://github.com/joyieldInc/predixy
  2. 下载 ==> $ wget https://github.com/joyieldInc/predixy/releases/download/1.0.5/predixy-1.0.5-bin-amd64-linux.tar.gz
  3. 解压 ==> $ tar xf predixy-1.0.5-bin-amd64-linux.tar.gz

1.2 配置

  1. ### predixy-1.0.5/conf/predixy.conf
  2. Include sentinel.conf
  3. # Include try.conf
  4. ### predixy-1.0.5/conf/sentinel.conf
  5. SentinelServerPool {
  6. Databases 16
  7. Hash crc16
  8. HashTag "{}" # 使用这个前缀,会hash到同一个集群
  9. Distribution modula
  10. MasterReadPriority 60
  11. StaticSlaveReadPriority 50
  12. DynamicSlaveReadPriority 50
  13. RefreshInterval 1
  14. ServerTimeout 1
  15. ServerFailureLimit 10
  16. ServerRetryTimeout 1
  17. KeepAlive 120
  18. Sentinels {
  19. + 127.0.0.1:26379
  20. + 127.0.0.1:26380
  21. + 127.0.0.1:26381
  22. }
  23. # 两套主从复制集群,配置两个Group
  24. Group m1 {
  25. }
  26. Group m2 {
  27. }
  28. }
  29. ### 26379/sentinel.conf
  30. port 26379
  31. sentinel monitor m1 127.0.0.1 6379 2
  32. sentinel monitor m2 127.0.0.1 16379 2
  33. ### 26380/sentinel.conf
  34. port 26380
  35. sentinel monitor m1 127.0.0.1 6379 2
  36. sentinel monitor m2 127.0.0.1 16379 2
  37. ### 26381/sentinel.conf
  38. port 26381
  39. sentinel monitor m1 127.0.0.1 6379 2
  40. sentinel monitor m2 127.0.0.1 16379 2

1.3 启动

  1. ### 准备目录用来存放redis的数据
  2. # mkdir 6379 6380 6381 16379 16380 16381 26379 26380 26381
  3. cp redis.conf 6379
  4. cp sentinel.conf 26379
  5. # 启动哨兵
  6. redis-server 26379/sentinel.conf --sentinel
  7. redis-server 26380/sentinel.conf --sentinel
  8. redis-server 26381/sentinel.conf --sentinel
  9. # 启动集群
  10. redis-server --port 6379
  11. redis-server --port 6380 --replicaof 127.0.0.1 6379
  12. redis-server --port 6381 --replicaof 127.0.0.1 6379
  13. redis-server --port 16379
  14. redis-server --port 16380 --replicaof 127.0.0.1 16379
  15. redis-server --port 16381 --replicaof 127.0.0.1 16379
  16. # 启动代理
  17. cd predixy/bin
  18. ./predixy ../conf/predixy.conf

2 twemproxy

2.1 安装

  1. 访问GitHub地址:https://github.com/twitter/twemproxy
  2. # 下载项目
  3. ==> $ git clone git@github.com:twitter/twemproxy.git,如果报错 ==> $ yum update nss
  4. # 准备环境
  5. $ yum install -y automake libtool
  6. # 安装
  7. ==> $ autoreconf -fvi,如果报错,需要配置镜像源更新autoreconf
  8. ==> $ ./configure
  9. ==> $ make
  10. # 将nutcracker安装成为服务,并配置随开机启动
  11. cp src/nutcracker /usr/bin/
  12. cp scripts/nutcracker.init /etc/init.d/nutcracker
  13. chkconfig --add nutcracker
  14. mkdir /etc/nutcracker
  15. cp conf/*.yml /etc/nutcracker/

2.2 配置

  1. # vi /etc/nutcracker/nutcracker.yml
  2. alpha:
  3. listen: 127.0.0.1:22121
  4. hash: fnv1a_64
  5. distribution: ketama
  6. auto_eject_hosts: true
  7. redis: true
  8. server_retry_timeout: 2000
  9. server_failure_limit: 1
  10. servers:
  11. - 127.0.0.1:6379:1
  12. - 127.0.0.1:6380:1

2.3 启动

  1. ### 准备目录用来存放redis的数据
  2. # mkdir 6379 6380
  3. # 启动服务
  4. redis-server --port 6379
  5. redis-server --port 6380
  6. # 启动代理
  7. systemctl start nutcracker