前言:

  缓存对应实时性要求比较高的业务需求可谓十分重要,但缓存中的实时数据一旦丢失,将直接影响整个业务功能。考虑到各场景的业务需求,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高可用升级的更多相关文章

  1. Redis高可用集群-哨兵模式(Redis-Sentinel)搭建配置教程【Windows环境】

    No cross,no crown . 不经历风雨,怎么见彩虹. Redis哨兵模式,用现在流行的话可以说就是一个"哨兵机器人",给"哨兵机器人"进行相应的配置 ...

  2. 搭建一个redis高可用系统

    一.单个实例 当系统中只有一台redis运行时,一旦该redis挂了,会导致整个系统无法运行. 单个实例 二.备份 由于单台redis出现单点故障,就会导致整个系统不可用,所以想到的办法自然就是备份( ...

  3. Redis高可用部署及监控

    Redis高可用部署及监控 目录                        一.Redis Sentinel简介 二.硬件需求 三.拓扑结构 .单M-S结构 .双M-S结构 .优劣对比 四.配置部 ...

  4. Redis高可用架构

    前言 Redis是一个高性能的key-value数据库,现时越来越多企业与应用使用Redis作为缓存服务器.楼主是一枚JAVA后端程序员,也算是半个运维工程师了.在Linux服务器上搭建Redis,怎 ...

  5. Redis高可用(持久化、主从复制、哨兵、集群)

    Redis高可用(持久化.主从复制.哨兵.集群) 目录 Redis高可用(持久化.主从复制.哨兵.集群) 一.Redis高可用 1. Redis高可用概述 2. Redis高可用策略 二.Redis持 ...

  6. redis高可用、redis集群、redis缓存优化

    今日内容概要 redis高可用 redis集群 redis缓存优化 内容详细 1.redis高可用 # 主从复制存在的问题: 1 主从复制,主节点发生故障,需要做故障转移,可以手动转移:让其中一个sl ...

  7. Keepalived+Redis高可用部署(第二版)

    更新 20150625 脚本由5个减少为4个,sh脚本指令做了精简. 修改了另外3个脚本,在日志里增加了日期显示. 新增redis数据类型,持久化,主从同步简介. 新增hiredis简介. 新增c语言 ...

  8. Redis 高可用集群

    Redis 高可用集群 Redis 的集群主从模型是一种高可用的集群架构.本章主要内容有:高可用集群的搭建,Jedis连接集群,新增集群节点,删除集群节点,其他配置补充说明. 高可用集群搭建 集群(c ...

  9. sentinel监控redis高可用集群(一)

    一.首先配置redis的主从同步集群. 1.主库的配置文件不用修改,从库的配置文件只需增加一行,说明主库的IP端口.如果需要验证的,也要加多一行,认证密码. slaveof 192.168.20.26 ...

随机推荐

  1. Java 类型转换工具类(持续更新)

    简介 将项目中用到的类型转换做个记录. 详细代码 @Component public class TypeUtil { // [start]字符串转各种格式 // 字符串转日期(格式:"yy ...

  2. 使用Spring Boot,Spring Cloud和Docker实现微服务架构

    https://github.com/sqshq/PiggyMetrics     Microservice Architecture with Spring Boot, Spring Cloud a ...

  3. 【转】Lucene工作原理——反向索引

    原文链接:  http://my.oschina.net/wangfree/blog/77045 倒排索引 倒排索引(反向索引) 倒排索引源于实际应用中需要根据属性的值来查找记录.这种索引表中的每一项 ...

  4. Atcoder Tenka1 Programmer Contest 2019题解

    传送门 \(C\ Stones\) 最后肯定形如左边一段白+右边一段黑,枚举一下中间的断点,预处理一下前缀和就可以了 int main(){ // freopen("testdata.in& ...

  5. Mac 设置终端中使用 sublime 打开文件

    在Mac下用终端创建文件等比较方便,但如果配合Sublime用,最好是可以直接在终端中输入命令就可以用Sublime打开指定文件或文件夹. #检查用户目录下有没有bin目录,如里没有就创建一个(目的是 ...

  6. 六,mysql优化——小知识点

    1,选择适当的字段类型,特别是主键 选择字段的一般原则是保小不保大,能占用字节小的字段就不用大字段.比如主键,建议使用自增类型,这样节省空间,空间就是效率!按4个字节和按32个字节定位一条记录,谁快谁 ...

  7. (6)Oracle基础--简单查询

    .基本查询语句  SELECT [DISTINCT] column_name1,... | * FROM table_name [WHERE conditions]; P: DISTINCT关键字的作 ...

  8. [Swift实际操作]七、常见概念-(10)使用UserDefaults和归档方式存取用户数据实际操作

    在项目开发之中,你会经常需要将一些数据存储在本地,以便记录用户生产的数据或操作习惯.在项目文件夹上带点击鼠标右键.弹出右键菜单.本文将为你演示,存储用户数据的两种常用方式. 选择菜单中的创建新文件选项 ...

  9. 使用ie的filter来解决rgba在IE8下没有效果的问题

    使用ie的filter来解决rgba在IE8下没有效果的问题,css代码如下: background: rgba(255,255,255,0.1); filter:progid:DXImageTran ...

  10. hbase搭建web项目 报500错误 HTTP Status 500 - Unable to compile class for JSP

    在昨天,用hbase做后台搭建web项目时,前边的进行的非常顺利,当运行时便 报错了,截图如下: 这是直接在jsp中接收参数报的错误,如果在servlet中,同样也是报500的错误,虽然显示的不太一样 ...