精华内容
下载资源
问答
  • Redis哨兵模式

    2020-12-21 17:31:42
    Redis哨兵模式Redis主从原理全量同步增量同步Redis主从同步策略流程主从复制的目的Redis项目部署主从拓补图安装redis配置主服务器配置备服务器在主负服务器上查看主从效果哨兵模式原理概述哨兵模式的作用监控通知...

    Redis主从原理

    Redis.虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis.支持主从复制,保证主数据库的数据内容和从数据库的内容完全一致。Redis的主从结构可以采用一主多从或者级联结构,Redis,主从复制可以根据是否是全量分为全量同步和增量同步。
    在这里插入图片描述

    全量同步

    Redis全量复制一般发生在Slave初始化阶段,这时slave需要将Master上的所有数据都复制一份。具体步骤如下:
    在这里插入图片描述
    ● 从服务器连接主服务器,发送SYNC命令
    ● 主服务器接收到sYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令
    ● 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令
    ● 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照
    ● 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令
    ● 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令

    增量同步

    Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。
    增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。

    Redis主从同步策略流程

    主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave 在任何时候都可以发起全量同步。
    redis 策略是:无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。

    主从复制的目的

    为了让主数据库中的数据复制给从数据库,保证主数据库与从数据库的一致性,使客户端从主与备数据库读取无差别,可以帮助主数据库减轻负载压力,也解决单点故障问题。

    Redis项目部署主从

    拓补图

    在这里插入图片描述

    安装redis

    在这里插入图片描述
    开启键输入到所以回话

    [root@master ~]# tar zxvf redis-5.0.4.tar.gz
    [root@master ~]# cd redis-5.0.4/
    [root@master redis-5.0.4]# make
    [root@master redis-5.0.4]# make PREFIX=/usr/local/redis install
    [root@master bin]# cd /usr/local/redis/
    [root@master redis]# ln -s /usr/local/redis/bin/* /usr/local/bin
    [root@master ~]# cd /usr/local/redis/bin/
    [root@master bin]# cd 
    [root@master ~]# cd redis-5.0.4/utils/
    [root@master utils]# ./install_server.sh 
    

    配置主服务器

    取消键输入到所以回话

    [root@master utils]# cd
    [root@master ~]# vi /etc/redis/6379.conf 
    bind 0.0.0.0                             # 修改监听地址为0.0.0.0
    daemonize yes                        # 开启守护进程
    logfile /var/log/redis_6379.log   # 修改日志文件目录
    dir /var/lib/redis/6379              # 修改工作目录
    appendonly yes                      # 开启AOF持久化功能
    [root@master ~]# /etc/init.d/redis_6379 restart   服务重启
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    配置备服务器

    [root@slave1 utils]# vi /etc/redis/6379.conf 
    bind 0.0.0.0                        # 修改监听地址为0.0.0.0
    appendonly yes                  # 开启AOF持久化功能
    replicaof 20.0.0.10 6379     # 增加一个同步master节点IP和端口
    [root@slave1 utils]# /etc/init.d/redis_6379 restart  服务重启
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在主负服务器上查看主从效果

    [root@master ~]# tail -f /var/log/redis_6379.log 
    

    在这里插入图片描述

    [root@slave1 ~]# tail -f /var/log/redis_6379.log 
    

    在这里插入图片描述

    哨兵模式原理

    概述

    哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。所以整个运行哨兵的集群的数量不得少于3个节点。

    哨兵模式的作用

    监控

    ● 不断的检查master和slave是否正常运行。
    ● master存活检测、master与slave运行情况检测

    通知(提醒)

    ● 当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。

    自动故障转移

    ● 断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址

    PS:哨兵也是一台redis服务器,只是不提供数据服务
    哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的redis工作节点是否正常,当master出现问题的时候,因为其他节点与主节点失去联系,因此会投票,投票过半就认为这个master的确出现问题,然后会通知哨兵间,然后从slaves中选取一个作为新的master

    Redis哨兵模式部署

    基于主从模式做,只有做了主从才能做哨兵

    修改配置

    [root@master ~]# vi redis-5.0.4/sentinel.conf   #取消注释,并修改如下
    17:protected-mode no                   #17行关闭保护模式
    26:daemonize yes                         #26行守护进程开启
    36:logfile "/var/log/sentinel.log"     #36行设置哨兵日志文件路径
    65:dir  /var/lib/redis/6379               #65行指定数据库存放路径
    84:sentinel monitor mymaster 192.168.10.10 6379 2              #84行至少几个哨兵检测到主服务器故障了,才会进行故障迁移
    113:sentinel down-after-milliseconds mymaster 3000              #113行判定服务器down掉的时间周期,默认30000毫秒(30秒)
    146:sentinel failover-timeout mymaster 100000     #146行故障节的的最大超时时间为180000 (180秒)
    

    验证

    启动哨兵模式,主先启动,从后面启动

    [root@master ~]# redis-sentinel redis-5.0.4/sentinel.conf &      #启动哨兵带上配置文件(&:在后台启动)
    [root@redis-slave1 ~]# redis-sentinel redis-5.0.4/sentinel.conf &
    [root@redis-slave2 ~]# redis-sentinel redis-5.0.4/sentinel.conf &
    [root@master ~]# tail -f /var/log/sentinel.log                               #查看日志
    

    在这里插入图片描述

    [root@master ~]# ps aux | grep sentinel              #查看哨兵进程
    

    在这里插入图片描述

    [root@master ~]# redis-cli -h 192.168.10.10 -p 26379           #进数据库查看哨兵信息
    20.0.0.11:26379> info sentinel
    

    在这里插入图片描述

    展开全文
  • redis哨兵模式

    2021-03-26 17:26:31
    redis哨兵模式配置连接池 本篇文章适合redis集群操作。 首先介绍下redis哨兵模式: https://www.jianshu.com/p/06ab9daf921d 转一下吧!哈哈哈,大致是什么意思呢。比如说现在有三台redis服务器,我们给它分配三个哨兵,...

    redis哨兵模式配置连接池

    本篇文章适合redis集群操作。

    首先介绍下redis哨兵模式:

    https://www.jianshu.com/p/06ab9daf921d 转一下吧!哈哈哈,大致是什么意思呢。比如说现在有三台redis服务器,我们给它分配三个哨兵,当多数哨兵发现leader挂了的时候,他们会让小弟上马作为新的leader,这也是多哨兵模式,项目开发中普遍使用这种。就是一个实现高可用,不易宕机。

    代码中实现主要JedisSentinelPool这个类。其中参数有多种选择:

    参数详解:

    masterName:是redis名字。

    set:哨兵模式服务器与端口,“xxx.xx.xx.xx:26379,xxx.xx.xx.xx:26379,xxx.xx.xx.xx:26379”,根据逗号隔开后的set。(必须要是java.util.HashMap)

    poolConfig:这个是连接池中的配置,val poolConfig=new JedisPoolConfig(),可有如下配置:

    poolConfig.setMaxTotal(250)

    poolConfig.setMaxIdle(32)

    poolConfig.setTestOnBorrow(false)

    poolConfig.setTestOnReturn(false)

    poolConfig.setTestWhileIdle(false)

    poolConfig.setMinEvictableIdleTimeMillis(60000)

    poolConfig.setTimeBetweenEvictionRunsMillis(30000)

    poolConfig.setNumTestsPerEvictionRun(-1)

         timeout:超时时长
    
         auth:密码
    

    dbNum:访问的是几库

    获取redis客户端:new JedisSentinelPool(masterName,set,poolConfig,timeout,auth,dbNum)

    其中参数配置可根据实际需求自由搭配。

    依赖导入:

    redis.clients jedis
    展开全文
  • Redis 哨兵模式原理哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行、其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。...

    f9e3e374f4d2d0b97cc87573b8170ed9.png

    Redis 哨兵模式原理

    哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行、其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。

    Linux - redis哨兵集群实例

    命令整理

    官网地址:http://redisdoc.com/redis-cli info #查看redis数据库信息

    redis-cli info replication #查看redis的复制授权信息

    redis-cli info sentinel #查看redis的哨兵信息

    配置流程

    思路:

    redis主从

    一主两从的方案

    1.环境准备,准备一主两从的redis架构

    redis-6379.confport 6379

    daemonize yes

    logfile "6379.log"

    dbfilename "dump-6379.rdb"

    dir "/opt/redis/6379/"

    redis-6380.conf

    port 6380

    daemonize yes

    logfile "6380.log"

    dbfilename "dump-6380.rdb"

    dir "/opt/redis/6380/"

    slaveof 127.0.0.1 6379

    redis-6381.conf

    port 6381

    daemonize yes

    logfile "6381.log"

    dbfilename "dump-6381.rdb"

    dir "/opt/redis/6381/"

    slaveof 127.0.0.1 6379

    2.准备三个数据文件夹mkdir -p /opt/redis/{6379,6380,6381}

    3。分别启动三个数据库[root@master sbredis]# redis-server redis-6379.conf

    [root@master sbredis]# redis-server redis-6380.conf

    [root@master sbredis]# redis-server redis-6381.conf

    4.检测主从状态redis-cli -p 6379 info replication

    redis-cli -p 6380 info replication

    redis-cli -p 6381 info replication

    5.准备三个redis哨兵,进行检测主从状态

    准备三个哨兵的配置文件

    redis-26379.conf// Sentinel节点的端口

    port 26379

    dir /var/redis/data/

    logfile "26379.log"

    // 当前Sentinel节点监控 192.168.119.10:6379 这个主节点

    // 2代表判断主节点失败至少需要2个Sentinel节点节点同意

    // mymaster是主节点的别名

    sentinel monitor mymaster 192.168.119.10 6379 2

    //每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒30s且没有回复,则判定不可达

    sentinel down-after-milliseconds mymaster 30000

    //当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,

    原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1

    sentinel parallel-syncs mymaster 1

    //故障转移超时时间为180000毫秒

    sentinel failover-timeout mymaster 180000

    redis-26380.conf

    port 7000

    daemonize yes

    dir "/opt/data"

    logfile "7000.log"

    dbfilename "dump-7000.rdb"

    cluster-enabled yes

    cluster-config-file nodes-7000.conf

    cluster-require-full-coverage no

    redis-26381.conf

    三个配置文件,仅仅是端口的不同,通过命令快速生成配置文件[root@master sbredis]# sed "s/26379/26380/g" redis-26379.conf > redis-26380.conf

    [root@master sbredis]# sed "s/26379/26381/g" redis-26379.conf > redis-26381.conf

    6.分别启动三个哨兵[root@master sbredis]# redis-sentinel redis-26379.conf

    [root@master sbredis]# redis-sentinel redis-26380.conf

    [root@master sbredis]# redis-sentinel redis-26381.conf

    7.检测哨兵,主从状态redis-cli -p 26379 info sentinel

    看到如下信息,就和我一样了[root@master sbredis]# redis-cli -p 26379 info sentinel

    Sentinel

    sentinel_masters:1

    sentinel_tilt:0

    sentinel_running_scripts:0

    sentinel_scripts_queue_length:0

    sentinel_simulate_failure_flags:0

    master0:name=s17ms,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

    8.测验,干掉master redis,是否自动切换ps -ef|grep redis

    kill 进程

    ..

    9.再次启动redis 6379 查看它是否加入 主从集群redis-server redis-6379.conf

    推荐教程:《Redis教程》

    展开全文
  • redis 哨兵模式

    2019-01-21 16:33:55
    redis 哨兵模式:调用端口采用哨兵端口,而不是从库端口

    redis 哨兵模式:调用端口采用哨兵端口,而不是从库端口

    展开全文
  • redis哨兵模式哨兵模式概述哨兵模式主要是基于前面用到的主从模式进行改造的,由于主从模式的缺陷,所以哨兵模式弥补了这一缺陷优点监控主数据库和从数据库是否正常运行主数据库出现故障时,可以自动将从数据库转换...
  • Redis 哨兵模式

    2020-05-11 22:34:02
    Redis 哨兵模式 前景 如果redis主从架构中出现宕机怎么办? 从Redis 宕机 a)这个相对而言比较简单,在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据; b)如果从库在断开期间,主库的变化不大,...
  • redis哨兵模式哨兵模式概述哨兵模式主要是基于前面用到的主从模式进行改造的,由于主从模式的缺陷,所以哨兵模式弥补了这一缺陷优点监控主数据库和从数据库是否正常运行主数据库出现故障时,可以自动将从数据库转换...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,819
精华内容 2,727
关键字:

redis哨兵模式

redis 订阅