参考   :

  https://mp.weixin.qq.com/s/Z-PyNgiqYrm0ZYg0r6MVeQ

 这篇文章有两个问题

  1.虽然运行了3个sentinel容器,实际上只有一个sentinel运行 具体可以留意输出的最后一行

        

  2.外部调试连接redis 获取到的monster地址是docker 的虚拟ip(172.17.0.2:6379)地址,外部不能访问,但是如果你把新建的springboot 项目和这些容器放到同一个主机的话是没有问题的

详细解决方案 查看

Redis 高可用之哨兵模式(二)

  

一、redis高可用解决方案

  1. redis主从

    优点:1、高可靠性,主从实时备份,有效解决单节点数据丢失问题。

       2、可做读写分离,从库分担读操作,缓解主库压力

    缺点:主库异常,需要手动主从切换

     2.redis哨兵模式

    优点:1、有效解决主从模式主库异常手动主从切换的问题

    缺点:1、运维复杂,哨兵选举期间,不能对外提供服务

   其他解决方案优缺点,可以查看 高可用 ,本篇主要介绍哨兵解决方案

二、具体实现

  windows上安装redis新版本好像已经不支持了,本文采用的是docker快速实现redis高可用实例的创建

  具体环境参数:

    操作系统:centos7

    docker:18.09.3

1、拉取镜像,采用docker官方镜像

docker pull docker.io/redis

2、创建redis配置文件

mkdir  /data/redis/conf
cd /data/redis/conf
touch redis.conf
vi redis.conf

其中配置内容如下

logfile "redis.log"
port
dir /data
appendonly yes
appendfilename appendonly.aof
requirepass

3、创建从库redis配置文件 文件名称命名为 redis_01.conf

其中内容如下:其中slaveof 的ip 是宿主的docker0网卡的ip 具体ip需要在主库容器运行起来后,通过 docker inspect redis-6379 命令来查看ip地址

logfile "redis.log"
port
dir /data
appendonly yes
appendfilename appendonly.aof
slaveof 172.21.186.236
masterauth
requirepass

4、运行容器

  

docker run --name redis- -v /data/conf/redis.conf:/data/redis.conf -p :  -d docker.io/redis redis-server /data/redis.conf

docker run --name redis- -v /data/conf/redis_01.conf:/data/redis.conf -p :  -d docker.io/redis redis-server /data/redis.conf

docker run --name redis- -v /data/conf/redis_02.conf:/data/redis.conf -p :  -d docker.io/redis redis-server /data/redis.conf

5、查看主库运行情况

[root@localhost conf]# docker exec -ti redis-6379 /bin/bash
root@9865d9442e67:/data# redis-cli
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=172.17.0.3,port=6379,state=online,offset=714,lag=1
slave1:ip=172.17.0.4,port=6379,state=online,offset=714,lag=1
master_replid:6baa315b071196f7530bf2c9fdfb132785deeadb
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:714
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:714
127.0.0.1:6379>

可以看到已经有两个从库

6、创建sentinel.conf

touch sentinel.conf
vi sentinel.conf

其中sentinel.conf内容如下

logfile "sentinel.log"
sentinel monitor mymaster 172.17.0.2

7、创建sentinel容器

docker run --name redis-s- -v /data/conf/sentinel.conf:/data/sentinel.conf -p : -d docker.io/redis redis-sentinel sentinel.conf
docker run --name redis-s-6380 -v /data/conf/sentinel.conf:/data/sentinel.conf -p 26380:26379 -d docker.io/redis redis-sentinel sentinel.conf
docker run --name redis-s-6381 -v /data/conf/sentinel.conf:/data/sentinel.conf -p 26381:26379 -d docker.io/redis redis-sentinel sentinel.conf

8、查看sentinel运行状态

[root@localhost conf]# docker exec -ti redis-s- /bin/bash
root@430b54968068:/data# redis-cli -h 127.0.0.1 -p
127.0.0.1:> info Sentinel
# Sentinel
sentinel_masters:
sentinel_tilt:
sentinel_running_scripts:
sentinel_scripts_queue_length:
sentinel_simulate_failure_flags:
master0:name=mymaster,status=ok,address=172.17.0.2:,slaves=,sentinels=
127.0.0.1:>

9、停止主库

docker stop redis-

10、进入sentinel容器,查看日志

docker exec -ti redis-s- /bin/bash
cat sentinel.log

红色划线部分可以看到成功切换主从

11、重新启动redis-6379 容器

docker start redis-

12、进入容器内部查看redis运行情况

docker exec -ti redis- /bin/bash

可以看到已经成为从库

  

Redis 高可用之哨兵模式的更多相关文章

  1. Redis高可用之哨兵模式Sentinel配置与启动(五)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  2. 老司机带你玩转面试(4):Redis 高可用之哨兵模式

    前文回顾 建议前面文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 「老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩.击穿. ...

  3. Redis学习三:Redis高可用之哨兵模式

    申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 Redis 的 Sentinel 系统用于管理多个 Redi ...

  4. Redis 高可用之哨兵模式(二)

    上一篇实际操作过程中遇到两个问题 问题一:虽然运行了3个sentinel容器,实际上只有一个sentinel运行 问题出现的原因很简单,三个sentinel用的是同一个挂载配置文件,容器内部的更改直接 ...

  5. Redis高可用方案-哨兵与集群

    Redis高可用方案 一.名词解释   二.主从复制 Redis主从复制模式可以将主节点的数据同步给从节点,从而保障当主节点不可达的情况下,从节点可以作为 后备顶上来,并且可以保障数据尽量不丢失(主从 ...

  6. redis高可用(哨兵机制)

    redis哨兵机制:redis的哨兵系统用于管理多个reids服务器,该系统主要有三个作用: 监控:哨兵 会不断地检查你的主服务(Master)和从服务器(Slave)是否运作正常. 提醒:当被监控的 ...

  7. Redis高可用-主从,哨兵,集群

    主从复制 Master-Slave主从概念 同时运行多个redis服务端,其中一个作为主(master),其他的一个或多个作为从(slave),主从之间通过网络进行通讯,slave通过复制master ...

  8. 老司机带你玩转面试(3):Redis 高可用之主从模式

    前文回顾 建议前面文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 「老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩.击穿. ...

  9. Redis高可用方案哨兵机制------ 配置文件sentinel.conf详解

    Redis的哨兵机制是官方推荐的一种高可用(HA)方案,我们在使用Redis的主从结构时,如果主节点挂掉,这时是不能自动进行主备切换和通知客户端主节点下线的. Redis-Sentinel机制主要用三 ...

随机推荐

  1. N 个互异数的数组的平均逆序数

    N 个互异数的数组的平均逆序数为 N(N−1)/4 1. 简单证明 对于任意的数的表 L(5,8,9,6,4),以及其反序表 Lr(4,6,9,8,5),它们各自的逆序数分别为:6 ((5, 4), ...

  2. win10下安装docker步骤(一)

    一.启用Hyper-V 打开控制面板 - 程序和功能 - 启用或关闭Windows功能,勾选Hyper-V,然后点击确定即可,如图: 请注意电脑默认的Hyper-V虚拟机监控程序是不能进行勾选的,需要 ...

  3. matlab 求解线性规划问题

    线性规划 LP(Linear programming,线性规划)是一种优化方法,在优化问题中目标函数和约束函数均为向量变量的线性函数,LP问题可描述为: minf(x):待最小化的目标函数(如果问题本 ...

  4. [演示示例程序]Objective-C受委托的设计模式(牛仔女孩)

    今天整理电脑打开一次自我Objective-C当编写一个实践设计模式委托一个小程序,在po快来分享.也复习一下OC中的托付. Objective-C中的托付设计模式是和协议分不开的. 协议呢.就是使用 ...

  5. WPF MeshGeometry3D

    说说 MeshGeometry3D 里 常用的 四个属性. 先看看 MSDN 的 简介 先说说 Positions,介绍说 是顶点位置的集合,什么意思,看张图片. 这张简单描述了一个三位坐标系,里面有 ...

  6. OpenCV For iOS 1: 连接OpenCV 3.0

    本文的内容參考Instant OpenCV for iOS结合最新的开发平台完毕. 本系列文章採用的的开发环境为: 1)Xcode 6 2)OpenCV for iOS 3.0.0 alpha 接下来 ...

  7. QWidget 之paint部分杂记(从Qt4.0到4.8的进化,在Qt 4.4中,Alien Widget诞生了)

    Qt 4.0 automatically double-buffers Qt 4.1 QWidget::autoFillBackground Qt 4.2 delayed widget creatio ...

  8. Gradle Android它自己的编译脚本教程的最新举措(提供demo源代码)

    一.前言 Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自己主动化构建工具. 上面这句话我认为写得非常官方,大家仅仅需知道Gradle能够用来an ...

  9. 详解Python模块导入方法

    python常被昵称为胶水语言,它能很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松联结在一起.python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的 ...

  10. WPF使用MediaElement显示gif图片

    原文:WPF使用MediaElement显示gif图片 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/SANYUNI/article/details ...