主从复制

当主服务器宕机时,我们需要手动的将从服务器中选取新的主服务器,这样会会需要人工干预,费时费力,而且不能及时的发现服务器宕机,造成一定时间内服务不可用。这并不是一个推荐的方案,我们更加建议使用哨兵模式替代。

哨兵模式

Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。Sentinel由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。
在这里插入图片描述

配置redis哨兵模式

  1. 配置从服务器(选配),如果主服务器配置了,就需要配置
    # 使得Redis服务器可以跨网络访问
    bind 0.0.0.0
    # 设置密码
    requirepass "123456"
    # 指定主服务器,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
    slaveof 192.168.11.128 6379
    # 主服务器密码,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
    masterauth 123456
    
  2. 配置一个哨兵,配置sentinel.conf,这个配置文件一般都是在安装目录下。
    # 禁止保护模式
    protected-mode no
    # 配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,192.168.11.128代表监控的主服务器,6379代表端口,2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。
    sentinel monitor mymaster 192.168.11.128 6379 2
    # sentinel author-pass定义服务的密码,mymaster是服务名称,123456Redis服务器密码
    # sentinel auth-pass <master-name> <password>
    sentinel auth-pass mymaster 123456
    
  3. 测试哨兵模式
    我现在采用一主二从的模式来测试,先将redis服务器启动,而后在启动哨兵,注意这个顺序。
    redis服务启动命令
    redis-server redis.conf
    
    redis客户端启动命令
    redis-cli -p 6379(端口)
    
    sentinel哨兵启动
    redis-sentinel sentinel.conf
    
    查看sentinel日志,可以看到我们的sentinel已经检测到redis的每一个服务器(6379(master主服务器),6380,6381)。
    在这里插入图片描述
    测试当6379主服务器宕机,哨兵会检测到信号,并从slave服务器重新选举,成为master服务器;就算6379服务器重新上线,也没有重新成为master服务器。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐