zoukankan      html  css  js  c++  java
  • Redis集群--Redis集群之哨兵模式

    echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!!


    搭建Redis集群之前请准备好3台已经安装好Redis的服务器,CentOS7下安装Redis请阅读:https://blog.csdn.net/xlecho/article/details/102975520

    为什么需要Redis集群

    • Redis 本身的 QPS 已经很高了,但是如果在一些并发量非常高的情况下,性能还是会受到影响。这个时候我们希望有更多的 Redis 服务来完成工作。
    • 第二个是出于存储的考虑。因为Redis所有的数据都放在内存中,如果数据量大,很容易受到硬件的限制。升级硬件收效和成本比太低,所以我们需要有一种横向扩展的方法。
    • 第三个是可用性和安全的问题。如果只有一个Redis服务,一旦服务宕机,那么所有的客户端都无法访问,会对业务造成很大的影响。另一个,如果硬件发生故障,而单机的数据无法恢复的话,带来的影响也是灾难性的。可用性、数据安全、性能都可以通过搭建多个 Reids 服务实现。其中有一个是主节点(master),可以有多个从节点(slave)。主从之间通过数据同步,存储完全相同的数据。如果主节点发生故障,则把某个从节点改成主节点,访问新的主节点。

    Redis集群的安装环境准备

    服务器地址 系统 Redis版本
    192.168.222.133 CentOS7 5.0.1
    192.168.222.134 CentOS7 5.0.1
    192.168.222.135 CentOS7 5.0.1

    我们以135作为master,其他两个节点全部作为slave节点

    在slave中的redis.con配置如下代码

    slaveof 192.168.222.135 6379
    # 注意,如果你的节点设置了密码访问,你需要配置下面这个配置
    masterauth master密码
    

    这里没有将slave设置成为‘只读’,如果实际生产环境如果不设置这个集群就会出现重大问题。

    配置完成之后重启Redis

    service redis start
    

    查看主节点的集群状态

    # 启动redis
    redis-server redis.conf
    # 连接redis
    redis-cli -h 192.168.222.135 -p 6379
    # 查看状态
    info replication
    

    配置如果成功我们可以看到如下信息:
    image.png

    退出集群

    退出集群比较简单,可以直接删除掉上面的配置,也可以执行以下命令

     slaveof no one
    

    看到这个信息我们就已经完成了我们的主从配置。但是什么是哨兵模式?哨兵模式是基于我们集群的,我们有了集群之后,我们就要来配置我们的哨兵模式了

    什么是哨兵模式

    哨兵模式英文名Sentinel,它是为了解决Redis集群的高可用应运而生的。Redis集群,一般来说只会有一个master服务,当master挂掉之后,之能手动切换master就会造成一段时间内的服务不可用。sentinel就是专门针对这种情况而产生的一个监听服务。它主要负责监听我们一个组内所有Redis,当我们的master挂掉之后,它就会根据Raft算法进行选举一台新的leader出来,然后将选举出来的leader当成我们的master。

    搭建哨兵模式

    哨兵模式的主要作用就是监控弄Redis集群,所以我们搭建哨兵模式之前要确认我们的Redis集群已经成功搭建了。哨兵模式的搭建其实也相对比较简单,只需要配置主节点监控即可。

    # 找到redis根目录下面的sentinel.conf的配置文件,修改如下配置
    daemonize yes
    port 26379
    protected-mode no
    dir /usr/local/redis/redis-5.0.1/sentinel-tmp
    sentinel monitor mymaster 192.168.222.135 6379 2
    sentinel auth-pass mymaster 48835a9c-7a5a-4ec8-af6a-80af3e87b194
    # 如果哨兵3s内没有收到主节点的心跳,哨兵就认为主节点宕机了,默认是30秒
    sentinel down-after-milliseconds mymaster 3000
    # 如果10秒后,master仍没活过来,则启动failover,默认180s
    sentinel failover-timeout mymaster 10000
    
    • 先启动Redis服务,然后在启动sentinel服务
    # 启动redis服务 
    redis-server redis.conf
    # 启动sentinel
    redis-sentinel sentinel.conf
    

    模拟master宕机,检测sentinel服务是否成功

    模拟之前确保我们的redis、sentinel服务都启动了,登录master,直接在master上面进行shutdown。操作完成之后等待一会,然后使用登录我们的从服务器,连接上从服务的redis之后,我们使用命令info replication 查看当前节点是否成为了master

    • 我这里本来135是master,使用info replication可以看到如下结果

    在这里插入图片描述

    • 135使用shutdown之后,分别查看134/133两台服务器

    注意:采坑

    在这里插入图片描述
    这是由于我们的下面两行配置的位置放反了引起的。正确顺序按照下面的顺序即可

    sentinel monitor mymaster 192.168.222.135 6379 2
    sentinel auth-pass mymaster 48835a9c-7a5a-4ec8-af6a-80af3e87b194
    

    做一个有底线的博客主

  • 相关阅读:
    GIT分支的一些开发心得
    java文件压缩和解压
    java发送邮件
    单例多例
    String,StringBuffer,StringBuilder区别
    GIT文件的三种状态
    javascript 常用技巧
    javascript优化工具 Doloto
    thinkphp 5内置验证规则-基本版
    php+redis配置
  • 原文地址:https://www.cnblogs.com/xlecho/p/11842693.html
Copyright © 2011-2022 走看看