主要内容:
1 哨兵集群:https://blog.csdn.net/yaooch/article/details/80167571
a 哨兵的介绍:Sentinel(哨兵)是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。
b :redis哨兵配置步骤如下:
1 准备三个redis实例, 创建三个redis配置文件, 文件内容如下
port 6379 daemonize yes logfile "6379.log" dbfilename "dump-6379.rdb" dir "/var/redis/data/" daemonize yes
注意: 这是主库的配置文件, 两个从库的配置文件加上: slaveof 127.0.0.1 6379
2 启动三个reids实例: redis-server redis-6379.conf
3 检查三个实例的主从身份: redis-cli -p 6379 info replication
4 配置三个哨兵: redis-sentinel-26379.conf 26380.conf, 26381.conf, 文件内容如下:
// Sentinel节点的端口 port 26379 dir /var/redis/data/ logfile "26379.log" // 当前Sentinel节点监控 127.0.0.1:6379 这个主节点 // 2代表判断主节点失败至少需要2个Sentinel节点节点同意 // mymaster是主节点的别名 sentinel monitor mymaster 127.0.0.1 6379 2 //每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒30s且没有回复,则判定不可达 sentinel down-after-milliseconds mymaster 30000 //当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点, 原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1 sentinel parallel-syncs mymaster 1 //故障转移超时时间为180000毫秒 sentinel failover-timeout mymaster 180000 daemonize yes
三个哨兵的配置文件只是端口的不同
5 启动三个哨兵: redis-sentinel redis-sentinel-26379.conf
6 检查哨兵身份信息, 检查主从节点健康状态
7 配置完成后, 杀死master节点,查看主从身份切换是否正常.
2 redis-cluster: https://blog.csdn.net/openbox2008/article/details/80033439
a : 数据分区的介绍: 在介绍redis cluster之前, 简单介绍分布式数据库的数据分区. 所谓的数据分区就是将一个较大的数据集分布在不同的节点上进行缓存. 常见的数据分区方式: 节点取余, 一致性哈希, 虚拟槽: 在redis cluster中使用槽来存储一定范围内的数据集, 每个节点上有一定数量的槽.当客户端提交数据时, 要根据crc16(key)&16383来计算出数据要落在哪个虚拟槽内.与节点取余和一致性哈希分区不同,虚拟槽分区是服务端分区。客户端可以将数据提交到任意一个redis cluster节点上,如果存储该数据的槽不在这个节点上,则返回给客户端目标节点信息,告知客户端向目标节点提交数据。
b : 集群角色有Master和Slave。Master之间分配slots,一共16384个slot。Slave向它指定的Master同步数据,实现备份。当其中的一个Master无法提供服务时,该Master的Slave讲提升为Master,保证集群间slot的完整性。一旦其中的某一个Master和它的Slave都失效,导致了slot不完整,集群失效,这时就需要人工去处理了。
c : 为什么要用集群https://blog.csdn.net/shenjianxz/article/details/59775212
数据量太大, 一台服务器的内存是16-256g, 假如业务需要500g, 此时应该把数据分到不同的位置, 分摊集中式的压力,一堆机器干一件事.
并发问题.redis官方生成可以达到 10万/每秒,每秒执行10万条命令, 假如美妙执行100万条命令.
d : redis使用中遇到的瓶颈
我们日常在对于redis的使用中,经常会遇到一些问题
1、高可用问题,如何保证redis的持续高可用性。
2、容量问题,单实例redis内存无法无限扩充,达到32G后就进入了64位世界,性能下降。
3、并发性能问题,redis号称单实例10万并发,但也是有尽头的。
e : redis-cluster的优势
1、官方推荐,毋庸置疑。
2、去中心化,集群最大可增加1000个节点,性能随节点增加而线性扩展。
3、管理方便,后续可自行增加或摘除节点,移动分槽等等。
4、简单,易上手。
d 集群的配置.https://www.cnblogs.com/pyyu/p/9844093.html
3 docker