Redis-Sentinel redis的哨兵模式

Redis Sentinel 模式简介

Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而redis-sentinel本身也是独立运行的进程,可以部署在其他与redis集群可通讯的机器中监控redis集群。

它的主要功能有一下几点

1、不时地监控redis是否按照预期良好地运行;
2、如果发现某个redis节点运行出现状况,能够通知另外一个进程(例如它的客户端);
3、能够进行自动切换。当一个master节点不可用时,能够选举出master的多个slave(如果有超过一个slave的话)中的一个来作为新的master,其它的slave节点会将它所追随的master的地址改为被提升为master的slave的新地址。
4、哨兵为客户端提供服务发现,客户端链接哨兵,哨兵提供当前master的地址然后提供服务,如果出现切换,也就是master挂了,哨兵会提供客户端一个新地址。

哨兵(sentinel)本身也是支持集群的

很显然,单个哨兵会存在自己挂掉而无法监控整个集群的问题,所以哨兵也是支持集群的,我们通常用三台哨兵机器来监控一组redis集群。

快速开始!

环境准备:
centos7服务器3台,6也可以,没什么区别。
我部署好了三台
redis-1
redis-2
redis-3
清空selinux与iptables

 编译安装redis

yum install gcc* tcl -y
mkdir /opt/soft
cd /opt/soft
wget http://download.redis.io/releases/redis-3.2.4.tar.gz
tar xf redis-3.2..tar.gz
cd redis-3.2.
make
mkdir conf
mkdir bin
cp utils/redis_init_script bin/redis
cp redis.conf conf/.conf
cd ..
mv redis-3.2. /opt/redis
cd /opt/redis/bin
sed -i s#CLIEXEC=\/usr\/local\/bin\/redis-cli#CLIEXEC=\/opt\/redis\/src\/redis-cli#g redis
sed -i s#EXEC=\/usr\/local\/bin\/redis-server#EXEC=\/opt\/redis\/src\/redis-server#g redis
sed -i s#CONF=\"\/etc\/redis#CONF=\"\/opt\/redis\/conf#g redis
cd /opt/redis/conf
sed -i s#daemonize\ no#daemonize\ yes#g .conf

安装完毕后,修改配置文件。

vim /opt/redis/conf/6379.conf
注释此条
bind 127.0.0.1
protected-mode yes 改为 protected-mode no #关闭安全模式
至此,redis部署完毕。

redis的启动停止脚本在
/opt/redis/bin/redis stop/start
redis的配置文件在
/opt/redis/conf/6379.conf
redis的登陆命令在
/opt/redis/src/redis-cli

redis配置主从

启动两台redis
redis-1 10.0.0.10
redis-2 10.0.0.20

若redis-1为主的话,在redis-2的配置文件中配置
slaveof 10.0.0.10 6379
修改完毕后重启redis即可,重启后我们可通过登陆进入redis后info查看主从信息。

引入哨兵。

redis-1与redis-2搭建完毕主从后,我们开始引入哨兵。
哨兵是一个单独的程序,所以我们需要单独部署它。
若是在其他机器上部署哨兵,那么请用上面的redis安装脚本重新安装一遍redis。
在这里我已经部署完毕了
redis-1
redis-2
redis-3

增加哨兵的配置文件。三台redis都需要增加,文件内容这三台一样。

vim /opt/redis/conf/sentinel.conf
##sentinel for 10.0.0.10 ,its slave is 10.0.0.20
#master1
port
sentinel monitor master1 10.0.0.10
sentinel down-after-milliseconds master1
sentinel failover-timeout master1
sentinel parallel-syncs master1 1
#sentinel auth-pass mymaster 123456  #如果你的redis集群有密码

配置文件的含义请自行百度。

启动哨兵
三台机器都是一个操作方式。

添加窗口
screen -S sentinel

在新窗口启动哨兵
/opt/redis/src/redis-sentinel /opt/redis/conf/sentinel.conf --protected-mode no
启动后即可看到前台输出信息。

后台挂起这个窗口请按:
Ctrl+a+d

下次返回观看这个窗口请输入
screen -r sentinel

我们这里暂时不挂起窗口,可以观察哨兵监控集群的状态。

我们接下来我们进行切换以及增加新的salve节点测试。
关掉redis-1并查看哨兵监控的状态,约30秒内,哨兵探测redis-1客观故障后,即会重新选举新的master,重新选举完毕后我们在redis-2中info查看主从状态,会发现redis-2已经被选举为master。
重新启动redis-1,并不需要修改配置文件,启动后redis-1自动会与redis-2进行同步。

修改redis-3的配置文件,把slaveof指向到redis-2,启动后你会发现哨兵会把redis-3自动添加到集群中。

谢土豪

如果有帮到你的话,请赞赏我吧!

Redis哨兵模式的更多相关文章

  1. Redis哨兵模式主从同步不可以绑定127.0.0.1或者0.0.0.0,不然无法进行主从同步

    Redis哨兵模式主从同步不可以绑定127.0.0.1或者0.0.0.0,不然无法进行主从同步,一定要绑定内网IP,而对于跨机房的问题,可以使用iptables进行nat转发来解决.

  2. Redis哨兵模式大key优化

    目前,Redis哨兵模式,内存资源有限,有很多key大于500M,性能待优化.需要迁移至Redis-cluster集群中.        涉及到的key如下: 0,hash,duser_record, ...

  3. Springboot2.x集成Redis哨兵模式

    Springboot2.x集成Redis哨兵模式 说明 Redis哨兵模式是Redis高可用方案的一种实现方式,通过哨兵来自动实现故障转移,从而保证高可用. 准备条件 pom.xml中引入相关jar ...

  4. Spring Boot 入门(十):集成Redis哨兵模式,实现Mybatis二级缓存

    本片文章续<Spring Boot 入门(九):集成Quartz定时任务>.本文主要基于redis实现了mybatis二级缓存.较redis缓存,mybaits自带缓存存在缺点(自行谷歌) ...

  5. [Redis] Redis哨兵模式部署 - zz胖的博客

    1. 部署Redis集群 redis的安装及配置参考[redis部署] 本文以创建一主二从的集群为例. 1.1 部署与配置 先创建sentinel目录,在该目录下创建8000,8001,8002三个以 ...

  6. Redis 哨兵模式(Sentinel)

    上一篇我们介绍了 redis 主从节点之间的数据同步复制技术,通过一次全量复制和不间断的命令传播,可以达到主从节点数据同步备份的效果,一旦主节点宕机,我们可以选择一个工作正常的 slave 成为新的主 ...

  7. 搭建redis哨兵模式

    搭建redis哨兵模式,一主两从三哨兵   1.从官网下载redis安装包:此处是redis-5.0.7.tar.gz 2.上传到目录 /utxt/soft 3.解压 4.cd /utxt/soft/ ...

  8. Redis哨兵模式的配置

    绪论 现有三台设备,192.168.137.11.192.168.137.12和192.168.137.13,要求在三台设备上实现redis哨兵模式,其中192.168.137.11为master,其 ...

  9. Redis 哨兵模式实现主从故障互切换

    200 ? "200px" : this.width)!important;} --> 介绍 Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 S ...

随机推荐

  1. 【网络流#7】POJ 3281 Dining 最大流 - 《挑战程序设计竞赛》例题

    不使用二分图匹配,使用最大流即可,设源点S与汇点T,S->食物->牛->牛->饮料->T,每条边流量为1,因为流过牛的最大流量是1,所以将牛拆成两个点. 前向星,Dini ...

  2. eclipse中svn版本不兼容问题

    eclipse中导入本地svn管理的Android项目 使用svn时弹出以下提示: org.apache.subversion.javahl.ClientException: Unsupported ...

  3. ASP.NET-FineUI开发实践-10

    嵌套Grid,光棍月大放送,不藏着掖着.实在写的不好,没脸藏啊~只考虑显示排序修改什么的都不管! 话说三石官网加实例了,http://fineui.com/demo/#/demo/grid/grid_ ...

  4. CSS元素分类及区别

    元素是文档结构的基础,在CSS中,每个元素生成了一个包含了元素内容的框(box,也译为“盒子”).但是不同的元素显示的方式会有所不同,例如<div>和<span>就不同,而&l ...

  5. spring-data-redis问题总结

    如何判断一个字符串是否是合法的long类型? 参考文档如下: http://www.oschina.net/question/59889_45179 spring-data-redis http:// ...

  6. (七)Angularjs - 控制器

    控制器的作用 没有控制器/controller,我们没有地方定义业务模型 比如:ng-init指令.我们可以使用ng-init指令在scope对象上定义数据 <div ng-init=" ...

  7. [转] JS运算符 &&和|| 及其优先级

    第一.&& (逻辑与)运算,看一个简单的例子: var a = 1 && 2 && 3; var b = 0 && 1 &&am ...

  8. mvc4 整合nhibernate3.0配置

    鉴于大家都在解决问题或是学习新东西的时候,并不关注是谁又是谁帮你解决了问题,所有这里为自己做下宣传,我为自己代言. 首先介绍下我的开发环境是vs2010旗舰版,nhibernate采用的是3.0版本. ...

  9. Windows10 删除已经保存的WIFI热点

    自己的笔记本很多时候都是连接WIFI上网,导致保存的WIFI越来越多,有些都过期不能用了,但还是在列表中存在着,致使列表很长很难看,如下: 删除无用热点的方法如下: win+r运行cmd,进入命令行界 ...

  10. 路由器WDS桥接教程

    因为有吧友买了此款路由又不会桥接,因此做这个教程.老鸟自动路过,废话不多说,下面开始讲解. 1.wifi密码破解和路由器用户名和密码部分请自行解决,我只讲桥接部分.首先,在浏览器里输入192.168. ...