redis集群(高可用)

redis集群(高可用)

redis集群的三种模式

主从复制 奇数 3台 1主2从

哨兵模式 3台 1主2从

cluster 集群 6台 生产中:333 9台

主从复制:

和MySQL的主从复制类似,主可以写,写入主的数据通过RDB方式把数据同步到服务器。从不能更新到主。也是哨兵模式的基础。

缺点:故障自动化恢复,只有主能够写。

主从复制:

主节点和从节点

数据的复制是单向的,由主复制到从

主从复制的流程:

部署主从复制:

192.168.60.30 redis 主

192.168.60.31 从1

192.168.60.32 从2

操作:

主:
[root@test3 ~]# vim /etc/redis/6379.conf
 70 bind 0.0.0.0
 707 appendonly yes
 [root@test3 ~]# /etc/init.d/redis_6379 restart         #重启配置文件
从1:
 70 bind 0.0.0.0
 287  replicaof 192.168.60.30 6379      #取消注释并更改
 700 appendonly yes                     #no改为yes
 [root@test3 ~]# /etc/init.d/redis_6379 restart         #重启配置文件
从2:
 70 bind 0.0.0.0
 287  replicaof 192.168.60.30 6379      #取消注释并更改
 700 appendonly yes                     #no改为yes
 [root@test3 ~]# /etc/init.d/redis_6379 restart         #重启配置文件

哨兵:

故障自动化恢复,主从复制完成之后,从服务器变成只读模式。

故障切换时,主故障,变成从服务器,主变成从之后,也会进入只读模式。

缺点:从节点一旦故障,读会受到影响。

哨兵模式流程:
主从之间互相监听,主切换之后变成从自动变成只读模式
切换方式:不是按照权重来进行切换
投票:主宕机,其他服务器投票选举Raft算法。选一个离当前时间点更新最快的从变成主

部署哨兵模式:

192.168.60.30 redis 主

192.168.60.31 从1

192.168.60.32 从2

操作:

主从都需要配置:
[root@test3 redis-5.0.7]# vim sentinel.conf
 17  protected-mode no      #取消注释
 18 #关闭保护模式
 27 daemonize yes           #将no改为yes
 37 logfile "/var/log/sentinel.log
 66 dir "/var/lib/redis/6379"
 85 sentinel monitor mymaster 192.168.60.30 6379 2
 #初始化监听,都是监听主。监听主服务器的状态
 #2 对应的就是从服务器的数量以及投票的参与者要和从服务器的数量一致。
 #2台服务器投票通过,主才能进行故障转移。
 114 sentinel down-after-milliseconds mymaster 30000
 #判断服务器宕机的时间周期  30秒     每30秒检测一次
 147 sentinel failover-timeout mymaster 180000
 #判断故障节点的超时的最大时间    180秒
#先起主
[root@test3 redis-5.0.7]# redis-sentinel sentinel.conf &
[1] 35685
[root@test3 redis-5.0.7]# redis-cli -p 26379 info Sentinel
#再起从
[root@redis1 redis-5.0.7]# redis-sentinel sentinel.conf &
[1] 18757
[root@redis1 redis-5.0.7]# redis-cli -p 26379 info Sentinel

集群:

把每两台服务器作为主从模式,形成一个大的主从的集群

解决了写操作的负载均衡。较为完善的高可用方案

缺点:保证高可用,对数据的完整性要求不高。

redis3.0之后的分布式存储方案

集群由多个节点组成,redis数据保存在这些节点。集群中的节点分为主和从。

主负责读写以及维护集群的信息

从节点进行主节点数据的复制(也可以查)

redis集群的数据分片

在集群概念中,引用的是hash槽的概念

创建了集群就有16384个hash槽

0~16383

3个节点:

主1 0~5460

主2 5461~10922

主3 10923~16383

节点当中,如果主和从全部失败,整个集群都将不可用。

部署哨兵模式:

192.168.60.30 redis 主1

192.168.60.31 主2

192.168.60.70 主3

192.168.60.33 从1

192.168.60.34 从2

192.168.60.35 从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行取消注释
 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.60.30 --cluster create 192.168.60.30:6379 192.168.60.31:6379 192.168.60.70:6379 192.168.60.34:6379 192.168.60.33:6379 192.168.60.35:6379 --cluster-replicas 1
#在集群的主连接节点配置节点(192.168.60.30)
[root@test3 ~]# redis-cli -h 192.168.60.30 -p 6379
192.168.60.30:6379> cluster slots           #查看hash槽的分配数量
1) 1) (integer) 0
   2) (integer) 5460
   3) 1) "192.168.60.30"
      2) (integer) 6379
      3) "98d9ae173e3819c6db5c203631fdecdc48454efa"
   4) 1) "192.168.60.33"
      2) (integer) 6379
      3) "fd1e5a933fa758fb85ff86456fef1189c5dff573"
2) 1) (integer) 5461
   2) (integer) 10922
   3) 1) "192.168.60.31"
      2) (integer) 6379
      3) "2efc007ee1b53f8341106f68826c7ea0857e5639"
   4) 1) "192.168.60.35"
      2) (integer) 6379
      3) "eadd988775c3e9412616e2dd6caa06f1a42252bc"
3) 1) (integer) 10923
   2) (integer) 16383
   3) 1) "192.168.60.70"
      2) (integer) 6379
      3) "612a04150651a4b0d0d99d5a939345f42d133000"
   4) 1) "192.168.60.34"
      2) (integer) 6379
      3) "4f5dcd83674f988a7763e020f3e9580a5fd4e831"
192.168.60.30:6379> cluster nodes           #查看主从节点
98d9ae173e3819c6db5c203631fdecdc48454efa 192.168.60.30:6379@16379 myself,master - 0 1722408517000 1 connected 0-5460
fd1e5a933fa758fb85ff86456fef1189c5dff573 192.168.60.33:6379@16379 slave 98d9ae173e3819c6db5c203631fdecdc48454efa 0 1722408515000 5 connected
4f5dcd83674f988a7763e020f3e9580a5fd4e831 192.168.60.34:6379@16379 slave 612a04150651a4b0d0d99d5a939345f42d133000 0 1722408517928 4 connected
2efc007ee1b53f8341106f68826c7ea0857e5639 192.168.60.31:6379@16379 master - 0 1722408516000 2 connected 5461-10922
eadd988775c3e9412616e2dd6caa06f1a42252bc 192.168.60.35:6379@16379 slave 2efc007ee1b53f8341106f68826c7ea0857e5639 0 1722408517000 6 connected
612a04150651a4b0d0d99d5a939345f42d133000 192.168.60.70:6379@16379 master - 0 1722408516921 3 connected 10923-16383

redis-cli -h 192.168.60.30 --cluster create 192.168.60.30:6379 192.168.60.31:6379 192.168.60.70:6379 192.168.60.34:6379 192.168.60.33:6379 192.168.60.35:6379 --cluster-replicas 1

192.168.60.30 集群的主连接节点 配置节点

--cluster create 192.168.60.30:6379 192.168.60.31:6379 192.168.60.70:6379 192.168.60.34:6379 192.168.60.33:6379 192.168.60.35:6379

前面的是主,后面的是从

--cluster-replicas 1

表示每个主只有一个节点

集群:moved表示报错,只是系统提示客户端到指定为止的hash槽进行读或者写

系统提示啥,那就去哪个节点操作即可 这个节点是改节点的主。

集群的功能只是满足了高可用和写的负载均衡,不能保证数据的完整性。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值