美文网首页redis
Redis笔记(六)复制以及高可用

Redis笔记(六)复制以及高可用

作者: huyi0616 | 来源:发表于2017-03-09 08:36 被阅读40次

    [图片上传中。。。(1)]
    从日志记录来看,从服务器128从主服务器130上备份数据成功

    1、为什么要复制

    • 实现数据的多副本存储,实现服务的高可用
    • 提供更好的读性能
    • 提供更好的安全性

    2、复制的技术关键点以及难点

    • 如何指定复制对象
    • 增量还是全量以及如何实现增量?
    • 复制时不影响前端业务的操作
    • 网络被中断后如何处理
    • 如何防止发送出去的数据丢失没到到达从服务器
    • 如何识别复制的数据源发生变化,导致数据出错

    3、复制步骤

    3.1 指定master

    1. 配置文件配置slaveof
    2. 从节点命令行执行slaveof命令

    3.2 建立socket连接

    • 从服务器根据配置或者命令行slaveof创建连向主服务器的socket

    3.3发送ping命令:当连接创建后发送

    1. 通过ping命令检查socket的读写状态是否正常
    2. 检查主服务器能否正常处理命令请求
    3. 当从服务器不能在规定时间内得到ping的回复,则表示网络不正常,从服务器会断开socket并重新创建连接
    4. 如果从服务器收到主服务器返回一个错误信息,比如BUSY redis is busy runing a script,you can ...,则从服务器会断开连接并创新创建连接
    5. 如果从服务器收到的回应是“ PONG”,则表示一切正常,可以执行下一步流程

    3.4 身份验证

    • 如果从服务器设置了masterauth选项,则进行身份验证,否则不就行
    • 通过向master发送美丽的auth来实现认证,比如auth passwd
    • 当master没有设置requirepass时,会提示no passwd is set
    • 如果master的设置与slave的密码不一样,则出现invalid password提示

    3.5 发送端口

    • 从服务器执行命令REPLCONF listen-port <port number>,向主服务器发送从服务器的命令监听端口
    • 这个端口号是为了在master上执行info命令是,可以查看到从节点的端口信息

    3.6 同步

    • 主从服务器之间互为客户端,可以彼此发送命令和响应回应

    3.7 命令传播

    • 主服务器执行完成命令后发送给从服务器

    3.8 配置说明

    Paste_Image.png

    4. 复制

    4.1 复制积压缓冲区(repl-backlog)

    • 是一个固定长度的先进先出的队列,默认是1MB
    • 当从节点连接上后,所有导致数据变更的命令完成后都会先进入缓冲队列,再传播给从节点
    • 如何估算backlog的大小:second*write_size_second
      • 每秒产生的数据量
      • 最长等待从链接的时间 repl-timeout
      • 算出来后,讲结果建议乘以2,更安全

    4.2 如何判断是否增量同步

    • 如果从传递过来的偏移量+1之后的数据还在缓冲去中,则执行增量同步,如果不在缓冲区中,则执行全量同步
    • 当从节点连接时,发送过来的主的实例id与本机的不一样,则主机会做全量同步
      • 每个redis实例启动后会生成一个实例标识

    5. Redis高可用

    5.1 高可用应该解决哪些问题

    • 多个节点拥有相同的数据
    • 当主节点宕机后,如何产生新的主节点
    • 当主节点宕机后,从节点如何自动连接到新的主节点
    • 如果判断主节点宕机
    • 旧的主节点恢复后,如何处理
    • 如何监控redis所有节点的监控状态

    5.2 什么是哨兵(sentinel)

    • 监控redis节点的健康状态
    • 通知,把监控到的变化通知给相关系统或者redis实例,通过redis的订阅机制实现
    • 自动热备(failover),主节点宕机---选举新的主节点
    • 配置管理,redis实例可以通过sentinel获取到某些共享信息

    - Sentinel本身也是分布式,解决了自身单点问题

    Paste_Image.png

    6. Redis主从复制的配置过程

    1. 这里选择了两台服务器,一台IP是192.168.182.130,一台IP是192.168.182.128,130作为主服务器,128作为从服务器,首先找到从服务器的redis配置文件位置,我是以服务的方式安装,那么首先定位服务的文件位置在/etc/rc.d/init.d/redis(见截图):


      Paste_Image.png
    2. 找到/var/apps/redis/redis-3.2.5/6379.conf


      Paste_Image.png
    3. 打开/var/apps/redis/redis-3.2.5/6379.conf,找到slaveof 配置项目,修改为主服务器的ip和端口
    [root@localhost redis-3.2.5]# vi /var/apps/redis/redis-3.2.5/6379.conf
    
    Paste_Image.png
    1. 配置成功后,需要重启从服务器的redis服务
      我们可以通过日志看到主从复制成功


      Paste_Image.png

    相关文章

      网友评论

        本文标题:Redis笔记(六)复制以及高可用

        本文链接:https://www.haomeiwen.com/subject/ncebgttx.html