6.redis-集群

文章介绍了如何通过Redis集群来应对超过10万/秒的操作率(OPS)。集群能分散服务器访问和存储压力,提供负载均衡和可扩展性。详细步骤包括配置主从结构、启动服务、启用集群,并展示了添加、删除节点以及分槽的操作。还提到了集群内置的哨兵模式和注意事项,如只能删除无数据的节点。
摘要由CSDN通过智能技术生成

01-集群cluster

  • 存在的问题

    • redis提供的服务OPS(operation per second)可以达到10万/秒,当前业务OPS如果超过10万/秒,怎么办?
  • redis集群

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gITgqXr9-1681709270830)(null)]

    • 使用网络将若干redis主从机器机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果

  • 好处

    • 分散单台服务器的访问压力,实现负载均衡
    • 分散单台服务器的存储压力,实现可扩展性
    • 降低单台服务器宕机带来的业务灾难

02-cluster集群搭建

  • 需求

    • 搭建三个 1主1从 结构,并启动cluster集群
  • 配置说明

    # 是否启用cluster,加入cluster节点
    cluster-enabled yes|no
    
    # cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容
    cluster-config-file filename
    
    # 节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
    cluster-node-timeout milliseconds
    
  • 语法

    #主机ip1:主机port1
    #从机ip1:从机port1
    #n: 1台主机对应n台从机
    
    redis-cli --cluster create 主机ip1:主机port1 [主机ip2:主机port2 ...] 从机ip1:从机port1 [从机ip2:从机port2 ...] --cluster-replicas n
    
  • 开发步骤

    • ①配置主从结构
    • ②启动主从服务
    • ③启用集群服务
    • ④查看集群信息
  • ①配置主从结构

    #主机配置
    port 6379
    daemonize no
    # logfile "log-6379.log"
    maxclients 100000
    timeout 0
    loglevel debug
    
    # RDB设置
    # 1.设置rdb文件名
    dbfilename "dump-6379.rdb"
    
    # 2.设置rdb文件存储路径
    dir "/usr/local/redis-6379/data"
    
    # 3.设置存储rdb时是否压缩数据
    rdbcompression no
    
    # 4.设置读写文件过程是否进行RDB格式校验
    rdbchecksum no
    
    # 5.后台存储过程中如果出现错误现象,是否停止保存操作
    stop-writes-on-bgsave-error yes
    
    # 6.每隔10秒检测一次,有2个数据变化就执行bgsave指令
    save 10 2
    
    # AOF设置
    # 1.开启aof持久化功能
    appendonly yes
    # 2.设置aof文件名
    appendfilename "appendonly-6379.aof"
    # 4.设置aof策略
    appendfsync everysec
    
    # 5.当前aof文件大小达到64mb,自动触发AOF重写
    auto-aof-rewrite-min-size 64mb
    # 5.当前aof文件大小比之前aof文件大小增加了100%,自动触发AOF重写
    auto-aof-rewrite-percentage 100
    
    protected-mode no
    
    # 是否启用cluster,加入cluster节点
    cluster-enabled yes
    
    # cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容
    cluster-config-file "cluster-6379.conf"
    
    # 节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
    cluster-node-timeout 5000
    
    #从机配置
    # slave-26379
    
    port 26379
    daemonize no
    dir "/usr/local/redis-26379/data"
    
    # 设置RDB文件
    dbfilename "dump-26379.rdb"
    
    # 开启aof
    appendonly yes
    appendfilename "appendonly-26379.aof"
    appendfsync everysec
    
    # 设置无密码访问
    protected-mode no
    
    # 开启集群
    cluster-enabled yes
    # cluster配置文件名
    cluster-config-file "cluster-26379.conf"
    # 节点服务响应超时时间为5秒
    cluster-node-timeout 5000
    
  • ②启动主从服务

    # 集群至少3个主节点,至少6个节点
    
    redis-server /usr/local/redis-6379/redis-6379.conf
    redis-server /usr/local/redis-6380/redis-6380.conf
    redis-server /usr/local/redis-6381/redis-6381.conf
    
    redis-server /usr/local/redis-26379/redis-26379.conf
    redis-server /usr/local/redis-26380/redis-26380.conf
    redis-server /usr/local/redis-26381/redis-26381.conf
    
  • ③启用集群服务

    redis-cli --cluster create 192.168.199.110:6379 192.168.199.110:6380 192.168.199.110:6381 192.168.199.110:26379 192.168.199.110:26380  192.168.199.110:26381 --cluster-replicas 1
    
    • ga3vqwetg3qw4a5rfvwq
  • ④查看集群信息

    cluster nodes
    
    • 3tgy4q2r5w627y35q6
  • 注意事项

    • 在cluster集群中, 确认主从关系不需要配置slaveof ip port
    • redis集群有16384个槽, 默认是等分.

03-cluster集群演示

  • 需求

    • ①使用集群模式操作redis

      redis-cli -c -p 端口
      
    • ②关闭redis-6379, 查看主从切换情况

  • ①使用集群操作redis

    • tgy3qayw5g34aghqa
  • ②关闭redis-6379, 查看主从切换情况

    • 注意: cluster集群内置哨兵模式.

04-cluster集群节点操作之添加master

  • 语法

    #new-master-host:new-master-port: 新主机的ip和port
    #cluster-host:cluster-port: 已经在集群中的设备的ip和port
    redis-cli --cluster add-node new-master-host:new-master-port cluster-host:cluster-port
    
  • 需求

    • 新建6382的节点, 并将其添加到redis集群中
  • 开发步骤

    • ①新建6382节点并启动
    • ②将其添加到redis集群中
  • ①新建6382节点并启动

    • tg3qwayg7w4352ay52gwq37
  • ②将其添加到redis集群中

    redis-cli --cluster add-node 192.168.199.110:6382 192.168.199.110:6379
    
    • tgw3q4yg435wg5w24372yq

05-cluster集群节点操作之添加slave

  • 语法

    #new-slave-host:new-slave-port: 新从机的ip和port
    #master-host:master-port: 主机的ip和port
    #masterid: 主机的id
    
    redis-cli --cluster add-node new-slave-host:new-slave-port master-host:master-port --cluster-slave --cluster master-id masterid
    
  • 需求

    • cluster集群添加slave-26382
  • 开发步骤

    • ①新建26382节点并启动
    • ②将其添加到redis集群中
  • ①新建26382节点并启动

    • t3qgawfyg3w45q2ar
  • ②将其添加到redis集群中

    redis-cli --cluster add-node 192.168.199.110:26382 192.168.199.110:6382 --cluster-slave --cluster-master-id 7815c2d8a6255391d3d38a7cdfd689ec5f7ad927
    
  • 5r215tqeh5u7hbe

  • tg3qawygh2w435

06-cluster集群节点操作之移除节点

  • 语法

    #del-node del-cluster-host:del-cluster-port: 需要删除的节点的ip和port
    #del-cluster-id: 需要删除的节点的id
    redis-cli --cluster del-node del-cluster-host:del-cluster-port del-cluster-id
    
  • 需求

    • cluster集群移除master-6382、slave-26382
  • 代码实现

    redis-cli --cluster del-node 192.168.216.110:6382 c876a9869fdcb8a91decb109d73cf56df6277369
    
    redis-cli --cluster del-node 192.168.216.110:26382 0a84ac5ddb836fe56444f9a85726314d435d226a
    
  • 注意事项

    • 只能删除空节点(①没有slots, ②没有从机)

07-cluster集群分槽

  • 概述

    • redis集群中有16384个槽, 用于存储数据.
  • 语法

    #--cluster reshard target-master-host:target-master-port: 目标主机的ip和port
    #--cluster-from src-master-id1 ... src-master-idn: 源头主机的id
    #--cluster-to target-master-id: 目标主机的id
    #--cluster-slots slots: 槽的数量
    redis-cli 
    --cluster reshard target-master-host:target-master-port 
    --cluster-from src-master-id1 ... src-master-idn 
    --cluster-to target-master-id 
    --cluster-slots slots
    
  • 需求

    • 6379, 6380,6381, 6382四个主机均分16384个slots, 每一个主机分得4096
  • 代码实现

    redis-cli --cluster reshard 192.168.199.110:6382 --cluster-from 4cdc5c3348744f68887c4e12e62965727b9ae373 b4cfa66305c8e8edce500425b667873344aa89a8 b3ca1b27d891d42bf7abda2e66a5f2f441a2f444 --cluster-to 7815c2d8a6255391d3d38a7cdfd689ec5f7ad927 --cluster-slots 4096
    
  • 补充

    • 如果要删除主机, 需要先将槽分配给其他主机, 再删除对应的从机.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小钱要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值