0
点赞
收藏
分享

微信扫一扫

redis哨兵模式搭建以及springboot集成

程序员漫画编程 2022-04-23 阅读 97
redis

本篇文章介绍docker环境下搭建redis哨兵模式,并且使用springboot框架进行操作。

redis搭建

  • 首先创建一个docker网络,保证redis主从和哨兵处于用一个局域网内。创建完成后如下图在这里插入图片描述
  • 创建两个redis,一个作为主数据库,一个作为从数据库。在home目录下新建两个目录分别用于存放两个数据库的配置文件和数据。在这里插入图片描述
    在这里插入图片描述
    运行docker命令启动两个容器:docker run -d --name redis01 --net redis -p 6379:6379 -v /home/redis01/conf/redis.conf:/etc/redis/redis.conf -v /home/redis01/data:/data redis redis-server /etc/redis/redis.conf
  • 使用docker-compose启动三个sentinel。
    docker-compose.yml:
    `version: ‘3’
    services:
    sentinel1:
    image: redis
    container_name: redis-sentinel-1
    ports:
    • 26379:26379
      command: redis-sentinel /usr/local/etc/redis/sentinel.conf
      volumes:
    • /home/redis-sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf
      sentinel2:
      image: redis
      container_name: redis-sentinel-2
      ports:
    • 26380:26379
      command: redis-sentinel /usr/local/etc/redis/sentinel.conf
      volumes:
      • /home/redis-sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf
        sentinel3:
        image: redis
        container_name: redis-sentinel-3
        ports:
      • 26381:26379
        command: redis-sentinel /usr/local/etc/redis/sentinel.conf
        volumes:
      • /home/redis-sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf
        networks:
        default:
        external:
        name: redis
        `

sentinel.conf文件:

port 26379
dir /tmp
sentinel monitor mymaster 172.38.0.2 6379 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

docker-compose启动。
运行docker netwokr inspect 检查下。
在这里插入图片描述

springboot集成

使用springboot-redis访问下服务器。
在这里插入图片描述
配置文件确认后,执行代码,提示连接超时
在这里插入图片描述
打断点调试发现访问redis使用的是内网172.17.0.2的ip,这个是内网ip,所以连接失败了。
解决方案:把sentinel配置文件中的ip从docker内网ip改成宿主机ip,并且redis配置文件中加上

slave-announce-ip 192.168.31.214
slave-announce-port 6379

slave-announce-ip和slave-announce-port填写当前redis的宿主机的ip和端口。

举报

相关推荐

0 条评论