Redis高可用

https://www.cnblogs.com/bingshu/p/9776610.html

Redis高可用概述

在 Web 服务器中,高可用 是指服务器可以 正常访问 的时间,衡量的标准是在 多长时间 内可以提供正常服务(99.9%99.99%99.999% 等等)。

在 Redis 层面,高可用 的含义要宽泛一些,除了保证提供 正常服务(如 主从分离快速容灾技术 等),还需要考虑 数据容量扩展数据安全 等等。

在 Redis 中,实现 高可用 的技术主要包括 持久化复制哨兵 和 集群,下面简单说明它们的作用,以及解决了什么样的问题:

  • 持久化:持久化是 最简单的 高可用方法。它的主要作用是 数据备份,即将数据存储在 硬盘,保证数据不会因进程退出而丢失。
  • 复制:复制是高可用 Redis 的基础,哨兵 和 集群 都是在 复制基础 上实现高可用的。复制主要实现了数据的多机备份以及对于读操作的负载均衡简单的故障恢复。缺陷是故障恢复无法自动化、写操作无法负载均衡、存储能力受到单机的限制。
  • 哨兵:在复制的基础上,哨兵实现了 自动化 的 故障恢复。缺陷是 写操作 无法 负载均衡存储能力 受到 单机 的限制。
  • 集群:通过集群,Redis 解决了 写操作 无法 负载均衡 以及 存储能力 受到 单机限制 的问题,实现了较为 完善 的 高可用方案

Redis主从复制搭建

准备三台服务器

192.168.31.128
192.168.31.129
192.168.31.130

安装Redis,详细参考

将128服务期设为主服务器

主节点需加入一下配置

# 主节点认证密码,如果设置了密码,就要设置
masterauth 123456

将129 130 服务器设置为从服务器

从节点需要加入以下配置

 # 从节点要跟随的主节点
 slaveof 192.168.31.128 6397

# 主节点认证密码,如果设置了密码,就要设置
masterauth 123456

配置完成后重启三台服务器Redis服务

查看master信息

192.168.31.128:0>INFO Replication
"# Replication
role:master
connected_slaves:2
slave0:ip=192.168.31.129,port=6379,state=online,offset=950,lag=1
slave1:ip=192.168.31.130,port=6379,state=online,offset=950,lag=1
master_replid:1464d0fb6b8c7b19e104fb09f2de573191c2513c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:950
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:950

查看slave信息

192.168.31.129:0>INFO Replication
"# Replication
role:slave
master_host:192.168.31.128
master_port:6379
master_link_status:up
master_last_io_seconds_ago:8
master_sync_in_progress:0
slave_repl_offset:1020
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:1464d0fb6b8c7b19e104fb09f2de573191c2513c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1020
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1020

Redis主从复制的问题

Redis 主从复制 可将 主节点 数据同步给 从节点,从节点此时有两个作用:

  1. 一旦 主节点宕机从节点 作为 主节点 的 备份 可以随时顶上来。
  2. 扩展 主节点 的 读能力,分担主节点读压力。

主从复制 同时存在以下几个问题:

  1. 一旦 主节点宕机从节点 晋升成 主节点,同时需要修改 应用方 的 主节点地址,还需要命令所有 从节点 去 复制 新的主节点,整个过程需要 人工干预
  2. 主节点 的 写能力 受到 单机的限制
  3. 主节点 的 存储能力 受到 单机的限制
  4. 原生复制 的弊端在早期的版本中也会比较突出,比如:Redis 复制中断 后,从节点 会发起 psync。此时如果 同步不成功,则会进行 全量同步主库 执行 全量备份 的同时,可能会造成毫秒或秒级的 卡顿

原文地址:https://www.cnblogs.com/miye/p/12164996.html

时间: 2024-10-12 03:02:03

Redis高可用的相关文章

搭建一个redis高可用系统

一.单个实例 当系统中只有一台redis运行时,一旦该redis挂了,会导致整个系统无法运行. 单个实例 二.备份 由于单台redis出现单点故障,就会导致整个系统不可用,所以想到的办法自然就是备份(一般工业界认为比较安全的备份数应该是3份).当一台redis出现问题了,另一台redis可以继续提供服务. 备份 三.自动故障转移 虽然上面redis做了备份,看上去很完美.但由于redis目前只支持主从复制备份(不支持主主复制),当主redis挂了,从redis只能提供读服务,无法提供写服务.所以

Keepalived+Redis高可用部署(第二版)

更新 20150625 脚本由5个减少为4个,sh脚本指令做了精简. 修改了另外3个脚本,在日志里增加了日期显示. 新增redis数据类型,持久化,主从同步简介. 新增hiredis简介. 新增c语言客户端测试. Redis简介及安装 Redis是一个开源,先进的key-value存储,用于构建高性能,可扩展的Web应用程序的完美解决方案. Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许多键值数据存储,Redis拥有一套较为丰富的数据

利用redis-sentinel+consul实现redis高可用

在前文<利用redis-sentinel+keepalived实现redis高可用>详细描述了利用redis-sentinel+keepalived实现redis高可用的方案.本文中redis-sentinel的应用场景也是一样的,也是提供Redis单实例服务,当某Redis(master)服务意外停掉或该服务所在的主机发生宕机故障或网络故障时,另一台Redis服务会由slave自动成为master,提供Redis读写服务.redis-sentinel的配置可以参考前文,本文略去,只讨论con

利用redis-sentinel+keepalived实现redis高可用

目标.需求: 为上层应用提供高可靠.低延迟.低(无限接近0)数据损失的Redis缓存服务 方案概述: 采用同一网络内的三台主机(可以是物理主机.虚拟机或docker容器),要求三台主机之间都能相互访问,每一台主机上都安装redis-server.redis-sentinel和keepalived. redis-server负责提供Redis缓存服务,三台主机间的关系是master-slave-slave redis-sentinel负责提供Redis高可用,三台主机间的关系与redis-serv

Redis高可用部署及监控

Redis高可用部署及监控 目录                        一.Redis Sentinel简介 二.硬件需求 三.拓扑结构 1.单M-S结构 2.双M-S结构 3.优劣对比 四.配置部署 1.Redis配置 2.Redis Sentinel配置 3.启动服务 4.故障模拟检测 五.备份恢复 1.备份策略 2.灾难恢复 六.运维监控 1.安全监控 2.性能监控   一.           Redis Sentinel简介   Redis Sentinel是redis自带的集

3台服务器Redis高可用哨兵模式

3台服务器Redis高可用哨兵模式 学习 redis 高可用 3台服务器Redis高可用哨兵模式 3.1 主redis配置 3.2 从redis配置 1. 介绍 2. redis程序安装 3. 哨兵模式配置 3.3 启动redis和哨兵 4. 总结 1. 介绍 Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常. 提醒(Notifi

CentOS下Redis高可用安装笔记

(WJW)Redis高可用安装笔记 [x] 安装环境介绍: Master: T1 Slave: T2 VIP: 192.168.68.45 [x] 安装Redis(Master,Slave) 注意: 安装redis前flushall的修改 查找src/redis.c文件,把 `{"flushdb",flushdbCommand,1,"w",0,NULL,0,0,0,0,0},` `{"flushall",flushallCommand,1,&qu

利用lvs keepalived配置redis高可用及负载均衡

需求 我们用ES做日志服务,架构是 上游数据来源=>redis=>logstash=>ES redis目前还是单点, 没有做高可用, 现在数据量越来越多, 如果下游消费不出问题还好, redis里面数据来了就走,但是下游一旦出问题, 分给redis的内存半小时就撑满了. 看到redis3.0 beta版本已经提供了集群功能, 但是需要client以集群模式接入, 我们这么多上游用户, 不太可能统一要求他们改造. 公司也有硬件的LB, 同事在E公司的时候就是用的硬件LB. 但接入还要申请,

Redis 高可用部署

Redis 高可用原理:Redis使用sentinel机制来实现高可用,sentinel是另外一个集群,主要是用来监控所有的Redis服务器,所以主节点和从节点,监控方式仍然使用的是ping指令,sentinel每隔1秒向master发送[ping],如果在一段时间内没有收到[pong]或者收到无效回复,则认为master下线.sentinel对下线有两种定义: a.主观下线(sdown):sentinel实例本身对服务实例的判断 b.客观下线(odown):多个sentinel实例对同一个服务

Redis 高可用 基于Sentinel + keepalived 实现

1  概述 redis作为缓存工具,如果仅仅单机,一旦挂掉,将对业务造成严重的影响,因此建议生产环境上部署redis高可用环境,本文将基于Sentinel + keepalived 实现redis的高可用. 本文主要介绍实现的步骤和配置文件,不做原理上的介绍 注意,redis的Sentinel高可用有一个很关键的点,只有master节点可以写入,其他节点都只能读,不能写,所以,vip必须配置在master节点上 三台redis ip 分别为 主节点: 192.168.70.32 备节点1:192