Redis 集群cluster
集群简介
- 集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果
集群作用
- 分散单台服务器的访问压力,实现负载均衡
- 分散单台服务器的存储压力,实现可扩展性
- 降低单台服务器宕机带来的业务灾难
Redis集群结构设计
数据存储设计
- 通过算法设计,计算出key应该保存的位置
- 将所有的存储空间计划切割成16384份,每台主机保存一部分每份代表的是一个存储空间,不是一个key的保存空间
- 将key按照计算出的结果放到对应的存储空间
-
key通过hash算法计算出一个值,然后拿这个值%16384
-
得到一个数(假如是37)为key的保存位置,然后再存入相应的存储空间位置
-
假如又增加了一个节点,之前每个节点都会拿出部分槽给新的节点
-
如果是去除节点,则把被去除节点的槽加入到存在的节点当作
集群内部通讯设计
- 各个数据库互相通信,保存各个库中槽的编号数据
- 客户端发出一个key访问A,通过算法计算出key的存储位置
- 如果一次命中,直接返回
- 一次未命中,告知具体位置
- 一次命中或者两次命中提高数据访问效率
cluster集群结构搭建
- 原生安装(单条命令)
- 配置服务器(3主3从)
- 建立通信(Meet)
- 分槽(Slot)
- 搭建主从(master-slave)
- 工具安装(批处理)
Cluster配置
-
添加节点
cluster-enabled yes|no
-
cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容
cluster-config-file
-
节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
cluster-node-timeout
-
master连接的slave最小数量
cluster-migration-barrier
Cluster节点操作命令
-
查看集群节点信息
cluster nodes
-
进入一个从节点 redis,切换其主节点
cluster replicate <master-id>
-
发现一个新节点,新增主节点
cluster meet ip:port
-
忽略一个没有solt的节点
cluster forget <id>
-
手动故障转移
cluster failover
首先清空之前的数据
[root@maomao ~]# cd /usr/local/redis/data/
[root@maomao data]# ls
appendonly-6379.aof dump-6379.rdb dump.rdb