美文网首页
Redis集群部署

Redis集群部署

作者: 突击手平头哥 | 来源:发表于2021-04-28 23:36 被阅读0次

    Redis集群部署

    Redis集群有多种部署模式,包括主从模式、哨兵模式、集群模式


    主从模式

      主从模式可以是一主一从或者一主多从,主从模式并不是分布式分片存储,而是每一台设备都拥有全部的数据;
      实际的运行中都是直接连接到主机上工作,备机通常只是做个数据备份而已。

    主从模式配置

    主机

    masterauth pass
    

      主机只需要设置一个密码,从机需要此密码用来连接主机

    从机

    # 主节点的地址
    slaveof 127.0.0.1 6379
    # 主节点的密码
    masterauth master-password
    # 设置从机仅可读
    slave-read-only yes
    

    主从模式的特点

    • 主从模式下主机可读可写,从机只可读;即使设置从机允许可写,从机的数据在主从同步也会后被覆盖
    • 主从模式下在启动时从机是全量同步,此后仅是增量同步
    • 主机应当要做持久化备份,因为如果主机挂掉后没有持久化数据,在主从同步后从机的数据也会消失
    • 当主机挂掉后备机并不会自动升级为主机,也就是说主机挂掉了多机就挂掉了

    哨兵模式

      哨兵模式下的Redis节点部署实际上和主从模式一致,只是多了哨兵节点,哨兵节点也可以看作是某种意义上的Redis节点;
      哨兵节点的作用就是监控主节点的健康,哨兵模式和主从模式唯一的区别就是:主节点挂掉后会自动将从机升级为主机工作

    哨兵模式配置

    哨兵模式下主从节点的配置、部署不变,配置上只是要加上哨兵节点的配置而已

    配置

    #配置端口
    port 6379
    #以守护进程模式启动
    daemonize yes
    #pid的存放文件
    pidfile /var/run/sentinel.pid
    #日志文件名
    logfile "sentinel.log"
    #存放备份文件以及日志等文件的目录
    dir "/opt/sentinel/data"
    
    # 监听主节点,mymaster是主节点的名字(自己取的),哨兵是可以监听多个主节点的
    # 2表示至少需要两个或两个以上的哨兵认为主机挂掉后才是挂掉
    sentinel monitor mymaster 192.168.11.128 6379 2
    # Redis服务器的密码
    sentinel auth-pass mymaster 123456
    
    #30秒ping不通主节点的信息,主观认为master宕机
    sentinel down-after-milliseconds mymaster 30000
    #故障转移后重新主从复制,1表示串行,>1并行
    sentinel parallel-syncs mymaster 1
    #故障转移开始,三分钟内没有完成,则认为转移失败
    sentinel failover-timeout mymaster 180000
    
    

    启动哨兵

    redis-sentinel sentinel.conf
    
    • 哨兵节点是独立于Redis节点的进程,可以部署在任意机器上,只要网络可通即可
    • 哨兵与哨兵之间通过Redis的订阅、推送机制来通信,哨兵的配置文件中并不需要关注其他哨兵
    • 哨兵每秒会通过PING命令来判断节点的存活,在主节点挂掉后哨兵会进行投票,票数大于sentinel monitor的配置机进行切换
    • 哨兵个数应该尽可能为奇数个,票数配置为(n/2+1)
    • 哨兵模式下主、从节点的配置文件会被自动更改

    哨兵模式的工作

      哨兵模式下的主从节点的工作状态并没有改变,只是主从可能会自动切换;所以应该正常工作流程应该是先连接到哨兵节点查询主从节点地址,再直接连到节点上开始执行命令。

      哨兵节点实际上就是Redis的一个服务器实例,使用redis-cli直连就可以

    SENTINEL masters
    # 查询所有监控的主节点
    SENTINEL slaves mymaster
    # 查询mymaster这个主节点的从机
    SENTINEL get-master-addr-by-name mymaster
    # 查询mymaster的地址
    

      在查询到地址之后的处理就和Redis主从模式完全一致

    集群模式

    集群模式是真正的分布式部署,Redis采用一致性HASH将数据分片存储到各个Redis节点中;

    哨兵模式的特点

    • 哨兵模式是真正的分布式部署,能够利用多机的内存、性能
    • Redis的集群部署必须要3个主节点、3个从节点;3个主节点是集群部署的要求,每个节点必须要有从节点是因为每个节点存储一部分数据,如果一个挂掉了那个整个集群的数据就不全
    • 工作时连接到任意一个节点即可进行读取写入

    哨兵模式的配置

    集群配置

    #配置端口
    port 6379
    #以守护进程模式启动
    daemonize yes
    #pid的存放文件
    pidfile /var/run/redis.pid
    #日志文件名
    logfile "redis.log"
    #存放备份文件以及日志等文件的目录
    dir "/opt/redis/data"
    
    cluster-enabled yes                     #开启集群
    cluster-config-file nodes-6379.conf     #集群配置信息文件,由Redis自行更新,不用手动配置。
    cluster-node-timeout 15000              #节点互连超时时间,毫秒为单位
    
    
    cluster-slave-validity-factor 10        #在进行故障转移的时候全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了导致数据过于陈旧,不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长。判断方法是:比较slave断开连接的时间和(node-timeout * slave-validity-factor)+ repl-ping-slave-period如果节点超时时间为三十秒, 并且slave-validity-factor为10,假设默认的repl-ping-slave-period是10秒,即如果超过310秒slave将不会尝试进行故障转移
    
    cluster-migration-barrier 1             #master的slave数量大于该值,slave才能迁移到其他孤立master上,如这个参数被设为2,那么只有当一个主节点拥有2个可工作的从节点时,它的一个从节点才会尝试迁移。
    
    cluster-require-full-coverage yes       #集群所有节点状态为ok才提供服务。建议设置为no,可以在slot没有全部分配的时提供服务
    

      所有的节点全部按此配置即可

    启动服务

    redis-server redis.conf
    

      启动Redis节点,主备的关系由集群控制,这里只需要启动节点即可

    redis-cli -a 123456 --cluster create 127.0.0.1:7001 ... 127.0.0.1:7006 --cluster-replicas 1
    # -a 指定密码
    # create 后指定6个节点的地址
    # --cluster-replicas 指定主节点要有几个从节点
    

      创建一个6个节点的集群,每个主节点都要有一个从节点

    redis-cli -c -h 127.0.0.1 -p 7001 -a 123456                  # -c,使用集群方式登录
    

      连接到集群当中去

    CLUSTER NODES                   # 查看节点信息
    CLUSTER MEET 127.0.0.1 7007     # 动态添加节点
    
    CLUSTER FORGET 1a1c7f02fce87530bd5abdfc98df1cffce4f1767
    # 从集群中删除节点,FORGET后带的ID可以从CLUSTER NODES的结果中看到
    



    \color{red}{2021年4月28日23点28分,这里只做了简单的说明,后续补充一些图片和说明,有时间再分析一下实现机制}

    相关文章

      网友评论

          本文标题:Redis集群部署

          本文链接:https://www.haomeiwen.com/subject/brfirltx.html