redis cluster 部署过程

一, 特点

高性能:

  1、在多分片节点中,将16384个槽位,均匀分布到多个分片节点中
  2、存数据时,将key做crc16(key),然后和16384进行取模,得出槽位值(0-16383之间)
  3、根据计算得出的槽位值,找到相对应的分片节点的主节点,存储到相应槽位上
  4、如果客户端当时连接的节点不是将来要存储的分片节点,分片集群会将客户端连接切换至真正存储节点进行数据存储

高可用:
  在搭建集群时,会为每一个分片的主节点,对应一个从节点,实现slaveof的功能,同时当主节点down,实现类似于sentinel的自动failover的功能。


  1、redis会有多组分片构成(3组)
  2、redis cluster 使用固定个数的slot存储数据(一共16384slot)
  3、每组分片分得1/3 slot个数(0-5500  5501-11000  11001-16383)
  4、基于CRC16(key) % 16384 ====》值 (槽位号)。

规划、搭建过程:

  6个redis实例,一般会放到3台硬件服务器
  注:在企业规划中,一个分片的两个分到不同的物理机,防止硬件主机宕机造成的整个分片数据丢失。

二, 配置

端口号:7000-7005

1、安装集群插件
  EPEL源安装ruby支持
  yum install ruby rubygems -y

使用国内源
  gem sources -l
  gem sources -a http://mirrors.aliyun.com/rubygems/
  gem sources  --remove https://rubygems.org/
  gem sources -l
  gem install redis -v 3.3.3

或者:
  gem sources -a http://mirrors.aliyun.com/rubygems/  --remove https://rubygems.org/

2、集群节点准备

  1 mkdir /data/700{0..7}
  2 
  3 vim /data/7000/redis.conf
  4 port 7000
  5 daemonize yes
  6 pidfile /data/7000/redis.pid
  7 loglevel notice
  8 logfile "/data/7000/redis.log"
  9 dbfilename dump.rdb
 10 dir /data/7000
 11 protected-mode no
 12 cluster-enabled yes
 13 cluster-config-file nodes.conf
 14 cluster-node-timeout 5000
 15 appendonly yes
 16 
 17 
 18 vim /data/7001/redis.conf
 19 port 7001
 20 daemonize yes
 21 pidfile /data/7001/redis.pid
 22 loglevel notice
 23 logfile "/data/7001/redis.log"
 24 dbfilename dump.rdb
 25 dir /data/7001
 26 protected-mode no
 27 cluster-enabled yes
 28 cluster-config-file nodes.conf
 29 cluster-node-timeout 5000
 30 appendonly yes
 31 
 32 
 33 vim /data/7002/redis.conf
 34 port 7002
 35 daemonize yes
 36 pidfile /data/7002/redis.pid
 37 loglevel notice
 38 logfile "/data/7002/redis.log"
 39 dbfilename dump.rdb
 40 dir /data/7002
 41 protected-mode no
 42 cluster-enabled yes
 43 cluster-config-file nodes.conf
 44 cluster-node-timeout 5000
 45 appendonly yes
 46 
 47 
 48 
 49 vim /data/7003/redis.conf
 50 port 7003
 51 daemonize yes
 52 pidfile /data/7003/redis.pid
 53 loglevel notice
 54 logfile "/data/7003/redis.log"
 55 dbfilename dump.rdb
 56 dir /data/7003
 57 protected-mode no
 58 cluster-enabled yes
 59 cluster-config-file nodes.conf
 60 cluster-node-timeout 5000
 61 appendonly yes
 62 
 63 
 64 
 65 vim /data/7004/redis.conf
 66 port 7004
 67 daemonize yes
 68 pidfile /data/7004/redis.pid
 69 loglevel notice
 70 logfile "/data/7004/redis.log"
 71 dbfilename dump.rdb
 72 dir /data/7004
 73 protected-mode no
 74 cluster-enabled yes
 75 cluster-config-file nodes.conf
 76 cluster-node-timeout 5000
 77 appendonly yes
 78 
 79 
 80 vim /data/7005/redis.conf
 81 port 7005
 82 daemonize yes
 83 pidfile /data/7005/redis.pid
 84 loglevel notice
 85 logfile "/data/7005/redis.log"
 86 dbfilename dump.rdb
 87 dir /data/7005
 88 protected-mode no
 89 cluster-enabled yes
 90 cluster-config-file nodes.conf
 91 cluster-node-timeout 5000
 92 appendonly yes
 93 
 94 
 95 
 96 vim /data/7006/redis.conf
 97 port 7006
 98 daemonize yes
 99 pidfile /data/7006/redis.pid
100 loglevel notice
101 logfile "/data/7006/redis.log"
102 dbfilename dump.rdb
103 dir /data/7006
104 protected-mode no
105 cluster-enabled yes
106 cluster-config-file nodes.conf
107 cluster-node-timeout 5000
108 appendonly yes
109 
110 
111 vim /data/7007/redis.conf
112 port 7007
113 daemonize yes
114 pidfile /data/7007/redis.pid
115 loglevel notice
116 logfile "/data/7007/redis.log"
117 dbfilename dump.rdb
118 dir /data/7007
119 protected-mode no
120 cluster-enabled yes
121 cluster-config-file nodes.conf
122 cluster-node-timeout 5000
123 appendonly yes


启动节点:

1 redis-server /data/7000/redis.conf
2 redis-server /data/7001/redis.conf
3 redis-server /data/7002/redis.conf
4 redis-server /data/7003/redis.conf
5 redis-server /data/7004/redis.conf
6 redis-server /data/7005/redis.conf
7 redis-server /data/7006/redis.conf
8 redis-server /data/7007/redis.conf

 1 [root@db01 ~]# ps -ef |grep redis 



3、将节点加入集群管理

1 redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005



4、集群状态查看

集群主节点状态

redis-cli -p 7000 cluster nodes | grep master


集群从节点状态


 1 redis-cli -p 7000 cluster nodes | grep slave 

三, 添加节点

集群节点管理

  添加主节点:


   1 redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000 

    add-node 后面写的地址为需要添加的地址

       最后的地址为管理的地址

  

  添加一个从节点

   1 redis-trib.rb add-node --slave --master-id d3d67f8fd1680caba870a8b5a167c365088f6840 127.0.0.1:7007 127.0.0.1:7000

  --master-id 后面的是对应的主节点id值

  后面跟的是从节点地址

  最后的是管理节点地址

  -----------------------------注意---------------------------

  


转移slot(重新分片)----------------------------重点-----------------------每次添加都必须slot

  

  添加节点后默认是没有slot的

运行

redis-trib.rb reshard 127.0.0.1:7000

   后面的数字填写的是需要挪动的slot数 一般是16384除以主节点数得出的结果 

    这个id值为需要接收的id 就是哪个新添加需要接收slot的id值

               这个是选择从哪里拿slot值,   选择all就是再所有节点上拿一点, 输入id值为选择从这个节点拿这么多

    选择yes 表示开始配置!!!!!

  



猜你喜欢

转载自www.cnblogs.com/kingle-study/p/10044775.html