redis主从集群搭建哨兵容灾配置

介绍

搭建一个分布式主从集群,机器有限,设置不同端口,模拟分布式(伪分布式), 多台机器搭建方式一样的。增加哨兵配置,提高系统高可用

环境

机器服务
192.168.116.131:6379master
192.168.116.131:6380slave
192.168.116.131:6381slave

主从架构

在这里插入图片描述
主从通过 rdb 进行数据同步,

主从配置

# 任何ip都可以访问,可以指定
bind 0.0.0.0
# 访问密码
requirepass ikang
# 后台运行
daemonize yes

master配置

# 复制缓冲区的大小,默认关闭
# 缓存区的作用就是用于slave离线后的数据存放,缓冲区越大,slave离线时间就可以越长
# 缓冲区只有在有slave连接的时候才会分片内存,没有slave一段时间后内存就会被释放出来,默认是1m
repl-backlog-size 5mb
# master在没有slave多久后会将缓冲区释放,默认关闭,单位:秒
repl-backlog-ttl 3600
# master正常写入时salve 最少个数。默认为0, 关闭该功能
min-replicas-to-write 2 
# 副本心跳延时,必须小于<=min-replicas-max-lag,认为可用。 默认关闭
min-replicas-max-lag 10
# master的访问密码
masterauth ikang 

salve 配置

# master的ip和端口
replicaof 127.0.0.1 6379 
# slave上要设置访问master的密码
masterauth ikang
# yes:主从复制中,从服务器可以响应客户端请求
# no:主从复制中,从服务器阻塞,有客户端请求时会返回:SYNC with master in progress
replica-serve-stale-data yes
# 节点只允许read,默认就是yes,只对slave 有效
replica-read-only yes
# slave根据指定时间间隔向master发送ping请求
repl-ping-replica-period 10
# 这是哨兵选举的权重,越小被选举的权重就越大
# 当这个值为0则不参数选举
# 默认开启,在slave上配置
replica-priority 100

启动

#进入安装目录,执行启动命令
redis-cli -p 6379 -a ikang

在这里插入图片描述

测试

  • 数据写入、同步测试
    在这里插入图片描述

  • 主写入数据,同步到了从节点

  • 只允许主节点写入

  • 从节点挂掉
    在这里插入图片描述

  • 2个从节点干掉一个从节点后,主节点保存数据失败,主节点设置min-replicas-to-write 值为2,至少有两个从,才能正常写入。启动6380后,服务恢复。

小结

以上是主从节点搭建,测试

redis 作为一个集群使用,从从节点挂点后,符合最小集群配置,服务正常启动,如果主节点挂掉后,从从节点又是只读,会导致整个服务不可用,为了避免这种这种情况发生,集群必须是高可用并且有自愈功能 为了满足高可用、自愈需要用到哨兵

Sentinel(哨兵)

哨兵作用

  • 集群监控:可以监控Redis Master和Slave进程是否正常工作
  • 消息通知:如果redis发生故障,哨兵可以发送消息给到系统管理员
  • 故障转移:如果Master挂了,哨兵可以将Master自动转移到其中一台Slave Node上
  • 配置中心:如果故障转移发生了,通知client客户端新的master地址

为了搭建哨兵,又装了一个机器,在一台机器上也可以。

环境

机器服务
192.168.116.131:6379master
192.168.116.131:6380slave
192.168.116.131:6381slave
192.168.116.132:26379sentinel
192.168.116.132:26380sentinel
192.168.116.132:26381sentinel

哨兵配置

redis安装目录下有哨兵配置sentinel.conf

# 关闭默认的专用IP保护
protected-mode no
port 26379
daemonize yes
# 修改路径文件
pidfile /var/run/redis-sentinel-26379.pid 
logfile /usr/local/sentinel-26379/redis-sentinel.log
dir /usr/local/sentinel-26379
# mymaster监控集群名,随意起名
# 最后一个2(quorum)是指当>=2个哨兵主观认为master下线后(最后这个值一般>哨兵总数的一半),master才会被客观下线,这时sentinel会从slave中选举一个节点来做master
sentinel monitor mymaster 127.0.0.1 6379 2
# 设置哨兵访问主机的密码
sentinel auth-pass mymaster ikang
# 哨兵认为多久无法连接的时长配置,超过这个时间如果无法连接上就主观下线
sentinel down-after-milliseconds mymaster 3000 
# 新的slave成为maser后,其他的的slave要改变master的所属关系,这个1就是改变后重新同步master的并行数量
# slave在同步master数据时不能处理外部请求
sentinel parallel-syncs mymaster 1
# 原master再次被选为新master的时间间隔, 单位:ms
sentinel failover-timeout mymaster 180000 
# 启动sentinel哨兵
redis-sentinel sentinel.conf

查看哨兵配置

# 查看集群master
sentinel master mymaster 
# 查看集群slave
sentinel slaves mymaster
# 查看sentinel的信息
sentinel sentinels mymaster 

干掉master

在这里插入图片描述

  • 主节点被干掉后,哨兵主动从从节点中选择一个节点为主节点

原理

  • 哨兵选主,再sentinel.conf 文件中记录了主从配置
    在这里插入图片描述
  • redis的配置文件中,哨兵通过config命令在从节点,追加replicaof 配置,主节点没有该配置。

总结

redis 的主从高可用高可用集群搭建完成,redis 本身是没有自愈功能,必须借助哨兵,进行故障转移

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值