springboot整合Redis哨兵模式

Redis高可用哨兵模式搭建
一主二从三哨兵模式

Redis安装
1、Redis下载

wget http://download.redis.io/releases/redis-4.0.11.tar.gz
2、解压

tar zxcf redis-4.0.11.tar.gz
3、进入目录

cd redis-4.0.11/
4、安装

   cd src 
   make
   yum install -y tcl
   make test
   make install PREFIX=/home/redis-sentinel #指定目录安装,注意 PREFIX 大写

Redis主从配置
5、配置文件

  mkdir /home/redis-sentinel/conf
  cp redis.conf /home/redis-sentinel/conf
  cd /home/redis-sentinel/conf
  vi redis.conf   #编辑配置文件

将bind 127.0.0.1注释掉,这个是绑定能访问redis的ip地址,如果指定,那么只有指定的ip可以访问redis

将daemonize no修改为daemonize yes,设置为后台启动

将protected-mode yes修改为protected-mode no,设置为非保护模式,这样可以进行远程访问,如果不改,哨兵配置的如果是真实ip地址(非127.0.0.1),则没法访问。

非保护模式会有安全问题,我们可以给redis和哨兵设置密码,增强安全性。

  cp redis.conf redis-6380.conf   
  cp redis.conf redis-6381.conf   #复制两份

分别修改`redis-6380.conf和redis-6381.conf的端口号等并且加入一下配置。

slaveof [主节点ip] [主节点端口号] 如:slaveof 192.168.1.27
6、启动redis

? ./redis-server ../conf/redis.conf?
? ./redis-server ../conf/redis-6380.conf?
? ./redis-server ../conf/redis-6381.conf?

到此Redis的主从配置就完成了,可以通过

./redis-cli -p [端口号]
登录redis进行测试主从复制是否成功。

Redis哨兵配置
1、从下载文件中复制sentinel.conf配置文件到安装目录下

2、在配置文件中修改以下内容

port 26379 #哨兵的端口
sentinel monitor s1 <ip地址> 6379 2
sentinel monitor s2 <ip地址> 6379 2 # 这里是主节点的配置,如果有多个master节点,则配置多行,2代表选举的时候新的leader需要获得2票
protected-mode no
注意:

此处的<ip地址>不要写127.0.0.1,否则在使用程序连接哨兵的时候,主从切换后,程序自动获取到的IP地址是127.0.0.1:端口,这意味着应用程序服务器上可能是没有Redis的(如果有也可能不是同一个Redis)。

protected-mode :关闭保护模式(默认情况下,redis node和sentinel的protected-mode都是yes,在搭建集群时,若想从远程连接redis集群,需要将redis node和sentinel的protected-mode修改为no,若只修改redis node,从远程连接sentinel后,依然是无法正常使用的,且sentinel的配置文件中没有protected-mode配置项,需要手工添加。依据redis文档的说明,若protected-mode设置为no后,需要增加密码证或是IP限制等保护机制,否则是极度危险的。)

3、将此配置文件再复制两份,分别是sentinel-26479.conf和sentinel-26579.conf

4、分别修改复制配置文件中的端口号

5、启动哨兵

./redis-sentinel …/conf/sentinel.conf
./redis-sentinel …/conf/sentinel-26479.conf
./redis-sentinel …/conf/sentinel-26579.conf #或者./redis-server …/conf/sentinel-26579.conf --sentinel
到此哨兵配置就结束了,可以模拟宕机的情况来测试主从切换。

6、如果以上配置出现了错误,就把redis自动生成的代码删掉,再试试。

#删掉以下代码,重试
sentinel myid 82198d08eeae6a1123d935baa4aab0184ff42210
?
# Generated by CONFIG REWRITE
sentinel config-epoch mymaster 3
sentinel leader-epoch mymaster 3
sentinel known-slave mymaster 172.19.246.6 6379
sentinel known-slave mymaster 172.19.246.5 6379
sentinel known-sentinel mymaster 172.19.246.6 26379 fd6559342c1da75344258efc09027693863b61b6
sentinel known-sentinel mymaster 172.19.246.7 26379 82198d08eeae6a1123d935baa4aab0184ff42210

Springboot整合哨兵模式
1、依赖引入

org.springframework.boot spring-boot-starter-data-redis 1、yaml文件的配置
? spring.redis.sentinel.master=mymaster ? #哨兵集群的名称
? spring.redis.sentinel.nodes=192.168.1.112:26379,192.168.1.112:26479,192.168.1.112:26579 #哨兵节点
? #spring.redis.sentinel.password=123456 ?如果有密码则设置密码
? # 以下配置是org.springframework.boot.autoconfigure.data.redis低版本才有的。。
? spring.redis.pool.max-active=50 #最大连接数
? spring.redis.pool.max-idle=10 ? #最大等待连接数
? spring.redis.pool.max-wait=10000 ? ?#最大等待毫秒数
? spring.redis.pool.min-idle=5 ? ?#最小等待连接数
? spring.redis.timeout=0 ?#超时时间
? # 高版本的连接池的配置,选一个就可以
? #spring.redis.jedis.pool.max-active=50
? #spring.redis.jedis.pool.max-idle=10
? #spring.redis.jedis.pool.max-wait=10000ms
? #spring.redis.jedis.pool.min-idle=5
? #spring.redis.jedis.timeout=0
? spring.redis.lettuce.pool.max-active=50
? spring.redis.lettuce.pool.max-wait=10000ms
? spring.redis.lettuce.pool.max-idle=8
? spring.redis.lettuce.pool.min-idle=5

2、使用spring-data-redis中的RedisTemplate可以完成自动配置,开箱即用

? @Autowired
? private RedisTemplate redisTemplate;

注意redisTemplate必须是这个名,才能自动注入,这是源码中写好的org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration

? @Bean
? @ConditionalOnMissingBean(
? ????name = {"redisTemplate"}
? )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值