redis集群 高可用

redis集群 高可用

redis集群的三种模式:
1、主从复制(redis集群的基础) 奇数 1主2从

2、哨兵模式 3 1主2从

3、cluster集群

主从复制:和MySQL的主从复制类似,主可以写,写入主的数据通过RDB方式把数据同步到从服务器。从不能更新到主。也是哨兵模式的基础
缺点:无法实现故障自动化恢复,只有主能够写

**哨兵:**故障自动化恢复,主从复制完成之后,从服务器会变成只读模式。
故障切换时,主故障,变成从服务器,主变成从之后,也会进入只读模式。
缺点:从节点一旦故障,读会受到影响。

**cluster集群:**把每两台服务器作为主从模式,形成一个大的主从的集群。
解决了写操作的负载均衡。较为完善的高可用方案。
**缺点:**保证高可用,对数据的完整性要求不好。

一、主从复制(基础):

主节点和从节点
数据的复制是单向的,由主复制到从
主从复制的流程:

在这里插入图片描述

主从复制部署:

192.168.11.144 redis 主
192.168.11.145 从1
192.168.11.146 从2

主配置 192.168.11.144

vim /etc/redis/6379.conf 
70  bind 0.0.0.0
700行	改为yes
[root@myslq4 ~]# /etc/init.d/redis_6379 restart
[root@myslq4 ~]# netstat -antp | grep 6379
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      37309/redis-server  
tcp        0      0 192.168.11.144:6379     192.168.11.146:33854    ESTABLISHED 37309/redis-server  
tcp        0      0 192.168.11.144:6379     192.168.11.145:39603    ESTABLISHED 37309/redis-server 

192.168.11.145 从1

  vim /etc/redis/6379.conf
  70 bind 0.0.0.0
  287  replicaof 192.168.11.144 6379
  700 appendonly yes
  /etc/init.d/redis_6379 restart

192.168.11.146 从2

vim /etc/redis/6379.conf
70行	     bind 0.0.0.0
288行	replicaof 192.168.11.144 6379
700行	改为yes
/etc/init.d/redis_6379 restart

二、哨兵模式

在这里插入图片描述

部署(以主从为基础):

192.168.11.144 redis 主
192.168.11.145 从1
192.168.11.146 从2

vim sentinel.conf    主从都需要做
17  protected-mode no
21 port 26379
26 daemonize yes
36 logfile "/var/log/sentinel.log"    #哨兵保存日志
65 dir "/var/lib/redis/6379"
84 sentinel myid b219dca6d378e359d67225b33a1ce06079b703de     #当前主机的哨兵id
122 sentinel monitor mymaster 192.168.11.144 6379 2    #全指向主
#初始化监听都是监听主服务器,监听主服务器状态
#2 对应的是从服务器的数量以及投票的参与者要和从服务器一致
#2台服务器投票通过,主才能进行故障转移。
114行 sentinel deny-scripts-reconfig yes
#判断服务器宕机的时间周期 30秒 每30秒检测一次

147行 sentinel config-epoch mymaster 2
#判断故障节点的超时的最大时间180秒
[root@myslq3 redis-5.0.7]# redis-sentinel  sentinel.conf &    #重启哨兵模式
[root@myslq3 redis-5.0.7]# redis-cli  -p 26379 info Sentinel  #查看哨兵的主
三台
cd /opt
cd redis-5.0.7/
ls
vim sentinel.conf
17行	protected-mode no	#关闭保护模式
27行	daemonize yes
37行	logfile "/var/log/setinel.log"
66行	dir "/var/lib/redis/6379"
114行 sentinel deny-scripts-reconfig yes
#判断服务器宕机的时间周期 30秒 每30秒检测一次
122行 sentinel monitor mymaster 192.168.39.31 6379 2
#初始化监听,都是监听主,监听主服务器的状态。2 对应的就是从服务器的数量以及投票的参与者 参与者要和从服务器的数量一致.2台服务器投票通过,主才能进行故障转移
147行 sentinel config-epoch mymaster 2
#判断故障节点的超时的最大时间180秒

redis-sentinel sentinel.conf &
#重启哨兵模式
redis-cli -p 26379 info Sentinel
#查看哨兵的主

模拟断开投票
主
/etc/init.d/redis_6379 stop
从1从2
tail  -f /var/log/redis_6379.log
可以看到投票id过程以及谁被作为主

三、cluster集群

redis 3.0 之后的分布式存储方案

集群由多个节点组成,redis数据保存在这些节点中。
集群中的节点分为主和从。
主负责读写以及维护集群的信息
从节点进行主节点数据的复制(也可以查)

redis集群的数据分片
在集群概念中,引用的是hash槽的概念
创建了集群就有16384个哈希槽
0-16383
三个节点:
主1 0-5460
主2 5461-10922
主3 10923-16383
节点当中,如果主和从全部失败,整个集群将不可用

192.168.11.144 redis 主1
192.168.11.145 主2
192.168.11.146 主3
192.168.11.147 从1
192.168.11.148 从2
192.168.11.149 从3

vim /etc/redis/6379.conf        #所有主机均需要配置
 70 #bind 127.0.0.1 192.168.60.30	
 #将70行注释,表示默认所有
 89 protected-mode no
 #将yes改为no
 833 cluster-enabled yes
 #将833行取消注释89gg
 841 cluster-config-file nodes-6379.conf 
 #将841取消注释
 847 cluster-node-timeout 15000
 将847行取消注释
 700 appendonly yes
 #将700行的no改为yes
 /etc/init.d/redis_6379 restart
 #重启配置文件
redis-cli -h 192.168.11.144 --cluster create 192.168.11.144:6379 192.168.11.147:6379 192.168.11.148:6379 192.168.11.145:6379 192.168.11.146:6379 192.168.11.149:6379 --cluster-replicas 1

192.168.11.144集群的主连接节点  配置节点 (在11.144主机上输入命令)
表示每个主只有一个1节点,前面是主,后面是从
集群: moved不是报错,只是系统提示客户端到指定为止的哈希进行读或者写
系统提示啥,你就去哪个节点操作即可 这个节点是该节点的主。
集群的功能只是满足了高可用和写的负载均衡,不能保证数据的完整性。

完成测试

[root@myslq4 ~]# redis-cli -h 192.168.11.144 -p 6379
192.168.11.144:6379> CLUSTER SLOTS   #查看主从关系
192.168.11.144:6379> CLUSTER NODES   #获取Redis集群的当前配置信息
192.168.11.149:6379> set test2 33
(error) MOVED 8899 192.168.11.147:6379
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码要你命

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值