• redis哨兵模式集群搭建


    1.新建一个mkdir redis-sentinel文件夹

    进入项目文件夹 cd redis-sentinel,再建立一个sentinel专门来存放哨兵脚本,然后cd sentinel

    建立sentinel.conf配置文件:

    sentinel monitor mymaster redis-master 6379 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel parallel-syncs mymaster 1
    sentinel failover-timeout mymaster 5000

    该配置的意思是,监控主服务器的6379端口并且起两个实例,如果哨兵5s内没有收到主节点的心跳,哨兵就认为主节点宕机了,默认是30秒,如果5秒以上连接不上主库同步,则在5秒后进行选举,对其他的从服务器进行角色转换

    2.建立sentinel-entrypoint.sh脚本文件

    #!/bin/sh
    
    sed -i "s/$SENTINEL_QUORUM/$SENTINEL_QUORUM/g" /etc/redis/sentinel.conf
    sed -i "s/$SENTINEL_DOWN_AFTER/$SENTINEL_DOWN_AFTER/g" /etc/redis/sentinel.conf
    sed -i "s/$SENTINEL_FAILOVER/$SENTINEL_FAILOVER/g" /etc/redis/sentinel.conf
    
    exec docker-entrypoint.sh redis-server /etc/redis/sentinel.conf --sentinel

    该脚本文件会对配置文件进行同步,用来启动哨兵

    3.建立Dockerfile

    建立Dockerfile指定基础镜像,同时拷贝配置文件到镜像内部:

    FROM redis
    
    EXPOSE 26379
    ADD sentinel.conf /etc/redis/sentinel.conf
    RUN chown redis:redis /etc/redis/sentinel.conf
    COPY sentinel-entrypoint.sh /usr/local/bin/
    RUN chmod +x /usr/local/bin/sentinel-entrypoint.sh
    ENTRYPOINT ["sentinel-entrypoint.sh"]

    4.建立docker-compose.yml配置文件

    master:
      image: redis
      ports:
        - "6379:6379"
    slave1:
      image: redis
      command: redis-server --slaveof redis-master 6379
      links:
        - master:redis-master
      ports:
        - "6380:6379"
    slave2:
      image: redis
      command: redis-server --slaveof redis-master 6379
      links:
        - master:redis-master
      ports:
        - "6381:6379"
    sentinel1:
      build: sentinel
      environment:
        - SENTINEL_DOWN_AFTER=5000
        - SENTINEL_FAILOVER=5000    
      links:
        - master:redis-master
        - slave1
    sentinel2:
      build: sentinel
      environment:
        - SENTINEL_DOWN_AFTER=5000
        - SENTINEL_FAILOVER=5000    
      links:
        - master:redis-master
        - slave2

    意思是,我们起三台redis服务,分别跑在6379,6380,6381 ,一主两从,并且有两个哨兵实例来监控他们,最后项目结构是这样的

    5.在项目根目录下,启动服务:

    docker-compose up --force-recreate

    6.测试同步

    分别开三个窗口登录到redis,redis-cli -p 6379,redis-cli -p 6380,redis-cli -p 6381

    在主库6379中set 123 123,然后分别在从库get 123

    7.测试哨兵模式是否好用

    docker stop redissentinel_master_1

    此时主库已经连接不上了,进入从库,使用info命令来查看从库的角色

     

     发现之前6380本来是从库(slave)角色,现在已经变成主库了(master)了。

    这就是所谓的高负载高可用架构,在使用集群承担高负载的同时,也能进行高可用的容灾机制。

  • 相关阅读:
    05 redis中的Setbit位图法统计活跃用户
    04 redis list结构及命令详解
    03 redis之string类型命令解析
    02 redis通用命令操作
    Mesos提交任务没有被执行
    mesos的zookeeper变更
    VS Code使用git
    vs code 安装Scala
    打印正反读计算方式
    cloudera上面安装Spark2.0
  • 原文地址:https://www.cnblogs.com/zhouj850/p/15994294.html
Copyright © 2020-2023  润新知