背景说明:

这里采用1主2从的redis集群,3个sentinel搭建高可用redis集群。

一,关于搭建redis-sentinel高可用之前,我们必须要了解redis主从搭建redis-sentinel的基础。

redis-sentinel功能:

  • 监控:哨兵不断的检查master和slave是否正常的运行。
  • 通知:当监控的某台Redis实例发生问题时,可以通过API通知系统管理员和其他的应用程序。
  • 自动故障转移:如果一个master不正常运行了,哨兵可以启动一个故障转移进程,将一个slave升级成为master,其他的slave被重新配置使用新的master,并且应用程序使用Redis服务端通知的新地址。
  • 配置提供者:哨兵作为Redis客户端发现的权威来源:客户端连接到哨兵请求当前可靠的master的地址。如果发生故障,哨兵将报告新地址。

二, redis主从安装

详情见

https://www.cnblogs.com/lin1/p/10403333.html

三,安装redis-sentinel , 我这边3个节点都是在一台服务器上。

cd /usr/local/src

wget http://download.redis.io/releases/redis-3.0.7.tar.gz

tar -zxvf redis-3.0.7.tar.gz

cd redis-3.0.7

make

make PREFIX=/usr/local/redis-3.0.7 install

ln -s /usr/local/redis-3.0.7 /usr/local/redis

mkdir -p /usr/local/redis/conf

cp sentinel.conf /usr/local/redis/conf/sentinel-26379.conf  (复制源码中的哨兵配置文件)

mkdir -p /usr/local/redis/logs

vim /usr/local/redis/conf/sentinel-26379.conf ,改成如下: 10.211.55.7是redis的主,mymaster是随意取的名字

port 26379

dir "/tmp"

logfile "/usr/local/redis/logs/sentinel-26379.log"

daemonize yes

sentinel monitor mymaster  10.211.55.7  6379  2

sentinel auth-pass mymaster linlin

sentinel down-after-milliseconds mymaster  15000

sentinel failover-timeout mymaster 120000

sentinel parallel-syncs mymaster 1

#发生切换之后执行的一个自定义脚本:如发邮件、vip切换等
#sentinel notification-script <master-name> <script-path>

  

vim /usr/local/redis/conf/sentinel-26380.conf

port 26380

dir "/tmp"

logfile "/usr/local/redis/logs/sentinel-26380.log"

daemonize yes

sentinel monitor mymaster 10.211.55.7 6379 2

sentinel down-after-milliseconds mymaster 15000

sentinel failover-timeout mymaster 120000

sentinel auth-pass mymaster linlin

sentinel config-epoch mymaster 0

#发生切换之后执行的一个自定义脚本:如发邮件、vip切换等
#sentinel notification-script <master-name> <script-path>

  

vim  /usr/local/redis/conf/sentinel-26381.conf

port 26381

dir "/tmp"

logfile "/usr/local/redis/logs/sentinel-26381.log"

daemonize yes

sentinel monitor mymaster 10.211.55.7 6379 2

sentinel down-after-milliseconds mymaster 15000

sentinel failover-timeout mymaster 120000

sentinel auth-pass mymaster linlin

sentinel config-epoch mymaster 0

#发生切换之后执行的一个自定义脚本:如发邮件、vip切换等
#sentinel notification-script <master-name> <script-path>

  

三,启动redis-sentinel

cd /usr/local/redis/bin

./redis-sentinel  ../conf/sentinel-26379.conf

./redis-sentinel  ../conf/sentinel-26380.conf

./redis-sentinel  ../conf/sentinel-26381.conf

启动之后 sentinel节点的配置文件,会默认生成部分配置段,该配置段其实就是标注从节点和master节点已经sentinel节点的。

当然,如果发生故障转移,redis中的配置也会发生变化。

四,查看日志,简单分析

sentinel-26379的日志,其他节点类似,这也是我们为什么没在redis-sentinel节点中配置从节点和其他sentinel节点的原因。他们会通过消息订阅进行数据交换。

五,模拟故障,查看故障是否转移

master端自动down掉,为此,这边直接使用kill命令演示。

master端:已经kill掉master端进程

查看日志:

master(6379)端日志: 无日志生成

slalve1 (6380)端日志:

丢失连接,放弃原先储存的master信息,并尝试继续连接,但是一直被拒绝。拒绝的时间31s,进行故障转移的时间为47s,故障转移完成时间为48s。(为啥这么快,其实跟我redis没有数据有很大关系 哈哈)

slave2 (6381)端日志:

sentinel-26379端日志:

sentinel-26380端日志:

sentinel-26381端日志:

从上述日志可以发现,故障已经转移,10.211.55.7 6381已经成为新的master,而原先的6379已经被下线了,但是仍然被关注中。

登陆最新的master端查看:

上述,就是故障转移成功了。接下来我们启动最早的master,查看是否会重新加入到redis集群中。

如下,可以发现原先的master,已经成为slave了。

以上,就是redis sentinel集群搭建的过程。测试过,如果一个sentinel挂掉,自动转移还是可以的哦。

 

redis sentinel集群的搭建的更多相关文章

  1. redis sentinel 集群监控 配置

    环境: ip  172.16.1.31 26379  redis sentinel ip  172.16.1.30 6379   主 1 ip  172.16.1.31 6380   从 1 ip   ...

  2. Redis Sentinel 集群安装 step by step

    一. 准备材料 服务器 IP address 操作系统 位数 Redis 版本   CNT06CAH05 192.168.3.47 CentOS 6.5 x64 Redis-3.2.6 sentine ...

  3. Redis 快速集群环境搭建

    环境 Linux :centos 7 redis:redis-5.0.9 Redis 集群环境搭建步骤 早期 redis 版本集群环境搭建需要安装 ruby 运行环境,搭建步骤比较繁琐: redis ...

  4. redis哨兵集群环境搭建

    一.哨兵的介绍 哨兵(sentinal)是redis集群架构中非常重要的一个组件,主要功能如下: 集群监控,负责监控redis master和slave进程是否正常工作 消息通知,如果某个redis实 ...

  5. Redis Sentinel集群双机房容灾实施步骤

    概要目标防止双机房情况下任一个机房完全无法提供服务时如何让Redis继续提供服务.架构设计A.B两机房,其中A机房有一Master一Slave和两个Sentinel,B机房只有2个Sentinel,如 ...

  6. Redis之集群环境搭建

    前面文章介绍了Redis的主从复制,虽然该模式能够在一定程度上提高系统的稳定性,但是在数据访问量比较大的情况下,单个master应付起来还是比较吃力的,这时我们可以考虑将redis集群部署,本文就来重 ...

  7. redis集群与分片(2)-Redis Cluster集群的搭建与实践

    Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...

  8. Redis Cluster集群的搭建与实践

    Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...

  9. helm安装redis+Sentinel集群搭建

    一.redis集群特点 数据 在多个Redis节点之间自动分片 sentinel特点: 它的主要功能有以下几点 不时地监控redis是否按照预期良好地运行; 如果发现某个redis节点运行出现状况,能 ...

随机推荐

  1. Docker中运行nginx并挂载本地目录到镜像中

    1.1 从hup上pull镜像1.2 创建将要挂载的目录1.3 先要有配置文件才能启动容器1.3.1 vim /data/nginx/conf/nginx.conf1.3.2 vim /data/ng ...

  2. 逆向实战干货,植物大战僵尸快速定位自动捡阳光Call,或者标志

    逆向实战干货,快速定位自动捡阳光Call,或者标志 注意: 关于CE和OD的使用,这里不再多说,快速定位,默认大家已经有了CE基础,或者OD基础. 第一种方法,找Call 第一步,打开CE,搜索阳光值 ...

  3. Docker 设置固定网络IP

    1.创建自定义网络: 2.查看自定义网络: 3.启动容器: 4.查看容器IP:

  4. 你可能不知道的setInterval的坑

    你可能不知道的setInterval的坑 之前印象中一直记得setInterval有一些坑,但是一直不是很清楚那些坑是什么.今天去摸索了下之后,决定来做个记录以免自己忘记,也希望让更多人了解到这个坑. ...

  5. http无状态协议,cookie和session详解(一)

    1.HTTP无状态协议 首先看百度百科给出的定义: HTTP无状态协议,是指协议对于事务处理没有记忆能力.缺少状态意味着如果后续处理需要前面的信息,则它必须重传, 这样导致可能每次连接传送的数据量增大 ...

  6. Go语言学习笔记(六) [包]

    日期:2014年7月30日   1.定义:包时函数和数据的集合.使用package关键字定义一个包,文件名不需要与包名一致,包名约定使用小写字符,Go包可以由多个文件组成,但是需要使用相同的packa ...

  7. GNU C 与 ANSI C(上)

    Linux 上可用的 C 编译器是 GNU C 编译器,它建立在自由软件基金会的编程许可证的基础上,因此可以自由发布.GNU C 是对标准 C 进行的一系列扩展,以增强标准 C 的功能. 1. 零长度 ...

  8. zabbix实现百台服务器的自动化监控--技术流ken

    前言 最近有小伙伴通过Q联系到我说:公司现在有百多台服务器,想要部署zabbix进行监控,怎么实现自动化全网监控? 本篇博客将讲解一个我工作时做的一个实际项目,现在写出来供大家以后参考使用. 实现自动 ...

  9. javascript小实例,移动端页面中的拖拽

    上文说到,想将移动端的拖拽说一说,那现在趁有时间,就将这个福利文带来了,哈哈! 在我还不知道怎么做移动端的手势操作的时候,我觉得这TM实在是太难了,这是多么高深的学问啊,手势操作耶,上滑下滑左滑右滑的 ...

  10. Docker在Windows上运行NetCore系列(一)使用命令控制台运行.NetCore控制台应用

    系列文章:https://www.cnblogs.com/alunchen/p/10121379.html 本篇文章操作系统信息 Windows:Window 10 Visual Studio:201 ...