redis集群 高可用
redis集群的三种模式:
1.主从复制(奇书 3台 一主两从)
2.哨兵模式 (3台 一主两从)
3.cluster (集群 6 333)
主从复制:喝MySQL的主从复制类似,主可以写,写入主的数据通过RDB方式把数据同步到从服务器。从不能更新到主。也是哨兵模式的基础。
缺点:没有办法进行故障自动化恢复,只有主能够写。
哨兵:故障自动化恢复,主从复制完成之后,从服务器变成只读模式
故障切换时,主故障,变成从服务器,主变成从之后,也会进入只读模式。
缺点:从节点一旦故障,读会受到影响。
集群:把每两台服务器作为主从模式,形成一个大的主从的集群
优点:解决了写操作的负载均衡。较为完善的高可用方案
缺点:保证高可用,对数据的完整性要求不高。
主从复制:
主节点和从节点
数据的复制是单向的,由主复制到从
主从复制的流程:
部署主从复制
192.168.233.11 主
192.168.233.12 从1
192.168.233.13 从2
三台同步操作
#关闭防火墙
systemctl stop firewalld
setenforce 0
#时间同步
yum -y install ntpdate
ntpdate ntp.aliyun.com
date
主
vim /etc/redis/6379.conf
----70行---
bind 0.0.0.0
----137行---
daemonize yes
----700行---
appendonly yes
#重启服务
/etc/init.d/redis_6379 restart
#查看端口
netstat -anpt | grep 6379
从1
vim /etc/redis/6379.conf
----70行---
bind 0.0.0.0
----287行---
replicaof 192.168.122.11 6379
----700行---
appendonly yes
#重启服务
/etc/init.d/redis_6379 restart
#查看端口
netstat -anpt | grep 6379
从2
vim /etc/redis/6379.conf
----70行---
bind 0.0.0.0
----287行---
replicaof 192.168.122.11 6379
----700行---
appendonly yes
#重启服务
/etc/init.d/redis_6379 restart
#查看端口
netstat -anpt | grep 6379
哨兵模式:
切换方式:不是按照权重来进行切换。
主宕机,其他服务器投票选举Raft算法。选一个离当前时间点更新最快的从变成主
192.168.233.11 主
192.168.233.12 从1
192.168.233.13 从2
三台同步操作
cd /opt/redis-5.0.7/
vim sentinel.conf
----21行---
#默认端口
port 26379
----17行---
#关闭保护模式
protected-mode no
----26行---
#开启后台运行
deamoniza yes
----37行---
#记录日志
logfile "/var/log/sentinel.log"
----65行---
#数据库的工作目录
dir "/var/lib/redis/6379"
----84行---
#初始化监听都是监听主。监听主服务器的状态
#2就是对应的从服务器的数量以及投票的参与者,参与者要和从服务器的数量一致
#2台服务器投票通过,主才能举行故障转移
sentinel monitor mymaster 192.168.233.11 6379 2
----113行---
#判断服务器宕机的时间周期 30秒 每30秒检测一次
sentinel down-after-milliseconds mymaster 3000
----146行---
#判断故障节点的超时最大时间 180秒
sentinel failover-timeout mymaster 180000
先启动主再启动从
主
#启动哨兵模式
redis-sentinel sentinel.conf &
#查看哨兵状态
redis-cli -p 26379 info Sentinel
#查看日志文件
tail -f /var/log/sentinel.log
#关闭redis
/etc/init.d/redis_6379 stop
#主故障后会切换到从,从变成主拥有读写权限,主恢复后变成从,变成只读模式
#主恢复,会立刻从RDB文件中获取数据,实现同步
/etc/init.d/redis_6379 start
从1
#启动哨兵模式
redis-sentinel sentinel.conf &
#查看哨兵状态
redis-cli -p 26379 info Sentinel
#查看日志文件
tail -f /var/log/sentinel.log
从2
#启动哨兵模式
redis-sentinel sentinel.conf &
#查看哨兵状态
redis-cli -p 26379 info Sentinel
#查看日志文件
tail -f /var/log/sentinel.log
集群:
redis3.0之后的分布式存储方案
集群由多个节点组成,redis数据保存在这些节点
集群中的节点分为主和从。
主负责读写已经维护集群的信息
从节点字节进行主节点数据的复制(也可以查)
redis集群的数据分片
在集群概念中,引用的是hash槽的概念
创建了集就有16384个哈希槽
0-16384
3个节点:
主1 0-5460
主2 5461-10922
主3 10923-16383
节点当中,如果主和从全部失败,整个集群都将不可用。
192.168.233.11 主 1
192.168.233.12 主2
192.168.233.13 主3
192.168.233.14 从1
192.168.233.15 从2
192.168.233.16 从3
6台机器同时操作
#关闭防火墙
systemctl stop firewalld
setenforce 0
#时间同步
yum -y install ntpdate
ntpdate ntp.aliyun.com
#验证
date
#进入配置文件
vim /etc/redis/6379.conf
----70行----
#注释掉
#bind 127.0.0.1
----89行----
#关闭保护模式
protecter-mode no
----833行----
#是否允许集群模式开启
cluster-enabled yes
---841---
#取消注释,集群配置文件
cluster-config-file nodes-6379.conf
---847----
#集群超时时间,取消注释
cluster-node-timeout 15000
-----700----
#启用持久化
appendonly yes
#重启
/etc/init.d/redis_6379 restart
redis-cli -h 192.168.233.11 --cluster create 192.168.233.11:6379 192.168.233.14:6379 192.168.233.12:6379 192.168.233.15:6379 192.168.233.13:6379 192.168.233.16:6379 --cluster-replicas 1
192.168.233.11集群的主连接节点 配置节点
–cluster create 192.168.233.11:6379 192.168.233.14:6379 192.168.233.12:6379 192.168.233.15:6379 192.168.233.13:6379 192.168.233.16:6379 前面的是主,后面的是从
–cluster-replicas 1 表示每个主只有一个节点
集群:moved不是报错,注释系统提示客户端到指定位置的哈希槽进行读或者写,系统提示啥,就去哪个节点操作即可,这个节点是该节点的主
集群的功能只是满足了高可用和写的负载均衡,不能保证数据的完整性。
#看槽位
cluster slots
#看各个节点的信息
CLUSTER NODES
标签:---,主从复制,redis,192.168,哨兵,----,6379,sentinel
From: https://blog.csdn.net/gjw01/article/details/140827274