随着web2.0时代的到来,对web服务QPS要求越来越高,天下武功唯快不破,将数据存储到内存无疑是IO最快的方式。内存容量和价格已经不能再限制我们的想象力,因此使用redis代替传统数据库可以成为高QPS的一个选择。

本文将介绍redis主从复制模式,故障自动切换和虚拟IP的漂移。redis主从复制可以提供数据冗余容灾,sentinel实现故障自动切换保证服务高可用,keepalived 可使客户端不必在redis故障切换后做任何操作,只需要访问固定的虚拟IP即可。

redis主从复制配置

master: 192.168.1.103

slave :192.168.1.104

master配置redis.conf

1. 注释bind 127.0.0.1,不然slave无法同步数据。

2.

protected-mode yes  # 开启保护模式

requirepass "123456"   #访问密码

daemonize yes  #后台方式启动

masterauth "123456"  #slave的密码,当slave切换成master时需要同步新master的数据

slave配置redis.conf

配置同master,只需要添加

slaveof 192.168.1.103 6379

哨兵故障自动切换

哨兵sentinel是redis自带的故障自动切换工具。

master配置sentinel.conf

daemonize yes  #后台方式启动

sentinel monitor mymaster1 192.168.1.103 6379 1  #监控103,最后的1表示只要一个哨兵标志103 down,则认为down.

sentinel down-after-milliseconds mymaster1 3000   #多长时间连不上则认为他down,单位毫秒

sentinel auth-pass mymaster1 123456  #认证密码

slave配置sentinel.conf

daemonize yes  #后台方式启动

sentinel monitor mymaster2 192.168.1.104 6379 1  #监控103,最后的1表示只要一个哨兵标志104 down,则认为down.

sentinel down-after-milliseconds mymaster2 3000   #多长时间连不上则认为他down,单位毫秒

sentinel auth-pass mymaster2 123456  #认证密码

keepalived IP漂移

虚拟ip的添加,略。。。

添加keepalived监控redis脚本

master和slave相同

vim check_redis.sh

#!/bin/bash  
###/etc/keepalived/scripts/redis_check.sh  
ALIVE=`/usr/redis-4.0.9/src/redis-cli PING`          #参考使用只修改redis-cli的路径即可  
if [ "$ALIVE" == "PONG" ]; then
  echo $ALIVE  
  exit 0
else
  echo $ALIVE  
  exit 1

fi

添加执行权限

chmod 777 check_redis.sh

修改keepalived.conf
master配置如下:

global_defs {
   notification_email {
     1277205804@qq.com
   }
   #notification_email_from keepalived_adm
   #smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script check_redis {
    script "/usr/redis-4.0.9/check_redis.sh"  #要执行的脚本
    interval 1     # 执行脚本间隔时间
    weight -10   #满足监控的脚本(redis down),权重减10
}

vrrp_instance VI_1 {
    state BACKUP   # master和slave都配置为backup,keepalived根据权重选出master
    interface eth0
    virtual_router_id 51  # 与slave的值要一致
    nopreempt    #master挂掉重启后不抢占
    priority 100   # 优先级,要比slave大
    advert_int 0.5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100   #虚拟ip
    }

track_script {
       check_redis   #执行脚本
    }

}

slave配置

global_defs {
   notification_email {
     1277205804@qq.com
   }
   #notification_email_from keepalived_adm
   #smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script check_redis {
    script "/usr/redis-4.0.9/check_redis.sh"  #要执行的脚本
    interval 1     # 执行脚本间隔时间
    weight -10   #满足监控的脚本(redis down),权重减10
}

vrrp_instance VI_1 {
    state BACKUP   # master和slave都配置为backup,keepalived根据权重选出master
    interface eth0
    virtual_router_id 51  # 与master的值要一致
    priority 99   # 优先级,要比master小
    advert_int 0.5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100   #虚拟ip
    }

track_script {
       check_redis   #执行脚本
    }

}

测试

启动master和slave

启动redis

src/redis-server redis.conf

启动哨兵

src/redis-sentinel sentinel.conf

启动keepalived

sudo service keepalived restart

测试验证

关闭master。。。略

重启master。。。略

ok, done.

redis主从故障自动切换IP漂移相关推荐

  1. mongodb----副本集搭建及故障自动切换

    mongodb副本集搭建 mongodb单台服务器 数据会有丢失的风险 单台服务器无法做高可用 mongodb副本集能够预防数据丢失,多台mongodb数据一致. mongodb副本集能够在有问题的时 ...

  2. Windows系统自动切换IP批处理

    对于同时使用内外网的用户来说,经常需要手动切换内外网的IP.现提供一个自动切换IP的批处理. windows7如下: netsh interface ip set address name=" ...

  3. 拼多多客京东客蘑菇街小程序v9.1高佣联盟无限多开版 新增两个京东备用接口,故障自动切换接口 小程序

    拼多多客京东客蘑菇街小程序v9.1高佣联盟无限多开版 新增两个京东备用接口,故障自动切换接口 小程序 [后端升级新版] 1.新增两个京东备用接口,故障自动切换接口. 学习资料源码:拼多多客京东客蘑菇街 ...

  4. php 连接redis哨兵,Redis哨兵模式实现主从故障互切换的方法

    Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是 ...

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

    转自 https://www.cnblogs.com/chenmh/p/5578376.html 介绍 Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel ...

  6. 结合keepalived实现redis群集高可用故障自动切换

    系统架构图: 我们所要实现的目的很简单, 104,107 为keepalive和redis主从架构,其余服务器比如105.106均为redis从库并且挂在vip 192.168.56.180下面. 主 ...

  7. mysql双主故障自动切换_MySQL主库高可用 -- 双主单活故障自动切换方案

    前言:(PS:前言是后来修改本文时加的)对于这篇文章,有博友提出了一些疑问和见解, 有了博友的关注,也促使我想把这套东西做的更实用.更安全.后来又经过思考,对脚本中一些条件和行为做了些改变.经过几次修 ...

  8. Redis Sentinel主从复制自动切换方案

    一.准备环境 #配置环境: Redis Sentinel:192.68.40.16:26379 Redis server主:192.168.40.17:6379 Redis server从:192.1 ...

  9. 主数据库宕机怎么办?MHA高可用帮你实现主从服务器自动切换(详细操作与命令详解)

    一.MHA简介 上一篇介绍了MySQL的主从复制.读写分离,实现主从服务器同步的架构,它存在单点故障的隐患,一旦主服务器出现故障,将无法进行写入,为了解决这个问题,可以考虑是否能够让从服务器切换角色, ...

  10. mysql双主故障自动切换_mysql双主热备宕机自动切换

    一.定义 通常说的「双机热备」是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短. 二.原理 Keepal ...

最新文章

  1. 华南赛区线上比赛安排
  2. 重学java基础第五课:博客的重要性
  3. 把光标放在EditText中文本最后
  4. Python数据分析与机器学习42-Python库分析科比生涯数据
  5. 项目组最重要的三个角色
  6. halfstone 原理_打水漂的原理研究
  7. 又到一年清明时,又是一年踏春季
  8. 经典的广告词及其翻译
  9. Android音视频基础知识
  10. IDEA添加gitlab仓库并上传代码(无需使用任何git指令),报错Ask a project Owner or Maintainer to create a default branch解决方案
  11. 面试官:什么是静态代理?什么是动态代理?注解、反射你会吗?
  12. 知物由学 | iOS AssetBundle资源保护
  13. 【Windows必备软件】01 Groupy 实现你所有的窗口标签化管理
  14. android 拨打电话、 监听来电、监听呼出电话的功能实现
  15. 1000:入门测试题目--信息学奥赛一本通题解
  16. DataTable小详解
  17. EDIUS怎么制作字幕停留效果?
  18. 守望之夏:地图投影的N种姿势
  19. 承兑汇票拒付什么情况下才能追索
  20. html文档兼容模式,怎么取消兼容模式 excel出现兼容模式怎么取消

热门文章

  1. 《刘毅突破英文词汇3000》Vocabulary fundamental 分课音频 下载
  2. ARCore学习——软件准备及网站
  3. OpenRefine安装使用
  4. Django框架基础知识(面试题)
  5. 运营有道:重新定义互联网运营
  6. 对称密钥算法与非对称密钥算法
  7. jQ UI 后台管理系统基础UI
  8. 多变量微积分笔记22——空间曲面的通量
  9. CCNA题库第一部分
  10. 5 --> radius 协议原理解析