zoukankan      html  css  js  c++  java
  • redis的主从复制和哨兵

    一. redis的主从复制

      1. 主从复制的概念  

        主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。

        默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

      2. 主从复制的作用

        数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

        故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。

        负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

        高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

    二. redis主从复制的使用

      1. 主从复制的开启

        主从复制的开启,完全是在从节点发起的;不需要我们在主节点做任何事情。

      2. 三种方式

        - 配置文件

          在从库的配置文件中加入 slaveof ip port

        - 启动服务端时

          redis-server /redis.conf  --slaveof ip port

        - 客户端指令

          slaveof -ip -port

      3. 手动切换主库

    1. 准主库, 去除主库
        slaveof no one   
     
    2. 从库更换主库
        slaveof ip port
    
    3. 查看主从信息
        info replication

    三. sentinel哨兵

      1. 哨兵的功能

        哨兵的核心功能是主节点的自动故障转移.

      2. 哨兵功能实现

        监控(Monitoring):哨兵会不断地检查主节点和从节点是否运作正常。

        自动故障转移(Automatic failover):当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。

        配置提供者(Configuration provider):客户端在初始化时,通过连接哨兵来获得当前Redis服务的主节点地址。

        通知(Notification):哨兵可以将故障转移的结果发送给客户端。

      3. 哨兵的配置

    bind 127.0.0.1
    port 26379  
    dir /var/redis/data/
    logfile "26379.log"
    
    // 当前Sentinel节点监控 127.0.0.1:6379 这个主节点
    // 2代表判断主节点失败至少需要2个Sentinel节点节点同意,少数服从多数 
    // mymaster是主节点的别名
    sentinel monitor mymaster127.0.0.1 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 s18ms 180000
    daemonize yes  
    
    # 配置多个哨兵,只需要修改端口即可
    哨兵的配置

      4. 启动哨兵的两种方式

        redis-sentinel  /sentinel-26379.conf

        redis-server /sentinel-26379.conf --sentinel

      5. 查看哨兵的信息命令

        info sentinel

      6. 哨兵切换主从切换总结

        哨兵系统中的主从节点,与普通的主从节点并没有什么区别,故障发现和转移是由哨兵来控制和完成的。

        哨兵节点本质上是redis节点。

        每个哨兵节点,只需要配置监控主节点,便可以自动发现其他的哨兵节点和从节点。

        在哨兵节点启动和故障转移阶段,各个节点的配置文件会被重写(config rewrite)。用来主从切换

        一个哨兵可以监控多个主节点,通过配置多条sentinel monitor即可实现。

  • 相关阅读:
    6-1面向对象
    5-1模块
    python随机数
    4-5目录
    4-4内置函数
    4-3迭代器和生成器
    4-1装饰器1
    4-2装饰器2
    3-4函数-全局变量
    3-5递归-函数
  • 原文地址:https://www.cnblogs.com/q767498226/p/11110241.html
Copyright © 2011-2022 走看看