zoukankan      html  css  js  c++  java
  • 使用docker搭建reids主从,哨兵。

    Redis主从配置,如果没有真机就要用虚拟机,使用Docke for Windows host网络有问题。

    准备:

      1.安装虚拟机。

      2.下载redis的安装文件:http://download.redis.io/releases/redis-5.0.7.tar.gz

        1.redis-5.0.7/redis.conf

          ->Redis 配置文件。

        2.redis-5.0.7/sentinel.conf

          ->哨兵配置文件。

    主从配置:

      1.将redis.conf 复制 3 份名为 redis-master.conf,redis-slave1.conf,redis-slave2.conf ,redis-master作为主服务器,内容除端口、密码外其他基本不用进行修改。

      2.修改配置文件:

        redis-master.conf

          1.bind 127.0.0.1 改为 bind 0.0.0.0 或者注释

            bind 与网卡对应的ip才能连接。

          2.添加master密码

              requirepass abc123

          3.端口:

            测试使用默认 6379端口。

        redis-slave.conf

          1.bind 127.0.0.1 改为 bind 0.0.0.0 或者注释

          2.确定主redis地址

            replicaof 192.168.10.202 6379

          3.主密码

            masterauth abc123

          4.添加密码

            requirepass abc123

          5.端口分别为6380,和6381

        两个从redis都是这样配置。

        

    启动主从redis。

      1.启动master:

        docker run --rm --network host --name redis-master -v /home/ye/SystemConfig/RedisConfig/redis-master.conf:/usr/local/etc/redis/redis.conf -d redis redis-server /usr/local/etc/redis/redis.conf

      2.启动从redis:

        docker run --rm --name redis-slave1 --network host -v /home/ye/SystemConfig/RedisConfig/redis-slave1.conf:/usr/local/etc/redis/redis.conf -d redis redis-server /usr/local/etc/redis/redis.conf

        docker run --rm --name redis-slave2 --network host -v /home/ye/SystemConfig/RedisConfig/redis-slave2.conf:/usr/local/etc/redis/redis.conf -d redis redis-server /usr/local/etc/redis/redis.conf

      至此,一主两从配置好了。

        redis-cli连接master:redis-cli -h 192.168.10.202 -p 6379 -a abc123

        使用命令:info replication

          

          可以看到有两台从机,我们可以在master读写,但在从slave只能读。

         测试:

           master:

            slave:

    哨兵模式:

      1.虽然主从能够应对大多数高并发的情景,但是如果当master挂掉后,将无法写入新数据,也需要维护连接,需要人工进行恢复。因此需要采用自动化的机制来保证高可用。

      2.哨兵模式将会自动进行以下动作。

        1.不停的监控redis是否按照预期良好的运行。

        2.如果发现某个redis节点出现状态,能够通知另一个进程(例如他的客户端)

        3.能够进行自动切换,当一个master节点不可用时,能够选举出master的多个slave(如果超过一个slave的情况)钟的一个来作为新的master,其他的slave节点将会将它所追随master的地址改为被提升的为master的slave的新地址。

        4.如果哨兵作为客户端提供服务发现,客户端连接哨兵,哨兵将提供当前master的地址提供服务,如果出现切换,也就是master挂了,哨兵将会提供客户端一个新地址。

       3.哨兵的改变将在所有节点重启后恢复原来的配置,原master重启后将会变成slave节点。

    配置哨兵:

      1.复制sentinel.conf 为 redis-sentinel.conf

      2.修改配置文件:

        1.监控地址:(监视名称) (地址) (端口) (投票数,获得这么多同意后,将选举为master主机,两台从机,所有我写2)

          sentinel monitor mymaster 192.168.10.202 6379 2

        2.监控时间 (名称) (超时时间,当超过这个时间,则认为master已经挂了)

            sentinel down-after-milliseconds mymaster 10000

        3.设置连接redis主从密码

          sentinel auth-pass mymaster abc123

        4.设置bind 为 bind 0.0.0.0

      3.注意配置文件项有先后顺序。

    启动哨兵:

      docker run --rm --name redis-sentinel --network host -v /home/ye/SystemConfig/RedisConfig/redis-sentinel.conf:/usr/local/etc/redis/sentinel.conf -d redis /usr/local/bin/redis-sentinel /usr/local/etc/redis/sentinel.conf

      

       此时停止master:

      

       可以看到主已经变为6381了。

      

      支持,主从已经哨兵已经搭建完成,持久化那就是另一回事了。

  • 相关阅读:
    学习进度条73
    学习进度条72
    学习进度条71
    学习进度条70
    学习进度条69
    学习进度条68
    学习进度条67
    学习进度条66
    学习进度条65
    elasticsearch
  • 原文地址:https://www.cnblogs.com/yeqifeng2288/p/11957906.html
Copyright © 2011-2022 走看看