zoukankan      html  css  js  c++  java
  • Redis Sentinel主从复制高可用

    官网:http://redisdoc.com

    一、Sentinel介绍

    当用redis作master-slave的高可用时,如果master宕机,redis本身或者客户端都没有实现主从切换的功能,而redis-sentinel是一个独立运行的进程,用于监控多个master-slave集群,它的作用:当master服务器不能正常工作时, Sentinel会开始一次自动故障迁移操作, 它会将失效master服务器的其中一个slave服务器升级为新的master服务器, 并让失效master服务器的其他从服务器改为复制新的master服务器; 当客户端试图连接失效的master服务器时, 集群也会向客户端返回新master服务器的地址, 使得集群可以使用新master服务器代替失效服务器。

    二、配置测试

    相关查看命令:

    # 查看redis数据库所有信息
    redis-cli info
    # 查看redis的复制授权信息
    redis-cli info replication 
    # 查看redis的哨兵信息
    redis-cli info sentinel 

    这里仅用一台服务器来示例。

    约定:

    • master为redis-6380.conf,slave分别为redis-6381.conf和redis-6382.conf
    • 所有redis配置放在/etc/redis目录下
    bind 127.0.0.1
    port 6380
    daemonize yes
    pidfile /var/redis/redis-6380.pid
    logfile /var/redis/redis-6380.log
    dbfilename dump-6380.rdb
    dir /var/redis/data
    redis-6380.conf
    bind 127.0.0.1
    port 6381
    daemonize yes
    pidfile /var/redis/redis-6381.pid
    logfile /var/redis/redis-6381.log
    dbfilename dump-6381.rdb
    dir /var/redis/data
    slaveof 127.0.0.1 6380
    redis-6381.conf
    bind 127.0.0.1
    port 6382
    daemonize yes
    pidfile /var/redis/redis-6382.pid
    logfile /var/redis/redis-6382.log
    dbfilename dump-6382.rdb
    dir /var/redis/data
    slaveof 127.0.0.1 6380
    redis-6382.conf

    可以看到redis主从复制已配置好,接下来就是基于主从赋复制的redis-sentinel配置。

    运行一个 Sentinel 所需的最少配置如下所示:

    # 当前Sentinel节点监控 127.0.0.1:6380 这个主节点
    # 将这个主服务器判断为失效至少需要2个Sentinel同意(只要同意Sentinel的数量不达标,自动故障迁移就不会执行)
    # mymaster是主节点的别名
    sentinel monitor mymaster 127.0.0.1 6380 2
    # 每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒30s且没有回复,则被Sentinel标记为主观下线
    sentinel down-after-milliseconds mymaster 30000
    # 故障转移超时时间为180000毫秒
    sentinel failover-timeout mymaster 180000
    # 在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步,这个数字越小,完成故障转移所需的时间就越长
    sentinel parallel-syncs mymaster 1

    配置sentinel.conf,如下仅仅是sentinel运行的端口不同而已:

    port 26380
    daemonize yes
    pidfile /var/redis/sentinel-26380.pid
    logfile /var/redis/sentinel-26380.log
    dir /var/redis/data
    
    sentinel monitor mymaster 127.0.0.1 6380 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel failover-timeout mymaster 1800
    sentinel-26380.conf
    port 26381
    daemonize yes
    pidfile /var/redis/sentinel-26381.pid
    logfile /var/redis/sentinel-26381.log
    dir /var/redis/data
    
    sentinel monitor mymaster 127.0.0.1 6380 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel failover-timeout mymaster 180000
    sentinel parallel-syncs mymaster 1
    sentinel-26381.conf
    port 26382
    daemonize yes
    pidfile /var/redis/sentinel-26382.pid
    logfile /var/redis/sentinel-26382.log
    dir /var/redis/data
    
    sentinel monitor mymaster 127.0.0.1 6380 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel failover-timeout mymaster 180000
    sentinel parallel-syncs mymaster 1
    sentinel-26382.conf

    启动sentinel并查看信息:

    redis-sentinel sentinel-26380.conf

    现在杀死master(即运行在6380端口的redis-server):

    查看6381或6382节点的身份:

    可以看到原本的slave2节点变成了master。

  • 相关阅读:
    android studio debug
    SharePoint 2013 单一页面赋设计权限
    sed实现文件自我复制
    iOS第三方支付集成
    移动端报表JS开发演示样例
    马化腾内部分享:产品经理的必修课
    实战c++中的string系列--string与char*、const char *的转换(data() or c_str())
    【React全家桶入门之十】登录与身份认证
    猜拳游戏案例
    Java JDBC利用反射技术将查询结果封装为对象
  • 原文地址:https://www.cnblogs.com/believepd/p/10614063.html
Copyright © 2011-2022 走看看