实现redis高可用主从之sentinel

sentinel作用

  • 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
  • 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
  • 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。

实施环境

系统环境:centos7
redis版本:4.0.8
主服务器IP:192.168.20.101 6379
从服务器IP:192.168.20.99 6379
主服务器sentinel端口:26379
从服务器sentinel端口:26379

安装redis

[root] # wget http://download.redis.io/releases/redis-4.0.8.tar.gz
[root] # tar zxvf redis-4.0.8.tar.gz
[root] # cd redis-4.0.8
[root] # make
[root] # mkdir -p /usr/local/redis
[root] # cp /usr/local/src/redis-4.0.8/src/redis-server /usr/local/redis/
[root] # cp /usr/local/src/redis-4.0.8/src/redis-cli /usr/local/redis/
[root] # cp /usr/local/src/redis-4.0.8/redis.conf /usr/local/redis/
[root] # cd /usr/local/redis
[root] # vim /usr/local/redis/redis.conf

修改以下四项:

bind 0.0.0.0 #接受所有来自于可用网络接口的连接
daemonize yes #启用后台守护进程
protected-mode no #禁用保护模式
requirepass 123456 #设置密码

[root] # vim /etc/init.d/redis
#!/bin/sh
# description: Start and Stop redis
#PATH=/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6379
EXEC=/usr/local/redis/redis-server
REDIS_CLI=/usr/local/redis/redis-cli
PIDFILE=/var/run/redis_6379.pid
CONF="/usr/local/redis/redis.conf"
AUTH="123456"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        if [ "$?"="0" ]
        then
              echo "Redis is running..."
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $REDIS_CLI -p $REDISPORT SHUTDOWN
                while [ -x ${PIDFILE} ]
               do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
   restart|force-reload)
        ${0} stop
        ${0} start
        ;;
  *)
    echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
        exit 1
esac
[root] # chmod 755 /etc/init.d/redis #可执行
[root] # chkconfig --add redis #添加系统服务
[root] # vim /etc/rc.local

在文件末尾添加以下内容

service redis start #开机启动

开启redis服务

[root] # service redis start


查看进程

[root] # ps aux | grep redis

配置redis主从

  • 主(master):192.168.20.101

    • 添加以上redis配置
  • 从(slave):192.168.20.99
    • 添加以上redis配置
    • 添加以下配置

      slaveof 192.168.20.101 6379
      masterauth 123456

查看主从信息

[root] # cd /usr/local/redis
[root] # ./redis-cli -a 123456
[root] > info replication
  • 主(master)

  • 从(slave)

  • 验证





主-停止redis

从-变主

从-保存数据,迁移数据到主redis

主-重启redis服务

从-重新切换成从redis

从-又成为只读redis服务

配置高可用redis主从

[root] # cp /usr/local/src/redis-4.0.8/sentinel.conf /usr/local/redis/ #复制sentinel配置文件
[root] # vim /usr/local/redis/sentinel.conf

修改如下配置

daemonize yes
protected-mode no
sentinel monitor mymaster 192.168.20.101 6379 1
sentinel down-after-milliseconds mymaster 1000
sentinel failover-timeout mymaster 5000
sentinel auth-pass mymaster 123456

详细配置及解释见redis中文网

[root] # netstat -lap |grep 26379

[root] # ./redis-cli -h 192.168.20.101 -p 26379
[root] # >info

kill主redis进程

自动切换成功

原文地址:http://blog.51cto.com/13660331/2096167

时间: 2024-11-25 19:47:59

实现redis高可用主从之sentinel的相关文章

(六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)

参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https://blog.csdn.net/qq_28804275/article/details/80938659 下载redis镜像(不带tag标签则表示下载latest版本) docker pull redis 从github 下载最新的redis.conf,注意重要参数 # 端口 port 6379 #

Redis 高可用实践

Sentinel 简介 如上图所示,Redis 高可用是通过Sentinel来实现的,是Redis官方推荐的高可用性(HA)解决方案,Sentinel英文含义是哨兵,放哨的,可以理解为它是Redis集群的监控者,监控着所有的master和slave机器的健康状况.首先我们来看下它提供了哪些功能. 1.监控(Monitoring):监控所有主从机的健康状态,当主从机连接出现问题时,会自动变更有问题机器的状态.2.通知(Notification):一旦集群的节点有问题,Sentinel可以通过API

Redis 高可用 基于Sentinel + keepalived 实现

1  概述 redis作为缓存工具,如果仅仅单机,一旦挂掉,将对业务造成严重的影响,因此建议生产环境上部署redis高可用环境,本文将基于Sentinel + keepalived 实现redis的高可用. 本文主要介绍实现的步骤和配置文件,不做原理上的介绍 注意,redis的Sentinel高可用有一个很关键的点,只有master节点可以写入,其他节点都只能读,不能写,所以,vip必须配置在master节点上 三台redis ip 分别为 主节点: 192.168.70.32 备节点1:192

Redis(九)高可用专栏之Sentinel模式

本文讲述Redis高可用方案中的哨兵模式--Sentinel,RedisClient中的Jedis如何使用以及使用原理. Redis主从复制 Redis Sentinel模式 Jedis中的Sentinel Redis主从复制 Redis主从复制是Sentinel模式的基石,在学习Sentinel模式前,需要理解主从复制的过程. 1.保证数据一致性的机制 Redis主从复制的含义和Mysql的主从复制一样,即利用Slave从服务器同步Master服务器数据的副本.主从复制的最为关键的点在于主从数

搭建一个redis高可用系统

一.单个实例 当系统中只有一台redis运行时,一旦该redis挂了,会导致整个系统无法运行. 单个实例 二.备份 由于单台redis出现单点故障,就会导致整个系统不可用,所以想到的办法自然就是备份(一般工业界认为比较安全的备份数应该是3份).当一台redis出现问题了,另一台redis可以继续提供服务. 备份 三.自动故障转移 虽然上面redis做了备份,看上去很完美.但由于redis目前只支持主从复制备份(不支持主主复制),当主redis挂了,从redis只能提供读服务,无法提供写服务.所以

利用redis-sentinel+keepalived实现redis高可用

目标.需求: 为上层应用提供高可靠.低延迟.低(无限接近0)数据损失的Redis缓存服务 方案概述: 采用同一网络内的三台主机(可以是物理主机.虚拟机或docker容器),要求三台主机之间都能相互访问,每一台主机上都安装redis-server.redis-sentinel和keepalived. redis-server负责提供Redis缓存服务,三台主机间的关系是master-slave-slave redis-sentinel负责提供Redis高可用,三台主机间的关系与redis-serv

Redis高可用部署及监控

Redis高可用部署及监控 目录                        一.Redis Sentinel简介 二.硬件需求 三.拓扑结构 1.单M-S结构 2.双M-S结构 3.优劣对比 四.配置部署 1.Redis配置 2.Redis Sentinel配置 3.启动服务 4.故障模拟检测 五.备份恢复 1.备份策略 2.灾难恢复 六.运维监控 1.安全监控 2.性能监控   一.           Redis Sentinel简介   Redis Sentinel是redis自带的集

3台服务器Redis高可用哨兵模式

3台服务器Redis高可用哨兵模式 学习 redis 高可用 3台服务器Redis高可用哨兵模式 3.1 主redis配置 3.2 从redis配置 1. 介绍 2. redis程序安装 3. 哨兵模式配置 3.3 启动redis和哨兵 4. 总结 1. 介绍 Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常. 提醒(Notifi

Redis 高可用部署

Redis 高可用原理:Redis使用sentinel机制来实现高可用,sentinel是另外一个集群,主要是用来监控所有的Redis服务器,所以主节点和从节点,监控方式仍然使用的是ping指令,sentinel每隔1秒向master发送[ping],如果在一段时间内没有收到[pong]或者收到无效回复,则认为master下线.sentinel对下线有两种定义: a.主观下线(sdown):sentinel实例本身对服务实例的判断 b.客观下线(odown):多个sentinel实例对同一个服务