Redis集群相关

Redis集群

集群

​ Redis在3.0后开始支持Cluster模式,目前redis的集群支持节点的自动发现,支持slave-master选举和容错,支持在线分片等特性

集群架构图

集群细节

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

# 1 CRC16算法特点
	1 对集群模式下的所有key进行CRC16计算,计算的结果始终在0-16383之间
	2 对客户端的key进行CRC16计算时同一个key多次经过CRC16计算结果始终一致
	3 对客户端的不同key进行CRC16计算,计算的结果会出现不同的key结果一致

集群搭建

​ 判断一个集群中的节点是否可用,是集群中的所有主节点选举过程,如果半数以上的节点认为当前节点挂掉,那么当前节点就是挂掉了,所以搭建redis集群时建议节点数量为奇数,搭建集群至少需要三个主节点三个从节点,至少需要六个节点

集群搭建

# 1 准备环境安装ruby以及redis集群依赖
- yum install -y ruby rubygems
- gem install redis

# 2 在一台机器上创建7个目录
- mkdir 7000 7001 7002 7003...

# 3 每个目录复制一份配置文件
- cp redis-6.0.6/redis.conf 7001/
- cp redis-6.0.6/redis.conf 7002/
- cp redis-6.0.6/redis.conf 7003/
- cp redis-6.0.6/redis.conf 7004/
- ......

# 4 修改不同目录配置文件
- port 6379 ......     //修改端口
- bind 0.0.0.0         //开启远程连接
- cluster-enabled yes  //开启集群模式
- cluster-config-file  node-port.conf    //集群节点配置文件
- cluster-node-timeout 5000    //集群节点超时时间
- appendonly yes      //开启AOF持久化

# 5 指定不同目录配置文件启动七个节点
- ./redis-server /root/7001/redis.conf
- ./redis-server /root/7002/redis.conf
- ./redis-server /root/7003/redis.conf
- ......

查看集群状态

# 1 查看集群状态 check [原始集群中任意节点]
- ./redis-trib.rb check 192.168.202.205.7001

# 2 集群节点状态说明
- 主节点
	主节点存在hash slots,且主节点的hash slots 没有交叉
	主节点不能删除
	一个主节点可以有多个从节点
	主节点宕机时多个副本之间自动选举主节点

- 从节点
	从节点没有hash slots
	从节点可以删除
	从节点不负责数据的写,只负责数据的同步

添加主节点

# 1 添加主节点 add-node [新加入节点] [原始集群中任意节点]
- ./redis-trib.rb add-node 192.168.1.158:7006 192.168.1.158:7005

- 注意:
	1 该节点必须以集群模式启动
	2 默认情况下该节点就是以master节点形式添加

添加从节点

# 1 添加从节点 add-node --slave [新加入节点] [集群中任意节点]
- ./redis-trib.rb add-node --slave 192.168.1.158:7006 192.168.1.158:7000

- 注意:
	当添加副本节点时没有指定主节点,redis会随机给副本节点较少的主节点添加当前副本节点

删除副本节点

# 1 删除节点 del-node [集群中任意节点] [删除节点id]
- ./redis-trib.rb del-node 127.0.0.1:7002 0caf1a822cad97ae68e9

- 注意:
	1 被删除的节点必须是从节点或没有分配hash slots的节点

集群在线分片

# 1 在线分片 reshard [集群中任意节点] [无]
- ./redis-trib.rb reshard 192.168.1.158:7000
posted @ 2020-09-10 17:43  longda666  阅读(50)  评论(0)    收藏  举报