redis集群管理-5.0.14版本

目录

00.节点启动、关闭、登录、查看集群信息、配置文件参数、动态改参数

01.创建主节点

02.添加删除节点

03.哈希槽重新分配

04.升级Redis集群中的节点

05.手动故障转移

06.迁移到redis集群

07.集群扩容

08.集群缩容

09.节点挂掉处理

10.扩展


00.节点启动、关闭、登录、查看集群信息、配置文件参数、动态改参数

/data/redis/bin/redis-server /data/redis/conf/redis6379.conf
ps aux|grep redis

/data/redis/bin/redis-cli -a ...... -h 127.0.0.1 -p 6379 SHUTDOWN
ps -ef | grep redis-server | grep -v grep | awk '{print $2}' | xargs kill

/data/redis/bin/redis-cli -a ...... -h 127.0.0.1 -p 6379
CLUSTER nodes
CLUSTER INFO
config get maxmemory/maxclients
config SET maxmemory 6G

01.创建主节点

/data/redis/bin/redis-cli -a ...... --cluster create --cluster-replicas 0 192.168.134.143:6379 192.168.134.143:6380 192.168.134.143:6381 

--获取master-id
/data/redis/bin/redis-cli -c -a ...... -h 127.0.0.1 -p 6379 cluster nodes

ip=`ip ad|grep "10.35.2"|awk '{print $2}'|awk -F\/ '{print $1}'`
/data/redis/bin/redis-cli -a ...... --cluster check $ip:6379  --cluster-search-multiple-owners

[root@localhost data]# /data/redis/bin/redis-cli -c -a ...... -h 127.0.0.1 -p 6379 cluster nodes
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 192.168.134.143:6381@16381 master - 0 1658993413889 3 connected 10923-16383
056ca47dc3945072b9fd28b663f1eb8b569e9cc5 192.168.134.143:6380@16380 master - 0 1658993414897 2 connected 5461-10922
12b09b0ccd152d1267bb94a6ad8d268d9e424cec 192.168.134.143:6379@16379 myself,master - 0 1658993413000 1 connected 0-5460

--为主节点添加从节点
/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6382 192.168.134.143:6379 --cluster-slave --cluster-master-id 12b09b0ccd152d1267bb94a6ad8d268d9e424cec

/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6383 192.168.134.143:6379 --cluster-slave --cluster-master-id 056ca47dc3945072b9fd28b663f1eb8b569e9cc5

/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6384 192.168.134.143:6379 --cluster-slave --cluster-master-id 0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a

--登录
/data/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a ......

--测试集群的运行状况:
CLUSTER nodes
CLUSTER INFO

02.添加删除节点

添加192.168.134.143:6385到现有集群,新节点的数据路径下确保没有.conf、.aof、.rdb文件才能重启(严格时要先停掉节点该服务,清空甚至删除相关文件,再启动)

/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6385 192.168.134.143:6379

192.168.134.143:6385 的id
6a8c075d50029d7beb67fc71c44d0eac4aa02440

--删除副本节点
/data/redis/bin/redis-cli -a ...... --cluster del-node 192.168.134.143:6379 6a8c075d50029d7beb67fc71c44d0eac4aa02440

要移除主节点,它必须为空。如果主节点不为空,则需要在之前将数据从主节点重新分配到其他主节点。

03.哈希槽重新分配

/data/redis/bin/redis-cli -a ...... --cluster  reshard  192.168.134.143:6379  --cluster-from   b2e5432b19243972c9eeafd5cca39d5fd8a42200  --cluster-to 6a8c075d50029d7beb67fc71c44d0eac4aa02440  --cluster-slots 2731

04.升级Redis集群中的节点

升级副本节点很容易,因为您只需要停止节点并使用更新版本的Redis重新启动。如果有客户机使用副本节点缩放读取,如果givenone不可用,它们应该能够重新连接到不同的副本。

升级masters有点复杂,建议的步骤是:

使用CLUSTER FAILOVER触发主服务器到其中一个副本的手动故障转移。(参见手动故障转移本文件中的章节。)
等待主机变成副本
最后,像对副本一样升级节点。
如果希望主节点成为刚升级的节点,请触发新的手动故障转移,以便将升级的节点变回主节点。
按照此过程,您应该依次升级一个节点,直到所有节点都升级为止。

05.手动故障转移

该命令必须在要进行故障转移master的任意slave节点上执行,执行后master和slave身份自动互换
cluster failover

[root@localhost data]# /data/redis/bin/redis-cli -h 127.0.0.1 -p 6382 -a ......
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6382> 
127.0.0.1:6382> ping
PONG
127.0.0.1:6382> 
127.0.0.1:6382> CLUSTER nodes
d92be4765051dcabe4d9c9a98af7b3614f2c929a 192.168.134.143:6384@16384 slave 0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 0 1658994296073 3 connected
f8d7ab3de2a8316687d417ae1522077f60ed49de 192.168.134.143:6382@16382 myself,slave 12b09b0ccd152d1267bb94a6ad8d268d9e424cec 0 1658994292000 0 connected
0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 192.168.134.143:6381@16381 master - 0 1658994295000 3 connected 10923-16383
6e1075d9556d62e7d73cdf2139b242472ce4bf81 192.168.134.143:6383@16383 slave 056ca47dc3945072b9fd28b663f1eb8b569e9cc5 0 1658994295000 2 connected
056ca47dc3945072b9fd28b663f1eb8b569e9cc5 192.168.134.143:6380@16380 master - 0 1658994295067 2 connected 5461-10922
12b09b0ccd152d1267bb94a6ad8d268d9e424cec 192.168.134.143:6379@16379 master - 0 1658994295000 1 connected 0-5460
127.0.0.1:6382> 
127.0.0.1:6382> 
127.0.0.1:6382> cluster failover
OK
127.0.0.1:6382> 
127.0.0.1:6382> CLUSTER nodes
d92be4765051dcabe4d9c9a98af7b3614f2c929a 192.168.134.143:6384@16384 slave 0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 0 1658994315000 3 connected
f8d7ab3de2a8316687d417ae1522077f60ed49de 192.168.134.143:6382@16382 myself,master - 0 1658994316000 4 connected 0-5460
0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 192.168.134.143:6381@16381 master - 0 1658994313000 3 connected 10923-16383
6e1075d9556d62e7d73cdf2139b242472ce4bf81 192.168.134.143:6383@16383 slave 056ca47dc3945072b9fd28b663f1eb8b569e9cc5 0 1658994314000 2 connected
056ca47dc3945072b9fd28b663f1eb8b569e9cc5 192.168.134.143:6380@16380 master - 0 1658994316225 2 connected 5461-10922
12b09b0ccd152d1267bb94a6ad8d268d9e424cec 192.168.134.143:6379@16379 slave f8d7ab3de2a8316687d417ae1522077f60ed49de 0 1658994315217 4 connected
127.0.0.1:6382> 

06.迁移到redis集群

可以将数据从外部实例导入到 Redis 集群,即使用redis-cli --cluster import命令

redis-cli --cluster import 10.35.2.68:6379 --cluster-from 10.35.2.87:6379 --cluster-replace --cluster-copy

说明:外部Redis实例(10.35.2.87:6379)导入到集群中的任意一节点,倒入之后,原来集群的key变为空,导入到新集群的key会自动分片到各个mater节点的slot

--cluster-replace 如果集群(10.35.2.68:6379)中存在外部redis实例(10.35.2.87:6379)的key,则会覆盖掉(10.35.2.68:6379)的value

--cluster-copy 默认情况下,import 命令在向集群导入数据的同时,还会删除单机服务器中源数据。如果用户想要保留单机服务器中的数据,那么可以在执行命令的同时给定 –cluster-copy 选项

该命令将正在运行的实例的所有键(从源实例中删除键)移动到指定的预先存在的 Redis 集群。但是请注意,如果您使用 Redis 2.8 实例作为源实例,操作可能会很慢,因为 2.8 没有实现迁移连接缓存,因此您可能希望在执行此类操作之前使用 Redis 3.x 版本重新启动源实例(在进行这个操作之前,将redis的版本升级到Redis 3.x版本)。

07.集群扩容

添加2个节点主6385,从6386

/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6385 192.168.134.143:6379

/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6386 192.168.134.143:6379 --cluster-slave --cluster-master-id 96f15f431b2dff2fde63e94f5b4cabac0aed69ca

分配哈希槽给新主节点

--方法一:按需分配

/data/redis/bin/redis-cli -a ...... --cluster reshard 192.168.134.143:6379

然后根据提示依次填写分配的槽位、新主节点id、槽位来源(all、done)

或者非交互命令:

/data/redis/bin/redis-cli -a ...... --cluster  reshard  192.168.134.143:6379  --cluster-from   b2e5432b19243972c9eeafd5cca39d5fd8a42200  --cluster-to 6a8c075d50029d7beb67fc71c44d0eac4aa02440  --cluster-slots 2731

--方法二

--直接重新分片集群
/data/redis/bin/redis-cli -a ...... --cluster rebalance --cluster-threshold 1 --cluster-use-empty-masters 192.168.134.143:6379

fa14516c9901a8e8d213bfc2c0c80dffc1ecec5b 192.168.134.143:6386@16386 slave 96f15f431b2dff2fde63e94f5b4cabac0aed69ca 0 1658995781000 6 connected
0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 192.168.134.143:6381@16381 master - 0 1658995781000 3 connected 12288-16383
6e1075d9556d62e7d73cdf2139b242472ce4bf81 192.168.134.143:6383@16383 slave 056ca47dc3945072b9fd28b663f1eb8b569e9cc5 0 1658995780000 2 connected
12b09b0ccd152d1267bb94a6ad8d268d9e424cec 192.168.134.143:6379@16379 myself,master - 0 1658995776000 5 connected 1365-5460
f8d7ab3de2a8316687d417ae1522077f60ed49de 192.168.134.143:6382@16382 slave 12b09b0ccd152d1267bb94a6ad8d268d9e424cec 0 1658995780000 5 connected
96f15f431b2dff2fde63e94f5b4cabac0aed69ca 192.168.134.143:6385@16385 master - 0 1658995783154 6 connected 0-1364 5461-6826 10923-12287
d92be4765051dcabe4d9c9a98af7b3614f2c929a 192.168.134.143:6384@16384 slave 0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 0 1658995782149 3 connected
056ca47dc3945072b9fd28b663f1eb8b569e9cc5 192.168.134.143:6380@16380 master - 0 1658995781144 2 connected 6827-10922

08.集群缩容

要求:删除master节点A及此slave节点A1
操作步骤:
1)先删除slave A1节点(此操作理论上,应该删除掉A节点所有的slave节点);参考02中的删除节点

2)将A上的slot重新分片到其他的master节点;可参考03或者07目录下的分配哈希槽

操作完成以后可能会有如下报错,没有关系:

    Node 127.0.0.1:6381 replied with error:

    ERR Please use SETSLOT only with masters.

3)此时查看A节点,A已经变为了接受分片槽节点的master节点

4)删除A节点 ;参考02中的删除节点

09.节点挂掉处理

从节点挂掉:
能重启且数据目录下文件没有丢失就自动加入集群;
若目录下的文件丢失,重启后该节点状态有问题,处理思路:先删除再指定主节点
cluster forget cdc33acca6797723b3fcb3c2386030b0759abe06

/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6386 192.168.134.143:6379 --cluster-slave --cluster-master-id 33efb30b242b28509c0b8f85e791aa6af17d9ef0

主节点挂掉:slave会转为新主
能重启且数据目录下文件没有丢失就自动加入集群;
若目录下的文件丢失,重启后该节点状态有问题,处理思路同上。

若同一主从挂掉:能重启且数据目录下文件没有丢失就自动加入集群;
若目录下的文件丢失,重启后该节点状态有问题,处理思路:
cluster forget feba58aa118956ddebc1dd162276c5e4c0c18d7d
cluster forget cdc33acca6797723b3fcb3c2386030b0759abe06

/data/redis/bin/redis-cli -a ...... --cluster fix 192.168.134.143:6379

/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6385 192.168.134.143:6379

/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6386 192.168.134.143:6379 --cluster-slave --cluster-master-id 96f15f431b2dff2fde63e94f5b4cabac0aed69ca

/data/redis/bin/redis-cli -a ...... --cluster rebalance --cluster-threshold 1 --cluster-use-empty-masters 192.168.134.143:6379

10.扩展

redis-cli --cluster reshard <host>:<port> --cluster-from <node-id> --cluster-to <node-id> --cluster-slots <number of slots> --cluster-yes

--cluster-yes选项指示集群管理器对命令的提示自动回答“是”,允许它以非交互模式运行。请注意,也可以通过设置REDISCLI_CLUSTER_是环境变量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值