• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Redis Sentinel实现高可用配置的详细步骤

    一般情况下yum安装redis的启动目录在:/usr/sbin ;配置目录在/etc/redis/在其目录下会有默认的redis.conf和redis-sentinel.conf

    redis高可用配置:

    配置哨兵(redis-sentinel),我的所有配置文件都放在/etc/redis-cluster/目录下

    1、创建redis-sentinel_26379.conf,主要内容如下:

    #基本配置
    port 26379
    daemonize yes
    logfile "/var/log/redis/sentinel_26379.log"
    protected-mode no
    dir /var/lib/redis-cluster/sentinel
    
    #检查配置
    sentinel monitor mymaster 127.0.0.1 6379 1 (指向master服务器或端口)
    #sentinel auth-pass mymaster passwd
    sentinel parallel-syncs mymaster 1
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 18000
    
    

    2、创建redis-sentinel_26380.conf,主要内容如下:

    #基本配置
    port 26380
    daemonize yes
    logfile "/var/log/redis/sentinel_26380.log"
    protected-mode no
    dir /var/lib/redis-cluster/sentinel
    #检查配置
    sentinel monitor mymaster 127.0.0.1 6379 1 (指向master服务器或端口)
    #sentinel auth-pass mymaster passwd
    sentinel parallel-syncs mymaster 1
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 18000

    sentinel monitor的参数声明的含义如下所示:

    sentinel monitor [master-group-name] [ip] [port] [quorum]

    第一行用于告诉Redis监控一个master叫做mymaster,它的地址在127.0.0.1,端口为6379,法定人数是2。每个参数都很容易理解,但是quorum需要解释一下:

    1、quorum是Sentinel需要协商同意master是否可到达的数量。为了真正的标记slave为失败,并最终是否需要启动一个故障转移进程。
    2、无论怎样,quorum只用于检测故障。为了实际执行故障转移,Sentinel需要选举leader并进行授权。这只发生在大多数Sentinel进程的选举。

    其他的选项通常是这种形式:

    其他的选项通常是这种形式:sentinel [option_name] [master_name] [option_value]

    1. down-after-milliseconds - 一个实例不可到达(不能ping通或者有错误),Sentinel开始认为它是down的毫秒数。
    2. parallel-syncs - 设置在故障转移之后同时可以重新配置使用新master的slave的数量。数字越低,更多的时间将会用故障转移完成,但是如果slaves配置为服务旧数据,你可能不希望所有的slave同时重新同步master。因为主从复制对于slave是非阻塞的,当停止从master加载批量数据时有一个片刻延迟。通过设置选项为1,确信每次只有一个slave是不可到达的。

    3、创建redis-master-6379.conf,master配置基本和默认文件没有差别,主要内容如下:

    daemonize yes
    protected-mode no
    port 6379
    #requirepass "passwd"
    #masterauth "passwd"
    

    4、创建redis-slave-6380.conf,主要内容如下:

    protected-mode no
    port 6380
    daemonize yes
    #requirepass "passwd"
    #masterauth "passwd"
    slaveof 127.0.0.1 6379
    

    5、接下来就可以启动了。

    cd /usr/sbin/
    #启动master redis
    redis-server /etc/redis-cluster/redis-master-6379.conf
    #启动slave redis
    redis-server /etc/redis-cluster/redis-slave-6380.conf
    #启动redis-sentinel
    redis-sentinel /etc/redis-cluster/redis-sentinel_26379.conf
    redis-sentinel /etc/redis-cluster/redis-sentinel_26380.conf

    我们可以在/var/log/redis/sentinel_26379.log目录下查看响应的日志。

    6、spring boot集成redis-sentinel

    来单机的配置注释掉

    #spring.redis.host=127.0.0.1
    # Redis服务器连接端口
    #spring.redis.port=6379
    

    增加高可用配置

    #哨兵监听redis server名称
    spring.redis.sentinel.master=mymaster
    #哨兵的配置列表
    spring.redis.sentinel.nodes=127.0.0.1:26379,127.0.0.1:26380

    代码中就可以在RedisUtils直接用了,如:

    @Autowired
    private RedisTemplate redisTemplate;

    后面在控制器可以直接用RedisUtils定义的方法了

    最后测试一下

    具体RedisUtils代码见下面的地址:https://coding.net/u/evening/p/development-tool-summary/git/blob/master/RedisUtils

    现在就已经部署成功了,我们可以断掉一台redis-sentinel或者redis测试一下,会自动切换的。

    这个过程也遇到了很多坑,总结一下。

    1:全部配置完成后启动项目报:All sentinels down, cannot determine where is mymaster master is running…

    这个可能有两个原因:端口没有开放或者redis-sentinel文件中没有加protected-mode no

    2:集成spring boot后redis存值会多个xacxedx00x05tx00x0c东西。

    这个是因为使用了默认的序列化,我们使用jackson2JsonRedisSerializer就可以了,详见上面连接地址。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • 浅谈Redis在微服务架构中的几种应用场景
    • redis三种高可用方式部署的实现
    • Redis5之后版本的高可用集群搭建的实现
    • 详解三分钟快速搭建分布式高可用的Redis集群
    • Redis为什么快如何实现高可用及持久化
    • Redis服务之高可用组件sentinel详解
    • 解析高可用Redis服务架构分析与搭建方案
    上一篇:Redis Template实现分布式锁的实例代码
    下一篇:Centos7.3安装Redis4.0.6详细图文教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Redis Sentinel实现高可用配置的详细步骤 Redis,Sentinel,实现,高可用,