• redis单机、主从、哨兵、集群部署


    本文重点讲述如何升级redis架构的部署,采用云服务器进行模拟,使用redis源码包进行安装,redis4.0

    单机

    修改redis.conf文件
    bind 0.0.0.0 #设置任意ip访问
    requirepass pwd #设置密码
    daemonize yes #后台启动
    
    • 1
    • 2
    • 3
    • 4

    注意开放安全组规则端口即可

    主从复制

    主从复制架构仅仅用来进行数据的冗余备份,从节点仅仅用来同步数据。

    缺点:无法进行故障的自动转移,当master节点宕机后,salve节点无法提供服务

    image-20220704220433913

    搭建主从架构

    主机节点同单击部署无需修改

    修改从节点

    slaveof <master ip> <master port>
    bind 0.0.0.0
    requirepass pwd
    masterauth master_pwd
    port 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    通过在从节点修改数据验证部署成功

    image-20220704220433913

    哨兵架构

    单机和主从架构的redis只要服务主机宕机就无法继续提供服务,而采用哨兵机制的redis架构具有高可用的特性。哨兵机制通过一个或多个sentinel实例组成sentinel系统可以监视任意多个主服务器,以及这些主服务器所属下的所有服务器,如果被监视的master被哨兵服务认为下线,将从该master下的salve中选举出新的master。即使下线的master重新上线,也只能作为新master的从节点。

    缺陷:仍然是一个节点提供服务,单节点并发压力大,内存和磁盘较大限制。

    image-20220704232916399

    搭建哨兵架构,一主二从三哨兵

    在主从架构的基础上,启动哨兵服务,需要redis-sentinel服务

    cp /root/reids-4.0.10/src/redis-sentinel /usr/redis/bin/
    mkdir /root/sentinel
    vim /root/sentinel/sentinel.conf
    sentinel monitor master_name master_ip master_port sentinel_conut
    sentinel auth-pass master_name pwd
    bind 0.0.0.0
    port 
    `哨兵选举,至少半数哨兵以上认为master节点下线才认为该服务器下线,sentinel_count为半数`
    
    cp /root/sentinel/sentinel.conf /root/sentinel/sentinel1.conf
    cp /root/sentinel/sentinel.conf /root/sentinel/sentinel2.conf
    修改端口即可
    /usr/redis/bin/redis-sentinel /root/sentinel/sentinel.conf
    /usr/redis/bin/redis-sentinel /root/sentinel/sentinel1.conf
    /usr/redis/bin/redis-sentinel /root/sentinel/sentinel2.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    成功启动:

    image-20220704232916399

    通过kill master 节点,我们发现哨兵进行重新选举了master节点。原有的master节点成为新master节点的从节点。

    image-20220704230002643

    从springboot连接哨兵架构的redis与原来的单机和主从不同,连接的是redis的哨兵服务

    image-20220704233130112

    参考博客:https://blog.csdn.net/qq_34125349/article/details/89175908

    集群部署

    集群内置16383个哈希槽(slot),进行集群分布时将哈希槽均分在主节点上。当请求传递过来时,将key值通过crc16算法取得的结果取模16383得到值,通过这个值命中的到对应的主节点。如此各个主节点都分担了一部分请求,缓解单个节点的负载和磁盘压力。

    集群同样采用投票机制进行选取,投票的单位为主节点,因此基础配置为3主3从。

    image-20220704235455008

    集群的启动需要安装ruby环境。

    yum install -y ruby rubygems
    gem install redis-xxx.gem
    
    #将ruby工具从源码目录中复制到bin中
    cp /root/redis-4.10.0/src/redis-trib.b /usr/redis/bin/
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建多个redis.conf启动六个节点,修改源码中的redis.conf文件,需要注意的是此方法创建不能预设密码

    bind 0.0.0.0
    daemonize yes
    cluster-enabled yes
    appendonly yes
    cluster-node-timeout 150000
    
    • 1
    • 2
    • 3
    • 4
    • 5

    将文件复制六个,进行定制化配置即可,本文是复制到root目录的六个文件夹,7010…

    cluster-config-file 文件名不同
    appendonlyfilename 文件名不同
    port 不同
    
    • 1
    • 2
    • 3

    启动六个配置,查看得到

    /usr/redis/bin/redis-server /root/7010/redis.conf
    ....
    /usr/redis/bin/redis-server /root/7015/redis.conf
    
    • 1
    • 2
    • 3

    image-20220705095012804

    创建集群,端口需要额外开放相应主机端口号加10000的端口

    /usr/redis/bin/redis-trib.rb create --replicas 1 47.101.33.159:7010 47.101.33.159:7011 47.101.33.159:7012 47.101.33.159:7013 47.101.33.159:7014 47.101.33.159:7015
    
    • 1

    image-20220705101137686

    输入接受即可

    image-20220705101204368

    此时即部署成功。在springboot连接image-20220705102153637

    启动测试,观察日志得

    image-20220705102338846

    大概找了几个小时,只找到一种有效方法,修改对应的cluster-config-file文件,如果在redis配置的dir值为./,那么配置文件就在redis-server的同级目录中,查看对应文件,修改内网ip为公网ip,重启redis即可。

    image-20220705111747448

    集群成功后即可设置密码,可直接修改redis.conf文件进行修改,需要重启。连接对应客户端

    config set masterauth pwd
    config setrequirepass pwd
    config rewrite
    #对应redis.conf文件末尾即添加密码
    
    • 1
    • 2
    • 3
    • 4

    image-20220705113335134

    application.yml添加password项填写密码即可连接成功。

  • 相关阅读:
    函数式接口
    嵌入式系统在物联网中的应用和发展
    2023华为杯研究生数学建模E题思路代码分析
    云服务器的先驱,亚马逊云科技海外云服务器领军者
    运用领域模型——DDD
    懒人系列--文件上传之OSS使用案例
    借助PLC-Recorder,汇川中型PLC(AM、AC系列,CODESYS平台)2ms高速采集的方法
    Java命令行形式将程序打包成jar包
    【无标题】
    网络安全笔记 -- 逻辑越权(找回机制、验证码、Token)
  • 原文地址:https://blog.csdn.net/weixin_51454454/article/details/125616522