redis-哨兵

Posted 永旗狍子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis-哨兵相关的知识,希望对你有一定的参考价值。

哨兵可以帮助我们解决主从架构中的单点故障问题

哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例

这里的哨兵有两个作用

  • 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。

  • 当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

 

在docker-compose.yml文件中配置以下内容,可以在容器内部使用哨兵的配置

version: "3.1"
services:
  redis1:
    image: daocloud.io/library/redis:5.0.7
    restart: always
    container_name: redis1
    environment:
      - TZ=Asia/Shanghai
    network_mode: host
    volumes:
      - ./conf/redis1.conf:/usr/local/redis/redis.conf
      - ./conf/sentinel1.conf:/data/sentinel.conf
    command: ["redis-server","/usr/local/redis/redis.conf"]
  redis2:
    image: daocloud.io/library/redis:5.0.7
    restart: always
    container_name: redis2
    environment:
      - TZ=Asia/Shanghai
    network_mode: host
    volumes:
      - ./conf/redis2.conf:/usr/local/redis/redis.conf
      - ./conf/sentinel2.conf:/data/sentinel.conf
    command: ["redis-server","/usr/local/redis/redis.conf"]
  redis3:
    image: daocloud.io/library/redis:5.0.7
    restart: always
    container_name: redis3
    environment:
      - TZ=Asia/Shanghai
    network_mode: host
    volumes:
      - ./conf/redis3.conf:/usr/local/redis/redis.conf
      - ./conf/sentinel3.conf:/data/sentinel.conf
    command: ["redis-server","/usr/local/redis/redis.conf"]

docker-compose.yml文件位置

创建并进入conf

因为数据卷用的是路径映射,所以得自己创建conf,和下面的配置文件

准备哨兵的配置文件,并且在容器内部手动启动哨兵即可(sentinel)

# 哨兵需要后台启动
daemonize yes
# 指定Master节点的ip和端口,要配置对主节点的监控即可,通过向主节点发送info,获取从节点的信息,2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行切换操作。
sentinel monitor master 192.168.206.140 6379 2
# 指定哨兵的端口号
port 26379
# 哨兵每隔多久监听一次redis架构
sentinel down-after-milliseconds master 10000

 

准备redis.conf的配置文件

# redis1主节点的配置
port 6379
# redis2从节点配置
replicaof 192.168.206.140 6379
port 6380
# redis3从节点配置
replicaof 192.168.206.140 6379
port 6381

在Redis容器内部启动sentinel即可,注意进入容器后都要输入命令

redis-sentinel sentinel.conf

 

输入info查看所有信息

  •  info

当我执行该命令,停用redis容器,哨兵会自动选出master

  • docker stop redis1

进入redis2容器内/进入redis3容器内:

  • docker exec -it redis2 bash
  • redis-cli -p 6380

输入info查看所有信息

  •  info

 

哨兵部署成功!!!

以上是关于redis-哨兵的主要内容,如果未能解决你的问题,请参考以下文章

Redis主从与哨兵架构详解 Redis主从架构 如何在同一台机器搭建主从架构 Redis主从工作原理 数据部分复制 Jedis使用 Redis的管道(Pipeline) Redis Lua脚本(代码

高级开发运维从简单学:Redis哨兵和集群小贴士

高级开发运维从简单学:Redis哨兵和集群小贴士

redis主从+哨兵

Redis的哨兵(Sentinel)分析

Spring之redis主从复制(非哨兵模式)