• redis高可用(哨兵机制)


    redis哨兵机制:redis的哨兵系统用于管理多个reids服务器,该系统主要有三个作用:

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

       一直觉得画图 画的贼丑,不过画图能帮助自己 更好的理解:
      

    redis 要想实现高可用,则 必须要有哨兵机制,这样才能保证 redis集群中主服务器宕机以后 可以继续使用(如果主服务器宕机,不能有新的主服务器,则 其余的服务器只能读,不能写)

     要利用到redis的哨兵机制,则需要有多个redis,那不可避免想到到主从复制,在https://www.cnblogs.com/920913cheng/p/10413009.html 中已经记录了如何 搭建redis的主从复制了,所以在以上的基础上,开始 哨兵机制的搭建

    准备三台虚拟机

    192.168.31.170(主)

    192.168.31.202(从)

    192.168.31.180(从)

    开启所有虚拟机的防火墙

    redis哨兵机制属于redis提供的一个功能,redis服务器 启动不启动 和哨兵机制是否正常运行没有任何关系,可以从redis的端口:6379  而哨兵机制默认的端口是:26379 可以看出 他们是两个不同的程序,此处测试的是单个哨兵机制:

     从192.168.31.202(从) 或者192.168.31.180(从)选取一台机器 作为 哨兵机制的启动服务器:这里我选择的是192.168.31.202 作为哨兵机制的服务器:

    1.将192.168.31.202中 redis下面的 sentinel.conf 文件复制到 cp sentinel.conf /usr/local/redis/etc

     2.vi /usr/local/redis/etc/sentinel.conf 修改 sentinel.conf文件

    修改的地方:

    sentinel monitor mymast  192.168.31.170 6379 1  #主节点 名称 IP 端口号 选举次数

    sentinel down-after-milliseconds mymaster 3000 心跳检测

    3.启动哨兵模式:

    ./redis-server /usr/local/redis/etc/sentinel.conf --sentinel &

    4 关闭主服务器以后 ,在192.168.31.202 里可以看到 主服务关闭,然后 连接redis客户端,通过info命令 可以看到 202服务器 已经成了 master了,

    此时202 已经具备了 读写权限。

    5:流程-准备三台机器 1,2,3   

      1号服务器当做主服务器,2.3号为从服务器

      2 把2号服务器当成哨兵机制的运行服务器,修改 2号服务器里面的sentinel.conf 文件,配置 主服务器的ip 端口 和选举次数,以及 主服务reids的密码

      3 在2号服务器上启动哨兵机制,启动成功以后,可以通过连接redis客户端 info查看到 2号服务器此时角色 是slave  

      4 关闭1号服务器,在2号服务器或者3号服务器 通过info 可以查看到 自己可能已经成为了master

      5 当1号服务器重新启动以后,当前的master 也不会是 1号 

    6 遇到 主服务器 关闭以后,不能切换从服务器作为master 防火墙,配置文件 是不是少了

      

  • 相关阅读:
    微软RPC技术学习小结
    [COM Interop学习小结]实现一个C#调用C++的示例
    [一个小问题]Mainfest配置文件的version问题小结
    【小结】IIS7下的Http Native Module开发
    Active Sync与IIS7 Classic&Integrated模式,Exchange 2007&2010的关系
    是否能在构造函数,析构函数中抛出异常?
    Trouble Shooting的一些感想(实时补充)
    python中 try、except、finally 的执行顺序
    Hessian怎样实现远程调用
    mysql的三种驱动类型
  • 原文地址:https://www.cnblogs.com/920913cheng/p/10413703.html
Copyright © 2020-2023  润新知