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. SharedPreferences的工具类,使用起来方便、快捷

    SharedPreferences的工具类,使用起来方便.快捷:上代码:import android.content.Context;import android.content.SharedPref ...

  2. Filtering Specific Columns with cut

    Filtering Specific Columns with cut   When working with text files, it can be useful to filter out s ...

  3. WIN7 64位上 MYSQL的ODBC一些个人理解

    最近电脑中毒了,无奈之下把32位的xp换成了64位的win7,无聊耗时的搭完开发环境,装了vs6.0(忽略掉一切的不兼容),装完64位的mysql(“mysql-5.6.10-winx64.zip”) ...

  4. asp.net设置元素css的属性

    controls.style.Add("css名称","css值") 添加class规则 control.cssclass="str_cssname& ...

  5. EF 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭

    在以下代码中,当第二次foreach时会抛出该异常,原因是:由于Entity在读取数据的时候使用的是DbDataReader进行读取,当作为IEnumuerable<T>对象MoveNex ...

  6. JavaScript基础(二)

    一.外部引用语法<script src="script.js"></script> 二.在页面中的位置 1.我们可以将JavaScript代码放在html文 ...

  7. html跳转到同一个页面的不同位置

    <html> <body> <p><a href="#C4">查看 Chapter 4.</a></p> & ...

  8. php function_name($type=0,$order_ids='',$flag=2)

    $order_ids='',表示$order_ids是字符串,不是数组 foreach ($order_ids as $key=>$order_id){            //TODO} 这 ...

  9. pragram once

    #pragma once   [1]#pragma once这个宏有什么作用? 为了避免同一个文件被include多次,C/C++中有两种宏实现方式:一种是#ifndef方式,一种是#pragma o ...

  10. dede仿站笔记

    仿站步骤查看是否为dedecms的方法,看引用路径src="/templets/default2012/images/toutiao.png" 0查看仿站编码,选择utf8或gbk ...