Redis实战总结-Redis的高可用性

本文深入探讨了Redis的高可用性,包括Redis Sentinel集群和Redis Cluster集群机制。Sentinel提供监控、通知和故障迁移,确保Master-Slave的HA。而Cluster实现Sharding,通过哈希槽分配数据。文中详细介绍了两者配置、启动过程及高可用性测试。
摘要由CSDN通过智能技术生成

在之前的博客《Redis实战总结-配置、持久化、复制》给出了一种Redis主从复制机制,简单地实现了Redis高可用。然后,如果Master服务器宕机,会导致整个Redis瘫痪,这种方式的高可用性较低。正常会采用多台Redis服务器构成一个集群,即使某台,或者某几台Redis宕机,Redis集群仍能正常运行,从而提高其高可用性。

在Redis中,主要存在两种方式实现Redis集群机制:

  • Redis Sentinel集群机制:在Redis2.X版本,往往都是通过这种方式实现Redis的高可用。redis-sentinel是在master-slave机制上加入监控机制哨兵Sentinel实现的。

  • Redis Cluster集群机制:在Redis3.0版本后推出了redis-cluster集群机制。redis-cluster集群中各个节点之间是对等的,即master-master模式。

**注意:**Redis Sentinel集群是解决HA问题的(主从同步),Redis Cluster集群是解决sharding问题的(分区),两种不重复,可以混合使用。

下面详解这两种集群,并给出具体的演示示例。

1. Redis Sentinel集群机制

Redis-Sentinel是在master-slave机制上加入监控机制哨兵Sentinel实现的。Sentinel主要功能就是为Redis Master-Slave集群提供:

  • 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
  • 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
  • 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。

在Sentinel集群中,一个最小的Master-Slave单元包含一个master和一个slave服务器。当master失效后,sentinel自动将slave提升为master,从而可以减少管理员的人工切换slave的操作过程。

1.1 Redis-Sentinel集群架构图

这里写图片描述

1.2 各个机器配置

部署在本地机器上,保证各个端口号不一样,具体配置如下

  • Redis服务器:

    • master:127.0.0.1:6379
    • slave01:127.0.0.1:6389
    • slave02:127.0.0.1:6399
  • Sentinel服务器

    • sentinel01:127.0.0.1:26379
    • sentinel02:127.0.0.1:26389
    • sentinel03:127.0.0.1:26399
1.3 redis.conf和sentinel.conf配置
  • redis.conf

    • master特殊配置如下:
    
    # 后台线程启动
    
    daemonize yes
    
    # 监听端口号
    
    port 6379
    
    # 访问验证密码
    
    requirepass "123456"
    • slave特殊配置如下:
    
    # 后台线程启动
    
    daemonize yes
    
    # 监听端口号,如果为slave02,端口号为6399
    
    port 6389
    
    # 主节点访问密码
    
    masterauth "123456"
    
    # 访问验证密码
    
    requirepass "123456"
    
    # 主节点服务器IP和端口号
    
    slaveof 127.0.0.1 6379
  • sentinel.conf

# 后台线程启动
daemonize yes
# 监听端口号,如果为sentinel02,则端口号为26389,如果为sentinel01,则端口号为26399
port 26379
#1表示在sentinel集群中只要有两个节点检测到redis主节点出故障就进行切换   
sentinel monitor mymaster 127.0.0.1 6379 1
# master节点密码验证
sentinel auth-pass mymaster 123456
#如果3秒内mymaster无响应,则认为mymaster宕机了
sentinel down-after-milliseconds mymaster 3000
# 选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长
sentinel parallel-syncs mymaster 1
#如果10秒后,mysater仍没活过来,则启动failover 
sentinel failover-timeout mymaster 10000
<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值