• Redis哨兵高可用架构


    redis在生产环境为了保持高可用,通常有几种方式:主从、哨兵和集群,主从是基础中的基础,哨兵是特殊的redis服务,用来监控redis实例节点。

    在哨兵架构下,客户端第一次访问时通过哨兵找到主节点,后续就会直接访问主节点,当主节点发生变化时,哨兵会第一时间感知到,并且第一时间通知给客户端。

    准备工作:redis版本:5.0.10。启动三个redis实例,6379为master,6380和6381为slave。

    上哨兵配置:

    #复制一份sentinel.conf文件 
    cp sentinel.conf sentinel‐26379.conf 
    # 编辑配置文件
    vi sentinel‐26379.conf 
    # 哨兵端口号
    port 26379
    # 允许后台运行
    daemonize yes
    # 进程文件 
    pidfile "/var/run/redis‐sentinel‐26379.pid" 
    # 日志文件名称
    logfile "26379.log" 
    # 数据文件目录
    dir "/usr/local/redis‐5.0.10/data/26379" 
    # 哨兵监控
    sentinel monitor mymaster 192.168.0.16 6379 2
    # 启动哨兵
    src/redis‐sentinel sentinel‐26379.conf

    在哨兵配置文件中,有一行内容:

    # sentinel monitor <master‐redis‐name> <master‐redis‐ip> <master‐redis‐port> <quorum>
    master‐redis‐name随便取,此处取名为mymaster,quorum表示的是当多少个哨兵认为master失效时,master才算真正的失效。
    再配置两个哨兵,端口使用26380,26381
    查看哨兵信息,可以看到已经识别主从
    src/redis‐cli ‐p 26379
    127.0.0.1:26379>info

    哨兵集群启动完毕之后,哨兵会将集群的元数据追加到配置文件中

    # 表示从节点
    sentinel known‐replica mymaster 192.168.0.16 6380  
    sentinel known‐replica mymaster 192.168.0.16 6381  
    # 其他哨兵节点
    sentinel known‐sentinel mymaster 192.168.0.16 26380 20ec81e05363c04b9a6e9cb0e172e1e8e5ba44b4  
    sentinel known‐sentinel mymaster 192.168.0.16 26381 5779a19510594f650b591be880ec32490375ef90 

    如果主节点挂掉,哨兵会重新选取主节点。查看哨兵配置

    # 表示从节点
    sentinel known‐replica mymaster 192.168.0.16 6379  
    sentinel known‐replica mymaster 192.168.0.16 6381  
    # 其他哨兵节点
    sentinel known‐sentinel mymaster 192.168.0.16 26380 ac78eca353f2b5717a93bfffccddb7fc571f5805  
    sentinel known‐sentinel mymaster 192.168.0.16 26381 5779a19510594f650b591be880ec32490375ef90 

    同时将配置文件中的哨兵监控主节点改掉

    sentinel monitor mymaster 192.168.0.16 6380 2

    主节点启动之后会当做从节点加入哨兵集群中。

    哨兵架构下,master节点异常时会由哨兵选举新的master并做主从切换,切换的这段时间容易出现访问瞬断。且哨兵架构中,只有一个主节点对外提供服务,所以并发量不高,而且单主节点不易将内存设置过大,否则数据太多,持久化文件过大,会影响主从同步和数据恢复的性能。所以哨兵在高性能和高可用的表现其实一般,但满足小公司的一般性需求和体验是可以的。现在更多的选择是redis提供的集群服务,多个主从节点组成的分布式集群架构,可用性和性能更高。

      

  • 相关阅读:
    SSL/TLS
    openssl数字证书常见格式 协议
    Jetty 与 Tomcat 的比较
    Spring Boot 邮件配置
    SSL与TLS的区别以及介绍
    pring Boot 与Spring Cloud版本对应
    iOS initWithFrame、initWithCoder、awakeFromNib的区别解析
    浅析iOS tableview的selectRowAtIndexPath选中无效(默认选中cell无效)
    iOS 多线程NSThread理解与场景示例
    iOS7 UIWebview加载进度条实现
  • 原文地址:https://www.cnblogs.com/dlcode/p/13947662.html
Copyright © 2020-2023  润新知