Redis集群中删除/修改节点(master、slave)(实验)

删除一个slave节点:

# redis-trib.rb del-node 192.168.2.202:6380 e4dc23dc67418bf66c6c63655110612cb9516aff

// del-node  host:port  node-id

>>> Removing node e4dc23dc67418bf66c6c63655110612cb9516aff from cluster 192.168.2.202:6380

>>> Sending CLUSTER FORGET messages to the cluster...

>>> SHUTDOWN the node.

查看集群节点信息:

# redis-trib.rb check 192.168.2.100:6379 (确认slave节点已经删除)

>>> Performing Cluster Check (using node 192.168.2.100:6379)

M: 098e7eb756b6047fde988ab3c0b7189e1724ecf5 192.168.2.100:6379

slots:333-5460 (5128 slots) master

1 additional replica(s)

S: 7119dec91b086ca8fe69f7878fa42b1accd75f0f 192.168.2.100:6380

slots: (0 slots) slave

replicates 5844b4272c39456b0fdf73e384ff8c479547de47

删除一个master节点

先移除master身上的hash slot,再删除master。

目前不能直接删除slot,要把删除的master的slot迁移到其他master节点上。

# redis-trib.rb reshard 192.168.2.100:6379       //slot迁移到2.100上

How many slots do you want to move (from 1 to 16384)? 1000

//迁移多少个slot?(要删除的master节点上有多少个slot)

What is the receiving node ID? 098e7eb756b6047fde988ab3c0b7189e1724ecf5

//迁移到那个节点上,ID是多少?(slot迁移给谁,写谁的ID)

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:8326ff0be199fa0d4db74f0ebcc58f27e65991b4

//被删除的master的ID

Source node #2:done                      //表示结束

... ...

Do you want to proceed with the proposed reshard plan (yes/no)? yes

//是否满意hash slot移动计划?

把要删除的master移除集群:

# redis-trib.rb del-node 192.168.2.100:6379 8326ff0be199fa0d4db74f0ebcc58f27e65991b4

//集群中任意节点的IP:端口、要删除的master的ID

更改slave节点隶属的master:

当前配置中,192.168.2.100:6380隶属于192.168.2.200:6379

将192.168.2.100:6380的隶属更改为192.168.2.100:6379

        1、登录方式指定要更改隶属关系的IP、端口

        2、更改隶属关系时,直接指定新的master节点的ID

# redis-cli -c -h 192.168.2.100 -p 6380

> cluster nodes

5844b4272c39456b0fdf73e384ff8c479547de47 192.168.2.200:6379 master - 0 1527165062499 3  connected 5795-10922

2faf68564a70372cfc06c1afff197019cc6a39f3 192.168.2.201:6380 slave       3ff3a74f9dc41f8bc635ab845ad76bf77ffb0f69 0 1527165063511 6 connected

098e7eb756b6047fde988ab3c0b7189e1724ecf5 192.168.2.100:6379 master - 0 1527165060482 10 connected 0-5794 10923-11255

227f51028bbe827f27b4e40ed7a08fcc7d8df969 192.168.2.200:6380 slave   098e7eb756b6047fde988ab3c0b7189e1724ecf5 0 1527165059474 10 connected

7119dec91b086ca8fe69f7878fa42b1accd75f0f 192.168.2.100:6380 myself,slave    5844b4272c39456b0fdf73e384ff8c479547de47 0 0 2 connected

3ff3a74f9dc41f8bc635ab845ad76bf77ffb0f69 192.168.2.201:6379 master - 0 1527165058465 5     connected 11256-16383

192.168.2.100:6380>

192.168.2.100:6380> cluster replicate 098e7eb756b6047fde988ab3c0b7189e1724ecf5

OK

原文地址:http://blog.51cto.com/13690439/2120025

时间: 2024-11-09 03:56:28

Redis集群中删除/修改节点(master、slave)(实验)的相关文章

运维之我的docker-swarm集群中删除节点和服务

删除swam节点 如果有的确实想要从swarm集群中删除,你应该先把这个节点容器排空,然后再把节点从集群中去掉. 排空节点(其实就是把这个节点上的容器先从其它节点启动,再停掉排空节点上的容器,保证你定义服务的预先状态不受影响) docker node update --availability drain g36lvv23ypjd8v7ovlst2n3yt 删除指定节点 docker node rm  node9 docker node rm --force node9 删除服务 删除服务以后容

redis集群批量删除指定的key

1.说明 redis集群上有时候会需要删除多个key,就必须需要登录到每个节点上,而且有可能这个key不在这个节点,这样删除起来就比较麻烦,下面提供一种便捷方式可以实现 2.查看redis集群中的master节点 首先你要确认有哪几台master节点,可以用下面命令查看: #./redis-cli  cluster nodes | grep master PS:在这里我有3台master主节点,端口都是6379 3.编写redis_del.sh脚本 #!/bin/bash redis_comm=

从ceph集群中删除MDS server

如果你不需要cephfs,MDS就成了多余的.为了提高性能,可以把MDS卸载掉. 首先停止所有的MDS daemon: $ sudo service ceph stop mds === mds.0 === Stopping Ceph mds.0 on server-3...kill 1190...done 然后在ceph.conf中删掉MDS相关的内容: [mds] keyring = /etc/ceph/keyring.$name [mds.0] host = server-3 然后进行删除:

Redis集群中,是选择奇数节点还是偶数节点?(理论)

我们来通过一组组示例进行分析: 3节点环境:1个master.2个slave 存储空间:最大等于1个节点的容量.(如果是2个master的话,那么数据会丢失一部分) 冗余性:允许1个节点故障. 4节点环境:2个master.2个slave 存储空间:2个节点的容量. 冗余性:允许1个节点故障.(集群中,半数以上节点认为故障,才会选举.) 5节点环境:2个master.3个slave 存储空间:2个节点的容量. 冗余性:允许2个节点故障. 6节点环境:3个master.3个slave 存储空间:3

在Redis集群中使用pipeline批量插入

由于项目中需要使用批量插入功能, 所以在网上查找到了Redis 批量插入可以使用pipeline来高效的插入, 示例代码如下: String key = "key"; Jedis jedis = new Jedis("xx.xx.xx.xx"); Pipeline p = jedis.pipelined(); List<String> myData = .... //要插入的数据列表 for(String data: myData){ p.hset(ke

使用 kubectl drain 从集群中移除节点

对节点执行维护操作之前(例如:内核升级,硬件维护等),您可以使用 kubectl drain 安全驱逐节点上面所有的 pod.安全驱逐的方式将会允许 pod 里面的容器遵循指定的 PodDisruptionBudgets 执行优雅的中止. 注: 默认情况下,kubectl drain 会忽略那些不能杀死的系统类型的 pod,如果您想了解更多详细的内容,请参考kubectl drain kubectl drain 返回成功表明所有的 pod (除了前面排除的那些)已经被安全驱逐(遵循期望优雅的中止

如何确定Redis集群中各个节点的主从关系

1.首先通过命令(以192.168.203.141为例,-c代表集群的意思) ./redis-cli -h 192.168.203.141 -p 8001 -c 2.然后在输入  cluster nodes 命令,然后就会显示出各个节点的主从信息了 原文地址:https://www.cnblogs.com/fengzifengfeng/p/10421431.html

Redis集群节点主从关系调整

一.概述 Redis集群创建后,可能会出现互为主从关系的节点从属于同一台服务器的情况.在此种情况下,若 服务器故障宕机或需要停机维护,互为主从关系的节点同时停止运行,导致redis集群暂时失去一部 分slot插槽.此时,redis集群为fail状态,对其进行的数据读写操作均无法正常进行.为避免此种情 况的发生,应对redis集群节点的主从关系进行调整,使互为主从关系的节点分属于不同的服务器. 二.调整方法描述 1.使用redis-trib.rb脚本将待调整的从节点从redis集群中删除.(执行此

redis集群搭建及注意事项

上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出了6台机器了,然后在以这6个实例组建redis集群就可以了. 前提:redis已经安装,目录为/usr/local/redis-4.0.1 redis集群是用的ruby脚本,所以要想执行该脚本,需要ruby环境..对应redis的源码src目录下的redis-trib.rb,redis-trib.r