redis3-[高级]主从复制(集群)|哨兵机制|淘汰机制

本文介绍了Redis的高可用机制,包括主从复制的环境准备、配置与实现,详细阐述了哨兵系统的配置、功能以及在主服务器宕机时如何进行自动故障迁移。此外,还提及了Redis集群的相关知识点和淘汰机制。
摘要由CSDN通过智能技术生成

客户端程序

redis-server:Redis服务器程序
redis-cli:Redis客户端程序,它是一个命令行操作工具。也可以使用telnet根据其纯文本协议操作。
redis-benchmark:Redis性能测试工具,测试Redis在你的系统及配置下的读写性能。


高可用机制

redis单点的缺点: 1、内存容量有限 2、处理能力有限 3、无法高可用。

主从复制哨兵模式
集群(proxy 型)集群(直连型)

主从复制

数据备份,读写分离,集群,高可用,宕机容错

mysql的主从复制(实时):从服务器从主服务器获取并执行快照文件

1.准备环境

1.虚拟机(克隆三个centos7)
2.为三个虚拟机生成专用mac地址
在这里插入图片描述
3.ifconfig查看ip地址,关闭防火墙service iptables stop/systemctl stop firewalld

  • 主master 192.168.18.128 权限:读和写 个数:智能有一个
  • 从1 slave 192.168.18.129 权限:读
  • 从2 slave 192.168.18.130 权限:读

4.安装redis
安装gcc
解压redis,修改配置文件
开启端口firewall-cmd --add-port=6379/tcp

安装配置全部文件下载链接点击下载

1.主配置文件需要配

Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。
主要配置修改密码:requirepass 123456
详细配置连接我的有道笔记

让其他电脑访问到redis三种设置

1.关闭绑定本机

# bind 127.0.0.1

2.redis.conf中设置保护模式为no

protected mode no

3.设置密码

requirepass "123456"

2.从服务器需要额外多配置

#配置主redis的信息   ip/端口/密码
slaveof 192.168.18.128 6379
masterauth 1234567

启动redis

将redis.conf文件复制到src下,在,服务器redis下执行命令
./redis-server redis.conf
在这里插入图片描述

主服务器结果显示:129/130已经连接到128上面,至此成功!

在这里插入图片描述

其他查看方式
在这里插入图片描述
输入命令info
在这里插入图片描述

注意:从节点不能进行写操作(读写分离)

主从复制 总结

解决了读的压力,无法保证高可用,没有解决 master 写的压力


redis自带哨兵机制

哨兵机制(监听 ) port:26379
Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:

  • 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。
  • 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。
  • 自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。

哨兵(sentinel) 是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossipprotocols)来接收关于Master是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master.
每个哨兵(sentinel) 会向其它哨兵(sentinel)、master、slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的”主观认为宕机” Subjective Down,简称sdown).
若“哨兵群”中的多数sentinel,都报告某一master没响应,系统才认为该master"彻底死亡"(即:客观上的真正down机,Objective Down,简称odown),通过一定的vote算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置.
虽然哨兵(sentinel) 释出为一个单独的可执行文件 redis-sentinel ,但实际上它只是一个运行在特殊模式下的 Redis 服务器,你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动哨兵(sentinel).
哨兵(sentinel) 的一些设计思路和zookeeper非常类似

哨兵机制配置文件sentinel.conf修改

# 配置主服务器
sentinel monitor mymaster  192.168.18.128 6379 1
# 配置密码
sentinel auth-pass mymaster 1234567
# 修改心跳检测30毫秒
sentinel down-after-milliseconds mymaster 30
#做多多少合格节点
sentinel parallel-syncs mymaster 2

启动成功

在这里插入图片描述

模拟宕机场景 主128

在这里插入图片描述

128宕机,选举130为主服务器,130能够set key测试:

在这里插入图片描述

查看info
在这里插入图片描述

keepalived监听当所有服务器宕机,使用keepalived,自动重启,邮件告警

集群总结

1、保证高可用
2、监控各个节点
3、自动故障迁移

缺点:主从模式,切换需要时间丢数据
没有解决 master 写的压力

集群相关知识点

1.Redis哈希槽的概念?

Redis集群没有使用一致性hash,而是引入了哈希槽的概念,Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。

2.Redis集群会有写操作丢失吗?

Redis并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可能会丢失写操作。
Redis集群之间是如何复制的?异步复制

淘汰机制

当超过设定的内存大小server.maxmemory

  • LRU 从已设置过期时间中,挑选最少使用的数据淘汰 <常用>
  • TTL 从已设置过期时间中,挑选快要过期的数据淘汰
  • random 任意数据淘汰
  • enviction 禁止驱逐数据
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值