redis哨兵集群+spring boot 2.×
Ubuntu集群构建篇
redis-cli:不跟参数,默认访问localhost:6379端口,无密码登陆
redis-cli -h ${host} -p ${port} -a ${password}
redis-server ${redis.conf}:这里注意配置文件
配置文件redis.conf,相关目录需提前创建,否则报错 No such file or directory
配置参数,按需配置。
设备有限,案例基于Ubuntu单机,多端口构建redis实例。
解压:
tar zxvf redis-3.0.2.tar.gz
安装:
make
redis.conf配置文件
初始主节点配置文件:
# 后台启动 即启动守护进程
daemonize yes # 守护进程运行,Redis默认将pid写入某路径下
pidfile /home/redis/redis/redisRun/redis_6381.pid # 指定端口
port 6381 # 客户端闲置多久后关闭连接,为0则关闭该功能
timeout 0
tcp-keepalive 0 # 指定日志级别,支持dubug、verbose、notice、warning,默认verbose
loglevel notice # 日志文件路径
logfile /home/redis/redislog/redis.log # 数据库数量
databases 16 # 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
# 满足以下条件将会同步数据:
# 900秒(15分钟)内有1个更改
# 300秒(5分钟)内有10个更改
# 60秒内有10000个更改
# 注:可以把所有save行注释掉,即取消同步操作
save 900 1
save 300 10
save 60 10000 stop-writes-on-bgsave-error yes # 指定存储至本地数据库时是否压缩数据,默认为yes
# Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
rdbcompression yes rdbchecksum yes # 指定本地数据库文件名
dbfilename dump.rdb # 工作目录,即指定本地数据库存放目录,文件名由dbfilename指定
dir /home/redis/redisdb # 如果做故障切换,不论主从节点都要填写密码且要保持一致
masterauth 123456
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 98 # 当前redis密码
requirepass 123456 # 指定是否在每次更新操作后进行日志记录,默认为no
appendonly yes # 指定更新日志条件,共有3个可选值:
# no:表示等操作系统进行数据缓存同步到磁盘(快)
# always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
# everysec:表示每秒同步一次(折衷,默认值)
# appendfsync always
appendfsync everysec
# appendfsync no no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64 # 指定是否激活重置哈希,默认为开启
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
初始从节点配置文件:
daemonize yes
#pid----
pidfile /home/redis/redis/redisRun/redis_6391.pid
port 6391
timeout 0
tcp-keepalive 0
loglevel notice
#日志 ----
logfile /home/redis/redislog/redis1.log
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
#本地数据库文件名 ------
dbfilename dump1.rdb
dir /home/redis/redisdb
#主节点密码
masterauth 123456
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 98
requirepass 123456
appendonly yes
# appendfsync always
appendfsync everysec
# appendfsync no
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
# Generated by CONFIG REWRITE
#配置主节点信息
slaveof *.*.*.* 6381
sentinel.conf哨兵配置文件
port 26381
#1表示在sentinel集群中只要有两个节点检测到redis主节点出故障就进行切换,单sentinel节点无效(自己测试发现的)
#如果3s内mymaster无响应,则认为mymaster宕机了
#如果10秒后,mysater仍没活过来,则启动failover
sentinel monitor mymaster *.*.*.* 6381 1
sentinel down-after-milliseconds mymaster 3000
sentinel failover-timeout mymaster 10000
daemonize yes
#指定工作目录
dir /home/redis/sentinel-work
protected-mode no
logfile /home/redis/sentinellog/sentinel.log
#redis主节点密码
sentinel auth-pass mymaster 123456
# Generated by CONFIG REWRITE
启动集群
主从节点redis后台启动
redis-server redis.conf
哨兵启动
redis-sentinel sentinel.conf
登陆验证
登陆
redis-cli -h *.*.*.* -p 6381 -a 123456
验证主从关联
info Replication
查看哨兵日志sentinel.log

主节点宕机,slaves重新选举master

原主节点重启,成为新的从节点

基于SpringBoot整合哨兵集群
引入pom依赖
<!-- redis启动依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 对象池化组件 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.0</version>
</dependency>
application.yml配置
spring:
redis:
database: 2
password: 123456
lettuce:
pool:
max-active: 8
min-idle: 0
max-wait: -1
sentinel:
master: mymaster
nodes: *.*.*.*:26381,*.*.*.*:26391,*.*.*.*:26392,*.*.*.*:26393
host: *.*.*.*
port: 6381
测试即可:
@RestController
public class TestRedisController { @Autowired
private StringRedisTemplate stringRedisTemplate; @RequestMapping(value = "/set")
public void set(){
stringRedisTemplate.opsForValue().set("tom","jerry");
} @RequestMapping(value = "/get")
public String get(){
return stringRedisTemplate.opsForValue().get("tom");
} }
redis哨兵集群+spring boot 2.×的更多相关文章
- Linux - redis哨兵集群实例
目录 Linux - redis哨兵集群实例 命令整理 配置流程 Linux - redis哨兵集群实例 命令整理 官网地址:http://redisdoc.com/ redis-cli info # ...
- helm部署Redis哨兵集群
介绍 Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现.故障自动转移.配置中心和客户端通知. 如下图: Redis Sentinel 故障转移过程: 从这 ...
- 11.Redis 哨兵集群实现高可用
作者:中华石杉 Redis 哨兵集群实现高可用 哨兵的介绍 sentinel,中文名是哨兵.哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis mast ...
- python连接redis哨兵集群
一.redis集群模式有多种, 哨兵模式只是其中的一种实现方式, 其原理请自行谷歌或者百度 二.python 连接 redis 哨兵集群 1. 安装redis包 pip install redis 2 ...
- redis哨兵集群搭建
下载redis jar包redis-4.0.11.tar.gz放在/data/redis目录下 解压 命令:tar -zxvf redis-4.0.11.tar.gz 解压后如图所示 在/usr/lo ...
- Redis进阶实践之十 Redis哨兵集群模式
一.引言 上一篇文章我们详细的讲解了Redis的主从集群模式,其实这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改,但是有一 ...
- redis哨兵集群环境搭建
一.哨兵的介绍 哨兵(sentinal)是redis集群架构中非常重要的一个组件,主要功能如下: 集群监控,负责监控redis master和slave进程是否正常工作 消息通知,如果某个redis实 ...
- redis哨兵集群、docker入门
redis-sentinel主从复制高可用 Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果m ...
- 【Redis哨兵集群】
目录 开始配置主从复制 开始配置Redis Sentinel @ *** 在开始之前,我们先来看看Redis的主从复制 主从复制原理: 从服务器向主服务器发送SYNC命令. 主服务器接到SYNC命令后 ...
随机推荐
- 九、xadmin菜单分组管理
有的时候,我们的菜单很多很杂,想要把菜单进行分组以方便管理,如下 前一篇博文已经详细讲解了如何菜单自定义排序,自定义分组和排序其实写法类似: 要实现上面这个功能,分为以下几步: 1. 我们需要定义一个 ...
- Mysql安装(Ubuntu)
卸载方法一: --删除mysql的数据文件 sudo rm /var/lib/MySQL/ -R --删除mysql的配置文件 sudo rm /etc/mysql/ -R --自动卸载mysql(包 ...
- 牛客网 Python 编程输入规范
import sys try: while True: line = sys.stdin.readline().strip() if line == '': break lines = line.sp ...
- JS 有趣的JS
一. var arr = []; for (var i = 0; i < 3; i++) { arr[i] = function() { console.log(i+'__') // 3 3 3 ...
- java高精度学习笔记
高精度基本用法 valueOf(parament) 将参数转换为指定的类型 add() 相加 subtract() 相减 multiply() 相乘 divide() ...
- stl stack用法
栈后进先出 #include<iostream> #include<algorithm> #include<cstdio> #include<stack> ...
- 消息队列queue
一.queue 在多线程编程中,程序的解耦往往是一个麻烦的问题,以及在socket网络编程中也会有这样的问题.recv 和send之间,如果服务端有消息,问题需要发送给客户端,而那边的recv 被主程 ...
- Java基础之一反射
反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一.反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够 ...
- CentOS搭建OpenVPN以及WIN&Android&iOS的安装连接
OpenVPNhttp://info.swufe.edu.cn/vpn/openvpn/#2 苹果.安卓智能手机openvpn的设置_百度经验https://jingyan.baidu.com/art ...
- Eclipse支持文件UTF-8编码
Eclipse修改编码格式_百度经验https://jingyan.baidu.com/article/2009576193ee38cb0721b416.html 这篇最棒 如何为eclipse中的文 ...