栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot实现Redis哨兵集群

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot实现Redis哨兵集群

第一步下载Redis3.0以上的版本,因为3.0以下的版本对集群搭建不太友好 第二步解压 第三步安装 以上教程自行百度,下文是本文的重点 进入你安装Redis的目录,复制3个reids.conf配置文件
cp ./redis.conf ./redis6379.conf
cp ./redis.conf ./redis6380.conf
cp ./redis.conf /.redis6381.conf
修改reids.conf配置文件,以redis6379.conf配置为例

自定义Redis日志文件保存位置
我的是
/Users/zhr/tools/redis/redis6379
/Users/zhr/tools/redis/redis6380
/Users/zhr/tools/redis/redis6381

打开文件

vim ./redis6379.conf

然后配置

#启用后台启动
daemonize yes
#pidfile位置,配置到对应的文件下面
pidfile "/Users/zhr/tools/redis/redis6379/redis6379.pid"
#端口
port 6379
#日志文件位置,配置到对应的文件下面
logfile "/Users/zhr/tools/redis/redis6379/log6379.log"
#rdb备份文件名称
dbfilename "dump6379.rdb"
#rdb备份文件路径,配置到对应的文件下面
dir "/Users/zhr/tools/redis/"

其它的俩conf文件依次按照上面的配置然后启动

./redis-server ./redis6379.conf
./redis-server ./redis6380.conf
./redis-server ./redis6381.conf

然后通过然后通过客户端连接,看一下那个可以新增数据,可以新增数据的那个是主节点

./redis-cli -p 6379
./redis-cli -p 6379
./redis-cli -p 6379

确认那个端口号连接的是主节点之后,然后在其余的从节点的conf文件下面加入这句话,然后重启所有节点

# slaveof 主节点ip 主节点端口号
slaveof 127.0.0.1 6379

重启所有节点:
方法一用客户端登录到各个节点

redis-cli -p 6379
shutdown

方法二打开进程管理结束所有Redis进程

然后再重新启动所有服务器节点

./redis-server ./redis6379.conf
./redis-server ./redis6380.conf
./redis-server ./redis6381.conf
配置哨兵

在redis.conf文件的目录中可以看到sentinel.conf,然后复制三份

vim sentinel-26379.conf
#Sentinel节点的端口,分别配置不同Sentinel节点端口号
port 26379
#自定义存储目录,把哨兵的日志保存到你自定义的目录中去
dir "/Users/zhr/tools/redis/sentinel"
#开启守护进程启动
daemonize yes
#日志文件名字配置成对应的日志文件名字
logfile "sentinel-26379.log"

#当前Sentinel节点监控 127.0.0.1:6379 这个主节点的端口号和ip
#2代表判断主节点失败至少需要2个Sentinel节点节点同意
#mymaster是主节点的别名
#所有的哨兵文件都配置成这样
sentinel monitor mymaster 127.0.0.1 6379 2

#每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒且没有回复,则判定不可达
#所有的哨兵文件都配置成这样
sentinel down-after-milliseconds mymaster 30000

#当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,原来的从节点会向新的主节点发起复制操作,限制每次向>新的主节点发起复制操作的从节点个数为1
#所有的哨兵文件都配置成这样
sentinel leader-epoch mymaster 1

#故障转移超时时间为180000毫秒
#所有的哨兵文件都配置成这样
sentinel failover-timeout mymaster 180000

#同理创建修改sentinel-26380.conf、sentinel-26381.conf配置文件

启动哨兵

./redis-sentinel ./sentinel-26379.conf
./redis-sentinel ./sentinel-26380.conf
./redis-sentinel ./sentinel-26381.conf

服务端至此配置完毕!!!

springboot集成

特别注意在配置节点的时候,端口号是哨兵节点端口号

server:
  port: 80

spring:
  redis:
    lettuce:
      pool:
        # 连接池最大连接数(使用负值表示没有限制) 默认为8
        max-active: 8
        # 连接池中的最大空闲连接 默认为8
        max-idle: 8
        # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认为-1
        max-wait: -1ms
        # 连接池中的最小空闲连接 默认为 0
        min-idle: 0
    sentinel:
      # 主节点的别名
      master: mymaster
      # sentinel服务的ip 和 哨兵的端口
      nodes: 192.168.126.200:26379,192.168.126.200:26380,192.168.126.200:26381

    org.springframework.boot
    spring-boot-starter-data-redis


    org.springframework.boot
    spring-boot-starter-web



    org.apache.commons
    commons-pool2

@RestController
@RequestMapping("/redis")
public class RedisController {

    // 使用SpringBoot封装的RestTemplate对象
    @Autowired
    RedisTemplate redisTemplate;

    @RequestMapping("/get")
    public String get(String key) {
        String value = redisTemplate.opsForValue().get(key);
        return value;
    }

    @RequestMapping("/set")
    public String set(String key, String value) {
        redisTemplate.opsForValue().set(key, value);
        return "success";
    }
}

以请求新增或者获取值的接口
最主要的是可以把主节点停止掉(用redis-cli -p 6379停止或者结束主节点进程),判断哨兵是否会主动创建新的主节点

成功连接到新的主节点!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/854405.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号