单机版Redis宕机导致数据丢失?来试试一主两从三哨兵吧,内附自动化部署脚本

单机版Redis宕机导致数据丢失?来试试一主两从三哨兵吧,内附自动化部署脚本

Posted by LY on May 6, 2020

欢迎大家关注我的以下主页,尤其是今日头条!!!谢谢🙏🙏🙏

csdn:雷园的csdn博客

个人博客:雷园的个人博客

简书:雷园的简书

今日头条:来自底层程序员的仰望

单机版Redis宕机导致数据丢失?来试试一主两从三哨兵吧,内附自动化部署脚本

开头说几句

  1. 近来疫情仍然是不可小觑,所以希望各位小伙伴仍然相应号召,在家办公自我隔离。
  2. 希望各位小伙伴在这样的情况下平平安安,一切都会好起来的。
  3. 今天我们来说一说Redis的其中一种部署方式——哨兵模式。
  4. 下面呢我们会讲解如何手动配置哨兵模式,同样的我会附上自己开发的自动化部署脚本,希望对大家有所裨益。
为什么我们选择Redis的哨兵模式?
  1. 在Redis的部署方式中,我们比较常用的有三种:单机(主从)、集群、哨兵。
  2. 根据场景的不同,我们会选择不同的部署方式,主从哨兵更能保证数据安全不丢失。
  3. 有小伙伴可能会问了,我们直接主从配置就可以了呀,为什么还要费劲加入哨兵节点呢?
  4. Redis 的主从复制模式,一旦主节点出现故障无法提供服务,需要人工介入手工将从节点调整为主节点,同时应用端还需要修改新的主节点地址。
  5. 也就是说,如果不加入哨兵节点,那我们就要充当“哨兵”了,而且还不是很尽职尽责哨兵。
Redis的哨兵节点到底有哪些功能呢?
  1. 定期检测主从数据节点以及其他哨兵节点是否可用。
  2. 将上一步中检测出来的结果通知到应用方,方便应用实现切换。
  3. 主从节点的故障转移,即若主节点不可用,则晋升其一从节点为主节点供应用使用。

正式开始

准备工作
  1. 我们这里以一台系统为Centos 7的云服务器为例,小伙伴们可自行选择。
  2. 下载好redis-5.0.5.tar.gz,大家自行到官方下载安装即可,安装过程我就不做详细的介绍啦。
  3. 因为我们做测试用嘛,就不开那么多服务器来做,我们在一台服务器上多个端口启动redis实例。
Redis各节点简单配置保证可用
  1. 我们规定一下端口:6379(主),6380、6381(从),26379、26380、26381(哨兵)

  2. 根据不同端口我们创建以下目录并复制配置文件:

    $ mkdir -p /etc/redis/{6379,6380,6381,26379,26380,26381}
    # 批量复制redis配置
    $ echo /etc/redis/6* | xargs -n 1 cp -v /redis安装路径/redis.conf
    # 批量复制哨兵配置
    $ echo /etc/redis/26* | xargs -n 1 cp -v /redis安装路径/sentinel.conf
    
  3. 修改主节点配置vim /etc/redis/6379/redis.conf

    # 后台运行
    daemonize yes
    # 运行端口
    port 6379
    # 主节点密码
    masterauth 123456
    # 当前节点密码
    requirepass 123456
    protected-mode yes
    # 绑定IP 0.0.0.0代表所有IP可访问
    bind 0.0.0.0
    
  4. 两个从节点的配置与主节点配置基本相同vim /etc/redis/6380/redis.conf

    daemonize yes
    # 从节点IP
    ## port 6381
    port 6380
    masterauth 123456
    requirepass 123456
    protected-mode yes
    bind 0.0.0.0
    # 属于那个主节点
    slaveof 127.0.0.1 6379
    
  5. 修改哨兵节点配置vim /etc/redis/26379/sentinel.conf

    # 后台运行
    daemonize yes
    # 哨兵节点端口26379、26380、26381
    port 26379
    # 主节点信息
    sentinel monitor mymaster 127.0.0.1 6379 2
    # 主节点密码
    sentinel auth-pass mymaster 123456
    sentinel down-after-milliseconds mymaster 15000
    sentinel parallel-syncs mymaster 1
    sentinel failover-timeout mymaster 80000
    bind 0.0.0.0
    protected-mode yes
    
  6. 接下来就按照:主——从——哨兵启动各节点即可

    $ redis-server /etc/redis/6379/redis.conf
    $ redis-server /etc/redis/6380/redis.conf
    $ redis-server /etc/redis/6381/redis.conf
    $ redis-sentinel /etc/redis/26379/sentinel.conf
    $ redis-sentinel /etc/redis/26380/sentinel.conf
    $ redis-sentinel /etc/redis/26381/sentinel.conf
    
  7. 关于应用方面我们该篇不做详细的介绍,大家如果在应用方面有什么问题都可以问我,我尽我所能帮大家解答。

关于Redis自动化部署脚本

  1. 为了方便我自己的应用,我同时开发了自动化部署Redis的简单脚本。
  2. 在脚本中,我仅支持了Redis的单机部署以及主从哨兵模式。
  3. 为了节省服务器成本,主从哨兵部署方式为每台服务器运行一个redis节点以及一个哨兵节点。
  4. 对于集群方式我这边很少用到,所以没有对集群做支持,后续考虑加入。
  5. 更多信息以及源码需要大家查看更多啦,欢迎大家帮忙点点star🌟🌟🌟🌟。
  6. 以后相关源代码我都会在这里进行发布,欢迎大家多多关注!!!。
简单说一下脚本的应用
  1. 大家拉取代码后进入目录Centos_RedisAutoInstall中,修改配置文件config

    # 本机内网IP
    IP=10.0.4.16
    ## 1:HOST 2:CLUSTER 3:SENTINEL
    ## 2暂不支持
    REDIS_TYPE=1
    REDIS_PORT=6379
    REDIS_SENTINEL_PORT=26379
    # 主节点IP
    REDIS_MASTER=10.0.4.16
    REDIS_PASS=Hanshow123!@#
    
  2. 配置完成后运行同目录中的redis.sh即可进行Redis的自动安装以及配置,对于配置文件大家如果有什么不理解的地方都可以提出来。

最后说几句

  1. 后面我会把自己开发的常用的脚本都分享出来,希望大家可以多多关注star哦。
  2. 同样的如果大家有任何问题,可以随时提出来,我会竭尽全力帮大家解决哦。
  3. 最后依然希望大家相应国家号召进行自我隔离,保障自己的生命安全。
  4. 谢谢大家,下次见。