Redis集群
redis集群三种模式
1、主从复制( 奇数 3 一主两从 )
2、哨兵模式 3 一主两从
3、cluster 集群 6 3 3 3 9
1、主从复制
主从复制:和mysql的主从复制类似,主可以写,写入主的数据通过RDB方式把数据同步到从服务器。从不能更新到主,也是哨兵模式的基础
缺点:没有办法实现故障自动化恢复,只有主能够写
主从复制:主节点和从节点、数据的复制是单向的,由主复制到从
主从复制的流程:从想主发起请求,主受到后创建RDB文件
部署主从复制
服务器:
redis1 192.168.100.21 主
redis2 192.168.100.22 从1
redis3 192.168.100.23 从2
# redis1、2、3
systemctl stop firewalld
setenforce0
yum -y install ntpdate
ntpdate ntp.aliyun.com
date
redis1
vim /etc/redis/6379.conf
70 改成0.0.0.0或者注释,注释默认所有
137 查看是否注释掉了
700 appendonly no改成yes
redis2
vim /etc/redis/6379.conf
70 改成0.0.0.0或者注释,注释默认所有
287 replicaof 192.168.100.21 6379
700 appendonly yes # 打开aof持久化功能
redis3
vim /etc/redis/6379.conf
70 改成0.0.0.0或者注释,注释默认所有
287 replicaof 192.168.100.21 6379
700 appendonly yes # 打开aof持久化功能
# 同时
/etc/init.d/redis_6379 restart
netstat -antp | grep 6379
redis1
tail -f /var/log/redis_6379.log
2、哨兵模式
哨兵:故障自动化恢复,主从复制完成之后,从服务器会变成只读模式
切换方式:不是按照权重来进行切换,投票:主宕机,其他服务器投票选举,通过Raft算法,选一个例当前时间点更新最快的从变成主
故障切换时,主故障,变成从服务器,主变成从之后,也会进入只读模式
缺点:从节点一旦故障,读会受到影响
部署哨兵模式:
哨兵模式:基于主从复制基础上
服务器:
redis1 192.168.100.21 主
redis2 192.168.100.22 从1
redis3 192.168.100.23 从2
同步操作
cd /opt
cd /opt/redis-5.0.7
# redis-5.0.7自带哨兵模式源码包--setinel.conf
vim sentinel.conf
21 port 26379 不动,哨兵模式的默认端口
17 protected-mode no # 取消注释 # 关闭保护模式
27 daemonize no 改成yes
36 logfile "/var//log/sentinel.log"
65 dir "/var/lib/redis/6379"
84 sentinel monitor mymaster 192.168.100.21 6379 2
# 监听初始化监听,都是监听主服务器的状态,
#2 对应的就是从服务器的数量以及投票的参与者,参与者要和从服务器的数量一致
113 sentinel down-after-milliseconds mymaster 30000
# 判断服务器宕机的时间周期 30秒 每30秒检测一次
146 sentinel failover-timeout mymaster 180000
# 判断故障节点的超时的最大时间 180秒
wq!
先启动主,再启动从!!!
redis-sentinel sentinel.conf &
redis1
redis-cli -p 26379 info Sentinel
哨兵模式创建完成
redis1
/etc/init.d/redis_6379 stop
查看日志文件
tail -f /var/log/sentinel.log
3、集群
集群:把每两台服务器作为主从模式,形成一个大的主从集群,解决了写操作色负载均衡,较为完善的高可用方案
缺点:保证高可用,对数据的完整性要求不高
集群:redis3.0之后的分布式存储方案。集群由多个节点组成,redis数据保存在这些节点、集群中的节点分为主和从,主负责读写以及维护集群的信息,从节点进行主节点数据的复制(也可以查)。
redis集群的数据分片:在集群概念中,引用hash槽的概念,创建了集群有16384个哈希槽(0~16384)
3个节点:
主1:0~5460
主2:5461~10922
主3:10923~16383
注意:节点当中,如果主和从全部失败,整个集群都将不可用
集群部署:
集群:基于主从复制基础上,与哨兵不兼容
服务器:
redis1 192.168.100.21 主1
redis2 192.168.100.22 主2
redis3 192.168.100.23 主3
redis4 192.168.100.24 从1
redis5 192.168.100.25 从2
redis6 192.168.100.26 从3
# redis1、2、3、4、5、6
systemctl stop firewalld
setenforce 0
yum -y install ntpdate
ntpdate ntp.aliyun.com
date
vim /etc/redis/6379.conf
70 注释
89 protected-mode no
136
833 cluster-enabled yes 取消注释
841 cluster-config-file nodes-6379.conf 取消注释
847 cluster-node-timeout 15000 取消注释
700 appendonly yes
wq!
/etc/init.d/redis_6379 restart
# 启动集群和分配主从
redis-cli -h 192.168.100.21 --cluster create 192.168.100.21:6379 192.168.100.24:6379 192.168.100.22:6379 192.168.100.25:6379 192.168.100.23:6379 192.168.100.26:6379 --cluster-replicas 1
------------------------------------------------------------------------------------------------------------
# -h 192.168.100.21
配置集群的主连接节点---在那台机器上配就写那一台机器
# --cluster create 192.168.233.7:6379 192.168.233.14:6379 192.168.233.8:6379 192.168.233.15:6379 192.168.233.9:6379 192.168.233.16:6379
前面是主,后面是从
# --cluster-replicas 1
表示每个主只有一个节点
redis-cli -h 192.168.100.21 -p 6379
cluster slots # 查看hash槽的分配
cluster nodes # 查看节点
集群总结:moved不是报错,只是系统提示客户端到指定位置的哈希槽进行读或者写,系统提示啥,你就去哪个节点操作即可,这个节点是该节点的主
集群的功能只是满足了高可用和写的负载均衡,不能保证数据的完整性
redis-cli -h 192.168.100.21 -p 6379
cluster slots # 查看hash槽的分配
cluster nodes # 查看节点
集群总结:moved不是报错,只是系统提示客户端到指定位置的哈希槽进行读或者写,系统提示啥,你就去哪个节点操作即可,这个节点是该节点的主
集群的功能只是满足了高可用和写的负载均衡,不能保证数据的完整性