当前位置: 首页 > news >正文

Redis-6.2.9 cluster集群部署和扩容缩容

目录

1 操作系统信息和redis软件版本

2 redis集群架构

3 redis软件安装

4 cluster创建

6 Redis集群节点扩容

7 redis集群节点缩容节点


1 操作系统信息和redis软件版本


root@u24-redis-120:~# cat /etc/issue
Ubuntu 24.04.2 LTS \n \l

root@u24-redis-120:~# redis-server --version
Redis server v=6.2.9 sha=00000000:0 malloc=libc bits=64 build=56edd385f7ce4c9b


2 redis集群架构


192.168.254.130 u24-redis-cluster-130  
192.168.254.131 u24-redis-cluster-131
192.168.254.132 u24-redis-cluster-132
192.168.254.133 u24-redis-cluster-133
192.168.254.134 u24-redis-cluster-134
192.168.254.135 u24-redis-cluster-135


3 redis软件安装


cd /usr/local/
rsync -r redis-6.2.9 192.168.254.130:/usr/local/
rsync -r redis-6.2.9 192.168.254.131:/usr/local/
rsync -r redis-6.2.9 192.168.254.132:/usr/local/
rsync -r redis-6.2.9 192.168.254.133:/usr/local/
rsync -r redis-6.2.9 192.168.254.134:/usr/local/
rsync -r redis-6.2.9 192.168.254.135:/usr/local/

rsync -r /redis 192.168.254.130:/
rsync -r /redis 192.168.254.131:/
rsync -r /redis 192.168.254.132:/
rsync -r /redis 192.168.254.133:/
rsync -r /redis 192.168.254.134:/
rsync -r /redis 192.168.254.135:/


#生成配置文件

root@u24-redis-cluster-130:/usr/local/redis-6.2.9/etc# cat redis.conf 
bind 0.0.0.0
daemonize yes
pidfile "/redis/data/redis_6379.pid"
loglevel notice
logfile "/redis/log/redis_6379.log"
databases 16
dir "/redis/data"
slowlog-log-slower-than 10000
slowlog-max-len 128
hz 10
port 6379
maxmemory 1024mb
protected-mode no
requirepass ""
masterauth ""
cluster-enabled yes
cluster-config-file /redis/data/node_6379.conf
cluster-node-timeout 15000
cluster-replica-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage no

#创建数据目录
mkdir /redis/data -p

#启动
/usr/local/redis-6.2.9/bin/redis-server /usr/local/redis-6.2.9/etc/redis.conf 


4 cluster创建


root@u24-redis-cluster-130:~# redis-cli --cluster create 192.168.254.130:6379 192.168.254.131:6379 192.168.254.132:6379 192.168.254.133:6379 192.168.254.134:6379 192.168.254.135:6379 --cluster-replicas 1

>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 2730
Master[1] -> Slots 2731 - 5460
Master[2] -> Slots 5461 - 8191
Master[3] -> Slots 8192 - 10922
Master[4] -> Slots 10923 - 13652
Master[5] -> Slots 13653 - 16383
M: c4d33de02dd695e614c7c80f54bfb44d4bfb240b 192.168.254.130:6379
   slots:[0-2730] (2731 slots) master
M: cfc24e316a6bc23b97a3fd68528d972b43659ed0 192.168.254.131:6379
   slots:[2731-5460] (2730 slots) master
M: 4a6780ce6c32d006d2ee852f21e79675fcd31954 192.168.254.132:6379
   slots:[5461-8191] (2731 slots) master
M: fb65a73fe84f887a90818bcdd77613b348ccd25c 192.168.254.133:6379
   slots:[8192-10922] (2731 slots) master
M: eca9f2ac4b9dcaf5efbbca3309d3b47fbadf3c93 192.168.254.134:6379
   slots:[10923-13652] (2730 slots) master
M: 2014984ad5965d86cde4e05ff31e8328017cfb59 192.168.254.135:6379
   slots:[13653-16383] (2731 slots) master
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
..
>>> Performing Cluster Check (using node 192.168.254.130:6379)
M: c4d33de02dd695e614c7c80f54bfb44d4bfb240b 192.168.254.130:6379
   slots:[0-2730] (2731 slots) master
M: fb65a73fe84f887a90818bcdd77613b348ccd25c 192.168.254.133:6379
   slots:[8192-10922] (2731 slots) master
M: 2014984ad5965d86cde4e05ff31e8328017cfb59 192.168.254.135:6379
   slots:[13653-16383] (2731 slots) master
M: cfc24e316a6bc23b97a3fd68528d972b43659ed0 192.168.254.131:6379
   slots:[2731-5460] (2730 slots) master
M: 4a6780ce6c32d006d2ee852f21e79675fcd31954 192.168.254.132:6379
   slots:[5461-8191] (2731 slots) master
M: eca9f2ac4b9dcaf5efbbca3309d3b47fbadf3c93 192.168.254.134:6379
   slots:[10923-13652] (2730 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

5 集群状态确认
root@u24-redis-cluster-130:~# redis-cli -c -p 6379
127.0.0.1:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:6
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:92
cluster_stats_messages_pong_sent:100
cluster_stats_messages_sent:192
cluster_stats_messages_ping_received:95
cluster_stats_messages_pong_received:92
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:192

#查看集群节点
127.0.0.1:6379> cluster nodes
127.0.0.1:6379> cluster nodes
ecf6cc3169929624950ce63236f5afc1e1c665b5 192.168.254.135:6379@16379 slave d9acf5707b83327823821af32ea2d1a086cba158 0 1748858042000 2 connected
d9acf5707b83327823821af32ea2d1a086cba158 192.168.254.131:6379@16379 master - 0 1748858044000 2 connected 5461-10922
f071e51d0ff633646c06093d35754660cbf84bce 192.168.254.134:6379@16379 slave 3fee102c315725c026bf22a121106afd68ef32e6 0 1748858045990 1 connected
696a28cff730ee330b1ce5beec6838de2c9b0078 192.168.254.133:6379@16379 slave 2384a769403ad53bdf85133d97e26008ffa7482b 0 1748858044000 3 connected
2384a769403ad53bdf85133d97e26008ffa7482b 192.168.254.132:6379@16379 master - 0 1748858044978 3 connected 10923-16383
3fee102c315725c026bf22a121106afd68ef32e6 192.168.254.130:6379@16379 myself,master - 0 1748858043000 1 connected 0-5460


6 Redis集群节点扩容


#新增master节点 92.168.254.136:6379
redis-cli  --cluster add-node 192.168.254.136:6379 192.168.254.130:6379
192.168.254.136:6379 #新增集群主机
192.168.254.130:6379 #集群任意一个节点,用来识别这一个集群

#集群重新分配sharding
root@u24-redis-cluster-130:~# redis-cli --cluster reshard 192.168.254.136:6379
>>> Performing Cluster Check (using node 192.168.254.136:6379)
M: 31a292170ed634451bfc5aca7ce030145e95516e 192.168.254.136:6379
   slots: (0 slots) master
S: 696a28cff730ee330b1ce5beec6838de2c9b0078 192.168.254.133:6379
   slots: (0 slots) slave
   replicates 2384a769403ad53bdf85133d97e26008ffa7482b
M: 2384a769403ad53bdf85133d97e26008ffa7482b 192.168.254.132:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: 3fee102c315725c026bf22a121106afd68ef32e6 192.168.254.130:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: d9acf5707b83327823821af32ea2d1a086cba158 192.168.254.131:6379
   slots: (0 slots) slave
   replicates ecf6cc3169929624950ce63236f5afc1e1c665b5
M: ecf6cc3169929624950ce63236f5afc1e1c665b5 192.168.254.135:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: f071e51d0ff633646c06093d35754660cbf84bce 192.168.254.134:6379
   slots: (0 slots) slave
   replicates 3fee102c315725c026bf22a121106afd68ef32e6
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 4095   #一般16384/mster节点数
What is the receiving node ID? 
What is the receiving node ID? 31a292170ed634451bfc5aca7ce030145e95516e
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1: all  #输入all

#验证信息
127.0.0.1:6379> cluster nodes
31a292170ed634451bfc5aca7ce030145e95516e 192.168.254.136:6379@16379 master - 0 1748860504914 8 connected 0-1363 5461-6826 10923-12286

#新增slave节点(192.168.254.137:6379)
 redis-cli --cluster add-node 192.168.254.137:6379 192.168.254.130:6379 --cluster-slave --cluster-master-id 3fee102c315725c026bf22a121106afd68ef32e6


 127.0.0.1:6379> cluster nodes
ef408d07caf5e200a011df0db0ed2148a5835d9c 192.168.254.137:6379@16379 slave 31a292170ed634451bfc5aca7ce030145e95516e 0 1748860823000 8 connected


7 redis集群节点缩容节点


#获取node节点slot 数量方法
root@u24-redis-cluster-130:~# vi slots.sh 
#!/bin/bash

# 连接到集群获取节点信息
cluster_info=$(redis-cli -c -h 192.168.254.136 -p 6379 CLUSTER NODES)

# 解析并统计槽分布
echo "$cluster_info" | awk '
BEGIN { print "节点ID\t\tIP:端口\t\t角色\t槽数量" }
/myself|master/ && /connected/ {
    slot_count = 0
    # 提取槽范围信息
    for(i=9; i<=NF; i++) {
        if($i ~ /^[0-9]+-[0-9]+$/) {
            split($i, range, "-")
            slot_count += range[2] - range[1] + 1
        }
        else if($i ~ /^[0-9]+$/) {
            slot_count += 1
        }
    }
    printf "%.8s\t%s\t%s\t%d\n", $1, $2, $3, slot_count+1
}'

root@u24-redis-cluster-130:~# ./slots.sh 
节点ID          IP:端口         角色    槽数量
2384a769        192.168.254.132:6379@16379      master  4098
3fee102c        192.168.254.130:6379@16379      master  4098
ecf6cc31        192.168.254.135:6379@16379      master  4097
31a29217        192.168.254.136:6379@16379      myself,master   4095 


#清空master的slot
root@u24-redis-cluster-130:~# redis-cli -c -p 6379 
127.0.0.1:6379> cluster nodes
ecf6cc3169929624950ce63236f5afc1e1c665b5 192.168.254.135:6379@16379 master - 0 1748866864000 7 connected 6827-10922
d9acf5707b83327823821af32ea2d1a086cba158 192.168.254.131:6379@16379 slave ecf6cc3169929624950ce63236f5afc1e1c665b5 0 1748866864978 7 connected
f071e51d0ff633646c06093d35754660cbf84bce 192.168.254.134:6379@16379 slave 3fee102c315725c026bf22a121106afd68ef32e6 0 1748866864000 9 connected
696a28cff730ee330b1ce5beec6838de2c9b0078 192.168.254.133:6379@16379 slave 2384a769403ad53bdf85133d97e26008ffa7482b 0 1748866864000 3 connected
2384a769403ad53bdf85133d97e26008ffa7482b 192.168.254.132:6379@16379 master - 0 1748866862912 3 connected 12287-16383
31a292170ed634451bfc5aca7ce030145e95516e 192.168.254.136:6379@16379 master 3fee102c315725c026bf22a121106afd68ef32e6 0 1748866866004 9 connected
ef408d07caf5e200a011df0db0ed2148a5835d9c 192.168.254.137:6379@16379 slave 3fee102c315725c026bf22a121106afd68ef32e6 0 1748866859857 9 connected
3fee102c315725c026bf22a121106afd68ef32e6 192.168.254.130:6379@16379 myself,master - 0 1748866861000 9 connected 0-6826 10923-12286


root@u24-redis-cluster-130:~# redis-cli --cluster reshard 192.168.254.130:6379 --cluster-from 31a292170ed634451bfc5aca7ce030145e95516e --cluster-to ecf6cc3169929624950ce63236f5afc1e1c665b5 2384a769403ad53bdf85133d97e26008ffa7482b 3fee102c315725c026bf22a121106afd68ef32e6    --cluster-slots 4095 --cluster-yes

#删除从节点(192.168.254.137:6379)
redis-cli --cluster del-node 192.168.254.136:6379 ef408d07caf5e200a011df0db0ed2148a5835d9c

#删除主节点(192.168.254.136:6379)
redis-cli --cluster del-node 192.168.254.136:6379 31a292170ed634451bfc5aca7ce030145e95516e

#平衡节点
redis-cli --cluster rebalance 192.168.254.130:6379


#缩容验证信息
127.0.0.1:6379> cluster nodes
ecf6cc3169929624950ce63236f5afc1e1c665b5 192.168.254.135:6379@16379 master - 0 1748867517494 10 connected 0-1365 6827-10922
d9acf5707b83327823821af32ea2d1a086cba158 192.168.254.131:6379@16379 slave ecf6cc3169929624950ce63236f5afc1e1c665b5 0 1748867517000 10 connected
f071e51d0ff633646c06093d35754660cbf84bce 192.168.254.134:6379@16379 slave 3fee102c315725c026bf22a121106afd68ef32e6 0 1748867519516 9 connected
696a28cff730ee330b1ce5beec6838de2c9b0078 192.168.254.133:6379@16379 slave 2384a769403ad53bdf85133d97e26008ffa7482b 0 1748867517000 11 connected
2384a769403ad53bdf85133d97e26008ffa7482b 192.168.254.132:6379@16379 master - 0 1748867518503 11 connected 1366-2729 12287-16383
3fee102c315725c026bf22a121106afd68ef32e6 192.168.254.130:6379@16379 myself,master - 0 1748867515000 9 connected 2730-6826 10923-12286

已经删除192.168.254.136:6379和192.168.254.137:6379
 

相关文章:

  • DeepSeek模型性能优化:从推理加速到资源调度的全栈实践
  • 【笔记】部署 AgenticSeek 项目问题:端口 8000 被占用
  • 结构型设计模式之桥接模式
  • 【设计模式-3.6】结构型——桥接模式
  • 【Qt开发】对话框
  • 3516cv610在sample_aiisp上多创一路编码流,方法
  • 设计模式——中介者设计模式(行为型)
  • Git GitHub Gitee
  • github 2FA双重认证丢失解决
  • SQL Transactions(事务)、隔离机制
  • 【C语言预处理详解(下)】--#和##运算符,命名约定,命令行定义 ,#undef,条件编译,头文件的包含,嵌套文件包含,其他预处理指令
  • PyTorch——卷积操作(2)
  • TomatoSCI数据分析实战:探索社交媒体成瘾
  • Hadoop 大数据启蒙:深入解析分布式基石 HDFS
  • JSP、HTML和Tomcat
  • Vue-5-基于JavaScript和plotly.js绘制数据分析类图表
  • pytorch基本运算-范数
  • TS 星际通信指南:从 TCP 到 UDP 的宇宙漫游
  • 初识CSS3
  • Pytorch知识点2
  • 佛山做推广网站的/2020国内搜索引擎排行榜
  • 高端网站建设服务/查网站权重
  • 网站建设全流程/315影视行业
  • 新区网站建设/seo专员是干什么的
  • 西安哪家公司做网站/网站域名查询
  • 兴宁网站建设设计/最新推广方法