Redis高可用架构【五】

1. Replication(主从复制)

1.1. 概述

  主从复制指的是主节点复制数据给从节点,主从复制是单向的,只能由主节点同步数据给从节点。

1.2. 主从复制作用

  (1). 数据冗余,实现数据的热备份,容灾。
  (2). 读写分离,主节点提供写服务,从节点提供读服务。
  (3). 故障转移,当主节点挂了,可以手动将从节点转为主节点继续提供服务,用于快速的故障恢复。

1.3. 主从复制的流程

在这里插入图片描述

1.4. 主从复制的拓扑结构

  主从复制有三种拓扑结构,分别为一主一从、一主多从、树状主从。

  (1). 一主一从

在这里插入图片描述
  该结构主节点负责写数据,并将数据同步给从节点,从而达到主从数据一致。

  (2). 一主多从

在这里插入图片描述
  该结构一主拥有多个从节点,主提供写服务,从提供读服务,适用读多的场景。该结构优点是多个从节点都可以提供读服务,提高了读的并发能力;缺点是主节点需要同时将数据同步给三个从节点,主节点压力大。

  (3). 树状主从

在这里插入图片描述

  该结构是对一主多从的补充,主节点主只需同步一次数据给它的从节点(slave1、slave2),从节点(slave1,slave2)再同步数据给它的子节点(slave1-1,slave2-1),这样就将降低了主节点同步数据的压力。

1.5. 一主多从部署

1.5.1. 环境说明

服务器名IP
master10.1.200.37
slave110.1.200.40
slave210.1.200.41

备注: 关闭防火墙

1.5.2. master-slave配置

  (1). master配置

#修改配置如下
bind 0.0.0.0 #设置监控地址,0.0.0.0表示监听所有的地址
daemonize yes  #设置后台启动
masterauth 123456 #设置master认证密码
requirepass 123456 #设置认证密码

  (2). slave1配置

#修改配置如下
bind 0.0.0.0 #设置监控地址,0.0.0.0表示监听所有的地址
replicaof 10.1.200.37 6379 #设置master的Ip和端口号
daemonize yes  #设置后台启动
masterauth 123456 #设置master认证密码
requirepass 123456 #设置认证密码

  (3). slave2配置

#修改配置如下
bind 0.0.0.0 #设置监控地址,0.0.0.0表示监听所有的地址
replicaof 10.1.200.37 6379 #设置master的Ip和端口号
daemonize yes  #设置后台启动
masterauth 123456 #设置master认证密码
requirepass 123456 #设置认证密码

  修改完master、slave1、slave2配置之后,重启master、slave1、slave2的redis服务。

1.5.3. 查看master、slave1、slave2的状态

  查看master状态如下图:

在这里插入图片描述
  查看slave1、slave2状态如下图:
在这里插入图片描述

1.5.4. 验证主从复制

  在master中设置key1=hyc:

在这里插入图片描述
  查看slave1、slave2的key1值:
在这里插入图片描述

2. Sentinel(哨兵机制)

2.1. 概述

  主从复制无法实现故障的自动发现与转移,因此redis实现了哨兵机制来解决这个问题。
  Redis Sentinel是一个分布式系统,为Redis提供高可用的解决方案。可以在一个架构中运行多个Sentinel进程,这些进程使用流言协议(gossip protocol)来接收关于主服务器是否下线的消息,并使用投票协议(agreement protocol)来决定是否执行自动故障转移,以及选举那个Sentinel进程来进行故障转移工作。

2.2. 哨兵机制的作用

  (1). 监听: 实时监听主从服务器的工作状态。
  (2). 故障转移: 若监听到主服务器发生故障,就选举从服务器作为主服务器,实现故障恢复。
  (3). 通知: 当客户端来访问主服务器时,通知客户端新的主服务器地址,通过脚本可以通知用户主服务器发生故障。

2.3 哨兵机制工作流程

  (1). sentinel系统监控所有的主从服务。
  (2). 当其中一个sentinel监控到master服务不可达时,就认定master主观失效(sdown:subjectively down)。
  (3). 监控到master失效的sentinel会询问其他的sentinel,若此时超过一半以上的sentinel认定master失效,则判定master客观失效(odown:objectively down)。
  (4). sentinel系统内部会进行一轮投票,选举出负责故障转移工作的sentinel。
  (5). 从slave节点中选择出一个节点作为主节点,命令:slaveof no one。
  (6). 将其他的slave节点变成新主节点的从节点,命令:slaveof new master。
  (6). 通知客户端新主节点的地址。
  (7). 旧主节点变为新主节点的从节点,命令:slaveof new master。

在这里插入图片描述

2.4. 哨兵配置文件详解

#master-name: redis主节点的名称
# ip: 主节点IP
# port: 主节点端口
# quorum: 哨兵判断主节点是否发生故障的票数,
# 若设置为2,表示2个哨兵认为主节点失效,主节点就客观失效。一般设置为哨兵数/2+1
sentinel monitor <master-name> <ip> <port> <quorum>

#哨兵会定定期向redis节点发生ping命令来判断redis是否可达,
#若超过指定的times毫秒内还未得到pong回复,则判断该redis不可达
sentinel down-after-milliseconds <master-name> <times>

#当redis主节点节点挂了后,哨兵会选出新的master,
#此时,剩余的slave会向新的master发起同步数据,这个设置表示允许并行同步的slave个数
sentinel parallel-syncs <master-name> <nums>

#进行故障转移时,如果超过设置的times毫秒数,表示故障转移失败
sentinel failover-timeout <master-name>  <times>

#如果redis主节点设置了密码,则需要进行这个配置
sentinel auth-pass <master-name> <password>

2.5. 哨兵部署(三个哨兵、一主二从)

2.5.1. 环境说明

服务器名IPredis端口sentinel端口
master10.1.200.37637926379
slave110.1.200.40637926379
slave210.1.200.41637926379

   备注:
  (1). 关闭防火墙。
  (2). 安装redis请查看该博客:点击
  (3). redis一主二从部署请查看该博客的1.5章节

2.5.2. sentinel配置

  三个sentinel的配置是一样的,分别进入到master、slave1、slave2的redis目录中,修改sentinel.conf。

修改配置如下:

port 26379 #端口

daemonize yes # 后台运行

#日志文件,验证哨兵配置是否成功,就通过该日志文件,一定要设置。
logfile "/usr/redis/logs/sentinel.log" 

#配置master服务信息
sentinel monitor mymaster 10.1.200.37 6379 2

#配置master认证密码,由于redis的slave也有可能成功master,因此也必须设置requirepass
sentinel auth-pass mymaster 123456

#关闭保护模式
protected-mode no

2.5.3. 启动Sentinel

  依次启动master、slave1、slave2的Sentinel。

cd /usr/redis/redis-6.0.8 #进入redis目录

#启动sentinel
./src/redis-sentinel ./sentinel.conf

  master的sentinel启动日志:
在这里插入图片描述
  slave1的sentinel启动日志:
在这里插入图片描述
  slave2的sentinel启动日志:
在这里插入图片描述
  当在三个sentinel日志中都能看到监控到了master、slave1、slave2以及另外俩个sentinel时,恭喜您,说明Redis哨兵模式配置成功。

2.5.3. 验证

  (1). 关闭slave1的redis服务
  sentinel监控到slave1的redis服务失效。

在这里插入图片描述
  (2). 启动slave1的redis服务
  sentinel监控到slave1的redis服务已启动并生效。

在这里插入图片描述
  (3). 关闭master服务
  sentinel监控到master服务已失效,并重新选举slave2作为新master,并将master及slave1修改为slave2的slave。
在这里插入图片描述
自此,哨兵模式的高可用验证成功!

3. Cluster(集群)

后续更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值