Redis集群之实战篇基础操作

部署:

https://blog.csdn.net/qq_42815754/article/details/82912130

操作命令:

启动redis服务

在redis-cluster路径下创建一个start.sh的文件写入如下命令并且执行:
cd redis01
sudo ./redis-server redis.conf  &
cd ..
cd redis02
sudo ./redis-server redis.conf &
cd ..
cd redis03
sudo ./redis-server redis.conf &
cd ..
cd redis04
sudo ./redis-server redis.conf &
cd ..
cd redis05
sudo ./redis-server redis.conf &
cd ..
cd redis06
sudo ./redis-server redis.conf &
cd ..

创建集群服务:

./redis01/redis-cli --cluster create --cluster-replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004
 127.0.0.1:7005 127.0.0.1:7006

查询集群服务:

zhen@zhen-H110SD3-C:/usr/local/redis-cluster/redis08$ sudo ./redis-cli -p 7001
127.0.0.1:7001> cluster nodes  

新增master节点(新建redis07,redis08文件步骤和上面一样并且启动服务): 

./redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001

新增slave节点:

登录到从节点的redis-cli,使用replicate为该节点指定主节点

192.168.0.2:7006> cluster replicate 01c944eb66564d41e355388dc468ee79e71fe789   # master节点序列号

 

删除节点:

sudo ./redis-cli --cluster del-node 127.0.0.1:7008 ea617bc761b5b533edbda3faafa90f50c352ad31    # 节点序列号

 

操作问题:

1 设置值:

设置值的时候按照CRC16算法随机分配到各个槽,然后看6147对应哪个集群的节点这个值就存在这个节点中.

>>> import crc16
>>> res=(crc16.crc16xmodem(b'200'))
>>> res%16384
>>> 6147

2 kill  master/slave 情况

 1)如果slave连接master,如果把master kill 掉slave就变成了master,重启master就变成slave

 2)master/slave 都kill 掉,写入数据失败.

3 执行迁移slot命令

如果有一个或多个master或者slave的进程被kill掉的时候,无法执行迁移命令,但是加入的节点不是slave关联的master或者master没有关联slot则可以迁移,不管它的状态与否正常.

 

BUG解决:

1 问题一,一直提示Waiting for the cluster to join...

最近在进行redis集群的时候遇到一个问题
一直提示Waiting for the cluster to join....
这里直接ctrl+c了
解决方案:
1:打开所有节点的redis.conf  配置bind属性 值是服务器的外网IP
如:bind 192.168.46.133
2:使用redis desktop Manager连接所有节点 调出命令窗口输入一下 命令
flushall
cluster reset
3:进入各个节点的redis的rdb文件保存位置
     删除rdb持久化文件和nodes.conf文件
4:关闭所有redis示例
5:启动redis
6:用redis-trib.rb创建集群查看是否成功
前提:各节点保证可以正常通信 端口放通,云服务器记得在云计算厂商的防火墙上放通端口

 

2 问题二 ,[ERR] Node 172.18.40.32:7008 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0
解决: 

进入对应的数据库执行,cluster reset
zhen:$ ./redis-cli -h 172.18.40.32 -p 7008
172.18.40.32:7008> cluster reset
OK

 

3 问题三,(error) ERR To set a master the node must be empty and without assigned slots.

解决:

新增Slave节点与新增Master的前三步骤相同,这里不再介绍,不同的是需要登录到从节点的redis-cli,使用replicate为该节点指定主节点,具体如下:
方式一:

// 登录到从节点的redis-cli,使用replicate为该节点指定主节点

192.168.0.2:7006> cluster replicate 01c944eb66564d41e355388dc468ee79e71fe789

方式二:

#./redis-trib.rb add-node --slave --master-id '01c944eb66564d41e355388dc468ee79e71fe789' 192.168.0.2:7006 192.168.0.2:7001

注释:

--slave,表示添加的是从节点

--master-id 01c944eb66564d41e355388dc468ee79e71fe789 ,主节点的node id,在这里是前面新添加的7006的node id

192.168.0.2:7006,新节点

192.168.0.2:7001,集群任一个旧节点

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值