Redis高可用升级
前言:
缓存对应实时性要求比较高的业务需求可谓十分重要,但缓存中的实时数据一旦丢失,将直接影响整个业务功能。考虑到各场景的业务需求,redis推出了高可用的方案,即:主从+哨兵的HA机制。
准备
"redis-4.0.6.tar.gz" 下载地址(https://redis.io/download )
$ tar -zxvf redis-4.0.6.tar.gz
$ ln -s redis-4.0.6 redis
1. 背景
升级之前:
单实例 Jedis Instance
-------------------------------------
HA升级方案:

2. 实现步骤
step1:主节点test-zk02增加如下服务启动:
test-zk02 (master)
src/redis-sentinel.conf
配置文件的内容见“附1”
test-zk03 (slave)
src/redis-server redis6379.conf
复制主节点的配置后在末尾加上一行"slaveof test-zk02 6379"即可
step2:代码层修改如下:
Set<String> sentinels = new HashSet<String>();
sentinels.add("192.168.10.80:26379");
JedisSentinelPool jedisPool = new JedisSentinelPool("mymaster", sentinels);
3. 注意
1).服务升级用户为root
2).配置哨兵日志 sentinel26379.log
3).修改代码层之后需及时同步redis配置
4).升级HA后观察连接数变动 " echo 'info clients' | /opt/redis-cli -h test-zk02 -p 6379"
附1
-------------------------------
sentinel.conf配置内容
bind 127.0.0.1 test-zk02
protected-mode no
daemonize yes
logfile "/opt/redis/s26379.log"
port 26379
dir /tmp
sentinel monitor test-master test-zk02 6379 1
sentinel down-after-milliseconds test-master 30000
sentinel parallel-syncs test-master 1
sentinel failover-timeout test-master 180000
附2
-------------------------------
主从切换调试命令
/opt/redis-cli -h localhost -p 9998 debug sleep 20
主从切换日志
55794:X 01 Jun 15:25:55.813 # +sdown master test-master 192.168.10.80 9999
55794:X 01 Jun 15:25:55.813 # +odown master test-master 192.168.10.80 9999 #quorum 1/1
55794:X 01 Jun 15:25:55.813 # +new-epoch 3
55794:X 01 Jun 15:25:55.813 # +try-failover master test-master 192.168.10.80 9999
55794:X 01 Jun 15:25:55.828 # +vote-for-leader 35e9cce79ec5d7a2f1cd9473d089166b533c4690 3
55794:X 01 Jun 15:25:55.828 # +elected-leader master test-master 192.168.10.80 9999
55794:X 01 Jun 15:25:55.828 # +failover-state-select-slave master test-master 192.168.10.80 9999
55794:X 01 Jun 15:25:55.886 # +selected-slave slave 192.168.10.80:9998 192.168.10.80 9998 @ test-master 192.168.10.80 9999
55794:X 01 Jun 15:25:55.886 * +failover-state-send-slaveof-noone slave 192.168.10.80:9998 192.168.10.80 9998 @ test-master 192.168.10.80 9999
55794:X 01 Jun 15:25:55.945 * +failover-state-wait-promotion slave 192.168.10.80:9998 192.168.10.80 9998 @ test-master 192.168.10.80 9999
55794:X 01 Jun 15:25:56.894 # +promoted-slave slave 192.168.10.80:9998 192.168.10.80 9998 @ test-master 192.168.10.80 9999
55794:X 01 Jun 15:25:56.894 # +failover-state-reconf-slaves master test-master 192.168.10.80 9999
55794:X 01 Jun 15:25:56.969 # +failover-end master test-master 192.168.10.80 9999
55794:X 01 Jun 15:25:56.969 # +switch-master test-master 192.168.10.80 9999 192.168.10.80 9998
55794:X 01 Jun 15:25:56.969 * +slave slave 192.168.10.80:9999 192.168.10.80 9999 @ test-master 192.168.10.80 9998
55794:X 01 Jun 15:26:25.531 * +convert-to-slave slave 192.168.10.80:9999 192.168.10.80 9999 @ test-master 192.168.10.80 9998
参考资料
https://redis.io/topics/sentinel
Redis高可用升级的更多相关文章
- Redis高可用集群-哨兵模式(Redis-Sentinel)搭建配置教程【Windows环境】
No cross,no crown . 不经历风雨,怎么见彩虹. Redis哨兵模式,用现在流行的话可以说就是一个"哨兵机器人",给"哨兵机器人"进行相应的配置 ...
- 搭建一个redis高可用系统
一.单个实例 当系统中只有一台redis运行时,一旦该redis挂了,会导致整个系统无法运行. 单个实例 二.备份 由于单台redis出现单点故障,就会导致整个系统不可用,所以想到的办法自然就是备份( ...
- Redis高可用部署及监控
Redis高可用部署及监控 目录 一.Redis Sentinel简介 二.硬件需求 三.拓扑结构 .单M-S结构 .双M-S结构 .优劣对比 四.配置部 ...
- Redis高可用架构
前言 Redis是一个高性能的key-value数据库,现时越来越多企业与应用使用Redis作为缓存服务器.楼主是一枚JAVA后端程序员,也算是半个运维工程师了.在Linux服务器上搭建Redis,怎 ...
- Redis高可用(持久化、主从复制、哨兵、集群)
Redis高可用(持久化.主从复制.哨兵.集群) 目录 Redis高可用(持久化.主从复制.哨兵.集群) 一.Redis高可用 1. Redis高可用概述 2. Redis高可用策略 二.Redis持 ...
- redis高可用、redis集群、redis缓存优化
今日内容概要 redis高可用 redis集群 redis缓存优化 内容详细 1.redis高可用 # 主从复制存在的问题: 1 主从复制,主节点发生故障,需要做故障转移,可以手动转移:让其中一个sl ...
- Keepalived+Redis高可用部署(第二版)
更新 20150625 脚本由5个减少为4个,sh脚本指令做了精简. 修改了另外3个脚本,在日志里增加了日期显示. 新增redis数据类型,持久化,主从同步简介. 新增hiredis简介. 新增c语言 ...
- Redis 高可用集群
Redis 高可用集群 Redis 的集群主从模型是一种高可用的集群架构.本章主要内容有:高可用集群的搭建,Jedis连接集群,新增集群节点,删除集群节点,其他配置补充说明. 高可用集群搭建 集群(c ...
- sentinel监控redis高可用集群(一)
一.首先配置redis的主从同步集群. 1.主库的配置文件不用修改,从库的配置文件只需增加一行,说明主库的IP端口.如果需要验证的,也要加多一行,认证密码. slaveof 192.168.20.26 ...
随机推荐
- javascript中的with关键字
说起js中的with关键字,很多小伙伴们的第一印象可能就是with关键字的作用在于改变作用域,然后最关键的一点是不推荐使用with关键字.听到不推荐with关键字后,我们很多人都会忽略掉with关键字 ...
- 【NumberValidators】类库介绍
NumberValidators是一个用于验证中国大陆证件.号码是否符合国家标准的类库,因为该类库在昨日已经正式发布1.0.0版本至nuget,所以在此介绍下该类库的具体功能. NumberValid ...
- (php)实现万年历
<?php //修改页面编码 header("content-type:text/html;charset=utf-8"); //获取当前年 $year=$_GET['y'] ...
- ORM到底是什么有何优缺点
转载地址:http://www.cnblogs.com/wgbs25673578/p/5140482.html ORM的概念, ORM到底是什么 一.ORM简介 对象关系映射(Obje ...
- 【cocos2d-x 手游研发小技巧(6)聊天系统+字体高亮】
转载请注明出处:http://www.cnblogs.com/zisou/p/cocos2dxJQ-6.html 聊天系统在手机网游中是最常见的交互工具,大家在一起边玩游戏边聊天岂不乐哉: 废话不多了 ...
- day65 Django模板语言
常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} 变量名由字母数字和下划线组成. 点(.)在模板语言中有特殊的含 ...
- FFmpeg音视频解封装
一 . 解封装用到的函数和结构体 1.av_register_all() : open 一次就调用一次 2.avformat_network_init() : 网络模块初始化 3.avformat_o ...
- 使用hex编码绕过主机卫士IIS版本继续注入
本文作者:非主流 测试文件的源码如下: 我们先直接加上单引号试试: http://192.168.0.20/conn.asp?id=1%27 很好,没有报错.那我们继续,and 1=1 和and 1= ...
- 【JS深入学习】——函数创建和重载
今天做一个关注/取消的功能,由于需要向后台发送请求,想通过控制用户点击发送的频次减少不必要的请求,即在一定时间内,用户点击多次但只发送一次数据,自然而然想到了使用[函数节流]. function th ...
- python 实现视频的下载以及断点续传
---恢复内容开始--- 一般情况下我们使用爬虫更多的应该是爬数据或者图片吧,今天在这里和大家分享一下关于使用爬虫技术来进行视频下载的方法,不仅可以方便的下载一些体积小的视频,针对大容量的视频下载同样 ...