Redis集群搭建

川长思鸟来 2021-09-23 03:42 683阅读 0赞

一.redis-cluster架构图

Center

二.架构细节

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.
(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点

Center 1

三.redis集群的搭建

Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。
Redis集群至少需要6台服务器。
搭建伪分布式。可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006

1.使用ruby脚本搭建集群。需要ruby的运行环境

安装ruby

  1. yum install ruby
  2. yum install rubygems

2.安装ruby脚本运行使用的包

  1. [root@localhost ~]# gem install redis-3.0.0.gem
  2. Successfully installed redis-3.0.0
  3. 1 gem installed
  4. Installing ri documentation for redis-3.0.0...
  5. Installing RDoc documentation for redis-3.0.0...
  6. [root@localhost ~]#
  7. [root@localhost ~]# cd redis-3.0.0/src
  8. [root@localhost src]# ll *.rb
  9. -rwxrwxr-x. 1 root root 48141 Apr 1 2015 redis-trib.rb

3.搭建步骤

需要6台redis服务器。搭建伪分布式。
需要6个redis实例。
需要运行在不同的端口7001-7006

第一步:创建6个redis实例,每个实例运行在不同的端口。需要修改redis.conf配置文件。配置文件中还需要把cluster-enabled yes前的注释去掉。

Center 2

第二步:启动每个redis实例。
第三步:使用ruby脚本搭建集群。
./redis-trib.rb create —replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006

创建关闭集群的脚本:

  1. [root@localhost redis-cluster]# vim shutdow-all.sh
  2. redis01/redis-cli -p 7001 shutdown
  3. redis01/redis-cli -p 7002 shutdown
  4. redis01/redis-cli -p 7003 shutdown
  5. redis01/redis-cli -p 7004 shutdown
  6. redis01/redis-cli -p 7005 shutdown
  7. redis01/redis-cli -p 7006 shutdown
  8. [root@localhost redis-cluster]# chmod u+x shutdow-all.sh
  9. [root@localhost redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006
  10. >>> Creating cluster
  11. Connecting to node 192.168.25.153:7001: OK
  12. Connecting to node 192.168.25.153:7002: OK
  13. Connecting to node 192.168.25.153:7003: OK
  14. Connecting to node 192.168.25.153:7004: OK
  15. Connecting to node 192.168.25.153:7005: OK
  16. Connecting to node 192.168.25.153:7006: OK
  17. >>> Performing hash slots allocation on 6 nodes...
  18. Using 3 masters:
  19. 192.168.25.153:7001
  20. 192.168.25.153:7002
  21. 192.168.25.153:7003
  22. Adding replica 192.168.25.153:7004 to 192.168.25.153:7001
  23. Adding replica 192.168.25.153:7005 to 192.168.25.153:7002
  24. Adding replica 192.168.25.153:7006 to 192.168.25.153:7003
  25. M: 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 192.168.25.153:7001
  26. slots:0-5460 (5461 slots) master
  27. M: 8cd93a9a943b4ef851af6a03edd699a6061ace01 192.168.25.153:7002
  28. slots:5461-10922 (5462 slots) master
  29. M: 2935007902d83f20b1253d7f43dae32aab9744e6 192.168.25.153:7003
  30. slots:10923-16383 (5461 slots) master
  31. S: 74f9d9706f848471583929fc8bbde3c8e99e211b 192.168.25.153:7004
  32. replicates 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3
  33. S: 42cc9e25ebb19dda92591364c1df4b3a518b795b 192.168.25.153:7005
  34. replicates 8cd93a9a943b4ef851af6a03edd699a6061ace01
  35. S: 8b1b11d509d29659c2831e7a9f6469c060dfcd39 192.168.25.153:7006
  36. replicates 2935007902d83f20b1253d7f43dae32aab9744e6
  37. Can I set the above configuration? (type 'yes' to accept): yes
  38. >>> Nodes configuration updated
  39. >>> Assign a different config epoch to each node
  40. >>> Sending CLUSTER MEET messages to join the cluster
  41. Waiting for the cluster to join.....
  42. >>> Performing Cluster Check (using node 192.168.25.153:7001)
  43. M: 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 192.168.25.153:7001
  44. slots:0-5460 (5461 slots) master
  45. M: 8cd93a9a943b4ef851af6a03edd699a6061ace01 192.168.25.153:7002
  46. slots:5461-10922 (5462 slots) master
  47. M: 2935007902d83f20b1253d7f43dae32aab9744e6 192.168.25.153:7003
  48. slots:10923-16383 (5461 slots) master
  49. M: 74f9d9706f848471583929fc8bbde3c8e99e211b 192.168.25.153:7004
  50. slots: (0 slots) master
  51. replicates 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3
  52. M: 42cc9e25ebb19dda92591364c1df4b3a518b795b 192.168.25.153:7005
  53. slots: (0 slots) master
  54. replicates 8cd93a9a943b4ef851af6a03edd699a6061ace01
  55. M: 8b1b11d509d29659c2831e7a9f6469c060dfcd39 192.168.25.153:7006
  56. slots: (0 slots) master
  57. replicates 2935007902d83f20b1253d7f43dae32aab9744e6
  58. [OK] All nodes agree about slots configuration.
  59. >>> Check for open slots...
  60. >>> Check slots coverage...
  61. [OK] All 16384 slots covered.
  62. [root@localhost redis-cluster]#

四.集群的使用方法

Redis-cli连接集群。

  1. [root@localhost redis-cluster]# redis01/redis-cli -p 7002 -c

-c:代表连接的是redis集群

发表评论

表情:
评论列表 (有 0 条评论,683人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Redis

    1.[上一篇][Link 1]博客中描述了redis的一些简介和概念,本篇博客主要是搭建一个redis集群 2.搭建过程参考了一些网友的文章,主要是下面两位朋友,在此感

    相关 redis

    文章来自博客园,稍加补充,如侵权,请联系删除 初学redis,学习了redis的常用数据结构,然后就到了学习redis集群的时候了 那么,学习前面应该先搭建起来redis集

    相关 Redis

    搭建Redis 集群 准备6台redis服务器,具体要求如下: ip地址 端口 etho 日志文件名 192.168.4.51 6051 都可以接收连接请求 redi

    相关 Redis--

    集群概述 redis是一个开源的key value存储系统,受到了广大互联网公司的青睐。redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里