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

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
 

http://www.lryc.cn/news/2400875.html

相关文章:

  • Java求职者面试指南:DevOps技术栈深度解析
  • 生产环境中安装和配置 Nginx 以部署 Flask 应用的详细指南
  • Axure高保真LayUI框架 V2.6.8元件库
  • 通讯录实现(Linux+Cpp)
  • K8S主机漏洞扫描时检测到kube-服务目标SSL证书已过期漏洞的一种永久性修复方法
  • 质检 LIMS 系统数据防护指南 三级等保认证与金融级加密方案设计
  • Spring Boot 从Socket 到Netty网络编程(上):SOCKET 基本开发(BIO)与改进(NIO)
  • 79. Word Search
  • 结构性设计模式之Facade(外观)设计模式
  • ICML 2025 Spotlight | 机器人界的「Sora」!让机器人实时进行未来预测和动作执行!
  • CSP严格模式返回不存在的爬虫相关文件
  • https(SSL)证书危机和可行的解决方案
  • C#获取磁盘容量:代码实现与应用场景解析
  • 2359. 找到离给定两个节点最近的节点
  • 前端导入Excel表格
  • AI生态警报:MCP协议风险与应对指南(下)——MCP Host安全
  • 基于VLC的Unity视频播放器(四)
  • pixel刷入Android15 userdebug版本
  • 【Go-补充】ioReader + ioWriter + bufio
  • leetcode 3403. 从盒子中找出字典序最大的字符串 I 中等
  • C# 一个解决方案放一个dll项目,一个dll测试项目 ,调试dll项目的源码
  • 【PmHub面试篇】PmHub 整合 TransmittableThreadLocal(TTL)缓存用户数据面试专题解析
  • unity随机生成未知符号教程
  • 基于RK3576+FPGA+AI工业控制器的工地防护检测装备解决方案
  • 推荐一款PDF压缩的工具
  • 混沌映射(Chaotic Map)
  • MySQL对数据库用户的操作
  • 《PyTorch Hub:解锁深度学习模型的百宝箱》
  • 数据结构 堆与优先级队列
  • Leetcode 3569. Maximize Count of Distinct Primes After Split