redis-集群
简介
- Redis集群是Redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能
- 集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果
作用
- 分散单台服务器的访问压力,实现负载均衡
- 分散单台服务器的存储压力,实现可扩展性
- 降低单台服务器宕机带来的业务灾难
集群结构设计
- 数据存储设计
- redis的每个节点,都有一个槽(slot),取值范围016383,一共16384个槽,每台主机保存一部分。每个key都会对应到编号为016383的其中一个槽,通过这个槽再去找对应的节点,进行存取操作。
- Redis集群,要保证16384个槽对应的node都正常工作,如果某个node发生故障,那它负责的slots也就失效,整个集群将不能工作。
- 官方推荐的方案是将node配置成主从结构,即一个master主节点,挂n个slave从节点。这时,如果主节点失效,Redis Cluster会根据选举算法从slave节点中选择一个上升为主节点,整个集群继续对外提供服务,Redis Cluster本身提供了故障转移容错的能力。
- 集群模式节点最小配置6个节点(三主三从),其中主节点提供读写操作,从节点作为备用节点,不提供请求,只作为故障转移使用。
集群结构搭建
参考这位博主进行windows环境下的搭建:https://blog.csdn.net/weixin_52323239/article/details/125235358
一些redis详细的测试:https://blog.csdn.net/weixin_49724150/article/details/121659693?spm=1001.2014.3001.5502
-
搭建方式
-
配置服务器(三主三从)
-
建立通信(Meet)
-
分槽(Slot)
-
搭建主从(master-slave)
-
工具安装(批处理)
cluster常见指令
-
Cluster配置
-
添加节点
cluster-enabled yes|no
-
cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容
cluster-config-file <filename>
-
节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
cluster-node-timeout <milliseconds>
-
master连接的slave最小数量
cluster-migration-barrier <count>
-
-
Cluster节点操作命令
-
查看集群节点信息
cluster nodes
-
进入一个从节点 redis,切换其主节点
cluster replicate <master-id>
-
发现一个新节点,新增主节点
cluster meet ip:port
-
忽略一个没有solt的节点
cluster forget <id>
-
手动故障转移
cluster failover
-
-
redis-trib命令
-
添加节点
redis-trib.rb add-node
-
删除节点
redis-trib.rb del-node
-
重新分片
redis-trib.rb reshard
下图为做测试的结果,包括集群搭建、数据存取、故障转移等
-
-
故障转移–master1掉线,slave1成为master顶替master1
- List item