一. 主从模式
redis高可用的基础,哨兵模式和集群都是建立在此基础之上。
主从模式和数据库的主从模式是一样的,主负责写入,然后把写入的数据同步到从,从节点只能读不能写(read only)。
不能做高可用的切换,主节点出现故障,没有替换的主节点,所有的写入操作都将失败。
1.1 工作流程
- 当配置完整之后,从节点启动,会向主节点发送一个sync command,请求同步连接
- master都会开启一个后台的进程将主节点的数据保存到数据文件中
- 主节点把数据同步给从节点从节点先把数据保存到硬盘,再加载到内存
主 192.168.246.6
从1 192.168.246.7
从2 192.168.246.10
#主
vim /ete/redis/redis.conf
68添加注释
#bin 127.0.0.1:1
87
protected-mode no
224
daemonize yes
1095
appendonly yes
#从1从2
vim /etc/redis/redis.conf
68添加注释
#bin 127.0.0.1:1
87
protected-mode no
389
添加
replicaof 192.168.246.6 6379
1095
appendonly yes
systemctl restart redis
tail -f /var/log/redis/redis-server.log
二. 哨兵模式
在主从模式的基础之上,哨兵引入了故障的切换的模式
哨兵也是一个分布式的集群结构,对主从结构当中的每台服务器进行监控当出现故障时,通过投票的机制选择一个新的master。被选举出的新的master会将所有的从节点重新连接到自己
从节点会自动同步到主,自动变成只读模式。
2.1 工作模式
- 主从之间,互相有一个心跳的检测
- 当主节点宕机,从节点都会收到主的宕机的信息
- 两个从节点,自动进行投票,选择一个新的主
- 从节点会自动加入新主的主从模式。
主 192.168.246.6
从1 192.168.246.7
从2 192.168.246.10
在配置哨兵模式的第一次的时候,人工的定义好主。
#主从
apt -y install redis-sentinel
vim /etc/redis/sentinel.conf
16行添加注释
18行取消注释
27
daemonize yes
142
sentinel monitor mymaster 192.168.246.6 6379 2
人工定义主的服务器
2的含义:当主节点发生故障,必须要有两个从节点同意,才能进行故障迁移。
143添加
sentinel down-after-milliseconds mymaster 30000
判断服务器宕机的时间周期是30000毫秒,30秒
sentinel failover-timeout mymaster 18000
故障节点的最大超时时间 18000 180秒
systemctl restart redis-sentinel.service
tail -f /var/log/redis/redis-sentinel.log
2.2 故障切换
主
systemctl stop redis
等待30秒
/etc/redis/sentinel.conf里的内容将自动修改
三. 集群
redis-cluster:集群是由多不节点组成,redis的数据分布在节点中,集群的当中每个节点又分主和从。
主负责写,从负责读。
3.1 hash槽位
0-16383个(最少6台服务器)
A-----0~5460
hash—key–>test1=1 test2=2 test3=3
B-----5461~10922
C-----10923~16383
#同步时间(6台服务器)
apt -y install ntpdate
ntpdate ntp aliyun.com
vim /etc/redis/redis.conf
55添加注释
87
protected-mode no
224
daemonize yes
1227取消注释
cluster-enabled yes
#开启集群的功能
1235取消注释
cluster-config-file nodes-6379.conf
#设置集群的配置文件名称
1094
appendonly yes
1241取消注释
cluster-node-timeout 15000
#设置集群的超时时间
#命令行
systemctl restart redis
redis-cli -h 192.168.246.6 --cluster create 192.168.246.6:6379 192.168.246.9:6379 192.168.246.7:6379 192.168.246.10:6379 192.168.246.8:6379 192.168.246.11:6379 --cluster-replicas 1
#--cluster-replicas 1 #表示每个主节点对应一个从节点。
#不会完全按照分配
root@u1:-# redis-cli -h 192.168.246.6 -p 6379192 168 246.6:6379> set test10 10
(error) MOVED 9248 192.168.246.11:6379
#表示客户端尝试将这个数值保存到槽位号是9248的位置,实际槽位在14这个主机。
3.2 集群缺点
redis的集群模式,只是满足高可用,不能实现数据同步。
对数据同步要求很高的场景,选择redis的主从和哨兵模式。