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脚本(代码