redis主从,哨兵,分片集群模式搭建

本文详细介绍了Redis的主从模式、哨兵模式和分片集群模式的搭建过程及工作原理。在主从模式中,实现了读写分离;哨兵模式通过监控主节点,实现故障自动切换;分片集群则通过多个主节点分散存储,解决海量数据和高并发问题。通过具体的配置步骤,展示了如何在虚拟机上搭建这些模式。
摘要由CSDN通过智能技术生成

目录

主从模式

哨兵模式

分片集群模式


redis主从是读写分离模式,哨兵模式是为了主节点宕机时进行主备切换。主从和哨兵可以解决高可用,高并发,但有海量数据存储问题,高并发写问题,因为每个redis容量不能太大,否则rdb做快照的时候会有性能影响。分片集群模式解决了前两者所遇到的问题。

我们在一台虚拟机上搭建一主两从的redis,redis版本选择6。它们的端口分别是主节点7001,从节点7002,7003。192.168.88.131是本机的ip地址。

主从模式

redis的目录是/usr/local/redis,在这个目录下新建3个目录,分别是7001,7002,7003。

然后把/usr/local/redis/redis.conf配置文件拷贝到7001,7002,7003这三个目录下。

然后在这三个目录的配置文件中修改 port 分别为7001,7002,7003,然后 bind 都为 0.0.0.0。

然后在3个终端分别启动 redis-server 7001/redis.conf,redis-server 7002/redis.conf,redis-server 7003/redis.conf。

这时候再新建一个终端,redis-cli -p 7002,执行replicaof 192.168.88.131 7001,

redis-cli -p 7003,执行replicaof 192.168.88.131 7001,

这时候7002,7003就是7001的从节点了。

redis-cli -p 7003运行info replication,可以看到有两个连接。ps:因为后面做了sentinel集群,主节点被修改为了7003。

哨兵模式

哨兵模式是在主从模式的基础上增加哨兵集群监视主节点,当主节点宕机时,它会从该主节点的从节点中选择offset最大的节点作为新的主节点,如果offset最大的节点有多个,它会选择id最大的一个节点作为新的主节点。offset是增量备份中的一个概念,当replica Id相同时,会在一个环形数组进行增量备份,类似于检查点机制。

哨兵节点有三个,它们的端口是27001,27002,27003,分别对应/usr/local/redis新增的 s1,s2,s3这三个目录,再把端口做一下修改就行。

port 27001
sentinel announce-ip "192.168.88.131"
sentinel monitor mymaster 192.168.88.131 7001 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 6000
dir "/usr/local/redis"

然后我们杀死7001的主节点,发现sentinel的打印日志如下

7002的终端打印如下:

7003的终端打印如下

7003已经是主节点了。7001也被sentinel修改为从节点。

重启7001节点后,它从7003使用rbd的方式进行了全量同步

分片集群模式

分片集群有多个master节点,每个master可以有多个slave节点,master之间可以通过ping来监控彼此的监控状态,客户端可以访问集群中的任意节点,最终都会被路由转发到正确的节点。

分片集群配置:

在/tmp目录下新建7001,7002,7003,8001,8002,8003这6个目录,前3个为主节点,后三个依次是前三个的从节点。下面是7001节点的配置信息,即/tmp/7001/redis.conf文件,其余的5个配置文件值需要修改一下端口号和对应目录即可。

port 7001
cluster-enabled yes
cluster-config-file /tmp/7001/nodes.conf
cluster-node-timeout 5000
dir /tmp/7001
bind 0.0.0.0
daemonize yes
replica-announce-ip 192.168.88.131
protected-mode no
databases 1
logfile /tmp/7001/run.log

在/tmp目录下执行 printf '%s\n' 7001 7002 7003 8001 8002 8003 | xargs -I{} -t redis-server {}/redis.conf。使用 ps -ef | grep redis,每个节点都是cluster类型的。

使用如下命令创建集群

redis-cli --cluster create --cluster-replicas 1 192.168.88.131:7001 192.168.88.131:7002 192.168.88.131:7003 192.168.88.131:8001 192.168.88.131:8002 192.168.88.131:8003

分片集群就配置好了。

redis-cli -p 7001 cluster nodes 可以查看redis的集群状态

redis会把所有master节点映射到0到16383号插槽里,key会被计算hash值,对16384取模,得到映射的slot,所以key和slot是绑定的。也可以控制key的有效部分让key和某个插槽进行绑定。

当新增master节点的时候会重新分片。

redis-cli --cluster add-node 192.168.88.131:7004 192.168.88.131:7001 会把7004加入到集群中去,7001这里也可以是7002,7003,只要是集群中的任意一个主节点就行。但是此时7004是没有插槽的,但可以通过 redis-cli --cluster reshard 192.168.88.131:7001 把7001 的插槽移动到7004上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值