redis sentinel集群的搭建
背景说明:
这里采用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集群的搭建的更多相关文章
- 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 ...
- Redis Sentinel 集群安装 step by step
一. 准备材料 服务器 IP address 操作系统 位数 Redis 版本 CNT06CAH05 192.168.3.47 CentOS 6.5 x64 Redis-3.2.6 sentine ...
- Redis 快速集群环境搭建
环境 Linux :centos 7 redis:redis-5.0.9 Redis 集群环境搭建步骤 早期 redis 版本集群环境搭建需要安装 ruby 运行环境,搭建步骤比较繁琐: redis ...
- redis哨兵集群环境搭建
一.哨兵的介绍 哨兵(sentinal)是redis集群架构中非常重要的一个组件,主要功能如下: 集群监控,负责监控redis master和slave进程是否正常工作 消息通知,如果某个redis实 ...
- Redis Sentinel集群双机房容灾实施步骤
概要目标防止双机房情况下任一个机房完全无法提供服务时如何让Redis继续提供服务.架构设计A.B两机房,其中A机房有一Master一Slave和两个Sentinel,B机房只有2个Sentinel,如 ...
- Redis之集群环境搭建
前面文章介绍了Redis的主从复制,虽然该模式能够在一定程度上提高系统的稳定性,但是在数据访问量比较大的情况下,单个master应付起来还是比较吃力的,这时我们可以考虑将redis集群部署,本文就来重 ...
- redis集群与分片(2)-Redis Cluster集群的搭建与实践
Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...
- Redis Cluster集群的搭建与实践
Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...
- helm安装redis+Sentinel集群搭建
一.redis集群特点 数据 在多个Redis节点之间自动分片 sentinel特点: 它的主要功能有以下几点 不时地监控redis是否按照预期良好地运行; 如果发现某个redis节点运行出现状况,能 ...
随机推荐
- 基于Electron+.NET Core的前后端分离的跨平台桌面应用
Web做界面比原生桌面界面开发速度真心要快很多,而且组件也多. 分析: 1..NET Core和Electron都是跨平台的. 2.NET Core做后端很方便,但是没有GUI,Electron做桌面 ...
- 【原创】Github团队协作之Pull请求
首先声明:Github上关于代码团队协作方式有很多种,这里只讲述Github上其中的一种代码团队协作方式. Pull请求(Pull request) 1 综述 协作者通过fork一个新的代 ...
- Django 系列博客(二)
Django 系列博客(二) 前言 今天博客的内容为使用 Django 完成第一个 Django 页面,并进行一些简单页面的搭建和转跳. 命令行搭建 Django 项目 创建纯净虚拟环境 在上一篇博客 ...
- 如何定义一个有效的OWIN Startup Class
命名约定 Katana在程序集内的程序集名称空间下查找一个叫做Startup的类, 通过属性指定 [assembly: OwinStartup(typeof(OwinConsoleApp.Startu ...
- MyISAM和InnoDB区别详解
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...
- python使用udp实现聊天器
聊天器简易版 使用udp实现一个简单的聊天器程序,要求如下: 在一个电脑中编写1个程序,有2个功能 1.获取键盘数据,并将其发送给对方 2.接收数据并显示 并且功能数据进行选择以上的2个功能调用 例子 ...
- python文件
目录 1. 文件的概念 1.1 文件的概念和作用 1.2 文件的存储方式 2. 文件的基本操作 2.1 操作文件的套路 2.2 操作文件的函数/方法 2.3 read 方法 -- 读取文件 2.4 打 ...
- unable to locate nuget.exe
今日使用vs 从github fork 一份代码到本地之后,提示项目 unable to locate nuget.exe. 原因:代码托管时未提交 nuget.exe 或其他原因丢失 解决方法:在解 ...
- Android中一张图片占据的内存大小是如何计算
本篇文章已授权微信公众号 hongyangAndroid (鸿洋)独家发布 最近封装了个高斯模糊组件,正好将图片相关的理论基础也梳理了下,所以,这次就来讲讲,在 Android 中,怎么计算一张图片在 ...
- Django---ORM中的锁和事务
---恢复内容开始--- 一 锁 行级锁 select_for_update(nowait=False,skip_locked=False) #注意必须用在事务里面,至于如何开启事务,往后看 返回一 ...