需求:输出redis cluster 主从的对应关系,如果同一个主从关系的master和slave在同一个node节点上,在输出的对应关系末尾输出提示。

为什么会有这样的需求呢?在重新搭建redis cluster的时候,创建集群期间,发现:

redis-trib.rb create --replicas 1 \
5.5.5.101:29001 5.5.5.102:29002 5.5.5.103:29003 \
5.5.5.102:29001 5.5.5.103:29002 5.5.5.101:29003

 Adding replica 5.5.5.103:29002 to 5.5.5.103:29003 
同一个主从对应关系竟然在同一个节点上了!!!,为了让脚本适应一主多从的关系,这里又在103节点上启动了29005实例并做为29003的slave
 

cluster nodes信息:
8574f133fd52d32c133245274d027fb90893c524 5.5.5.101:@ myself,master -    connected -
a58667c0738ac2692f7733009d9b44fc6c264721 5.5.5.102:@ slave 8574f133fd52d32c133245274d027fb90893c524 connected
86316f44d2b56f7a4fbefd6c5f1594afb928769a 5.5.5.103:@ master - connected -
a5d87acb12011b964334bd2bcacf9eb1924c5428 5.5.5.101:@ slave 98034fcf1d80c7401cafb22775bb70a0c367b91f connected
b065bd036c1606f52a1a7c2a0936c259ee658799 5.5.5.103:@ slave 86316f44d2b56f7a4fbefd6c5f1594afb928769a connected
d6866201dcb87d0383b26de03049cc2be73a0a70 5.5.5.103:@ slave 86316f44d2b56f7a4fbefd6c5f1594afb928769a connected
98034fcf1d80c7401cafb22775bb70a0c367b91f 5.5.5.102:@ master - connected -

脚本:

cmd="redis-cli -c -h $1 -p $2"
master_id=(`$cmd cluster nodes | grep master | awk '{print $1}'`)
master_ip_port=(`$cmd cluster nodes | grep master | awk '$2 ~ /@.*/{gsub("@.*","",$2);print $2}'`) len=${#master_id[@]}
for ((i=;i<=$len-;i++));
do
master_node=$(echo ${master_ip_port[$i]} | awk -F'[:]' '{print $1}')
$cmd cluster slaves ${master_id[$i]} | awk '$2 ~ /@.*/{gsub("@.*","",$2);print $2}' > slave_ip_port
for j in `cat slave_ip_port`
do
slave_node=$(echo $j | awk -F'[:]' '{print $1}')
if [[ "$master_node" == "$slave_node" ]];then
printf "%s%s%s\n" "${master_ip_port[$i]}->" `$cmd cluster slaves ${master_id[$i]} | awk '$2 ~ /@.*/{gsub("@.*","",$2);print $2}' | grep $j` " master和slave在同一个节点上"
else
printf "%s%s\n" "${master_ip_port[$i]}->" `$cmd cluster slaves ${master_id[$i]} | awk '$2 ~ /@.*/{gsub("@.*","",$2);print $2}' | grep $j`
fi
done
done

测试:

[redis@lxd-vm1 ~]$ sh get_master_slave.sh 5.5.5.101
5.5.5.101:->5.5.5.102:
5.5.5.103:->5.5.5.103: master和slave在同一个节点上
5.5.5.103:->5.5.5.103: master和slave在同一个节点上
5.5.5.102:->5.5.5.101:

输出redis cluster 主从的对应关系,如果同一个主从关系的master和slave在同一个node节点上,在输出的对应关系末尾输出提示的更多相关文章

  1. 输出redis cluster集群所有节点指定的参数的配置

    需要:实现类似redis-trib.rb call 命令的功能,输出redis cluster集群所有节点指定的参数的配置 redis-trib.rb的输出 [redis@lxd-vm3 ~]$ re ...

  2. redis cluster 集群畅谈(三) 之 水平扩容、slave自动化迁移

    上一篇http://www.cnblogs.com/qinyujie/p/9029522.html, 主要讲解 实验多master写入.读写分离.实验自动故障切换(高可用性),那么本篇我们就来聊了聊r ...

  3. redis cluster集群动态伸缩--删除主从节点

    目标:从集群中剔除一组主从(5007,5008) 经过上一节增加5007,5008主从服务节点后,目前集群的情况是这样的: b3363a81c3c59d57143cd3323481259c044e66 ...

  4. Redis Cluster 原理相关说明

    背景 之前写的 Redis Cluster部署.管理和测试 和 Redis 5.0 redis-cli --cluster help说明 已经比较详细的介绍了如何安装和维护Cluster.但关于Clu ...

  5. 另外一种获取redis cluster主从关系和slot分布的方法

    条条大路通罗马,通过最近学习redis cluster 观察其输出,发现了另外一种获取master-slave关系的方法. [redis@lxd-vm1 ~]$ cat get_master_slav ...

  6. Redis(十)集群:Redis Cluster

    一.数据分布 1.数据分布理论 2.Redis数据分区 Redis Cluser采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,计算公式:slot=CRC16(key)&16 ...

  7. 全面剖析Redis Cluster原理和应用 (转)

    1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生 ...

  8. 全面剖析Redis Cluster原理和应用

    全面剖析Redis Cluster原理和应用 1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最 ...

  9. Redis-3.2.0集群配置(redis cluster)

    版本:redis-3.0.5 redis-3.2.0  redis-3.2.9  redis-4.0.11 参考:http://redis.io/topics/cluster-tutorial. 目录 ...

随机推荐

  1. python笔记21(面向对象课程三)

    今日内容 嵌套 特殊方法:__init__ type/isinstance/issubclass/super 异常处理 内容回顾 def login(): pass login() class Acc ...

  2. 【译文连载】 理解Istio服务网格(第三章 流控)

    第3章 流控.............................................................................................. ...

  3. sun.misc.Unsafe中一些常用方法记录

    sun.misc.Unsafe中一些常用方法记录 前情摘要 sun公司提供了可以用于直接操作内存的类,这个类就是sun.misc.Unsafe.因为Java本身是不会涉及到直接操作内存的,Java A ...

  4. nginx单个ip访问频率限制

    一.限制所有单个ip的访问频率 1.http中的配置 http { #$limit_conn_zone:限制并发连接数 limit_conn_zone $binary_remote_addr zone ...

  5. Keepalived 介绍 原理

    keepalived是什么: 这里先和前面的LVS 联系一下,我们平时使用一台机器运行 LVS 进行数据的转发,这里会有两个问题1.如果这台LVS 故障了怎么办?整个集群系统都会停止工作2.LVS后端 ...

  6. .NET面试题整理(持续更新)

    1.已知值类型保存在线程栈中,引用类型保存在堆中 struct Point{ public int x,y; } public sealed class program{ public static ...

  7. CoreLocation在iOS8上用法的变化

    1.在使用CoreLocation前需要调用如下函数[iOS8专用]: iOS8对定位进行了一些修改,其中包括定位授权的方法,CLLocationManager增加了下面的两个方法: (1)始终允许访 ...

  8. codewars--js--Large Factorials--阶乘+大数阶乘

    问题描述: In mathematics, the factorial of integer n is written as n!. It is equal to the product of n a ...

  9. 进阶之路 | 奇妙的Drawable之旅

    前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 学习清单: Drawable简介 Drawable分类 自定义Drawable 一.为什么要学习Drawabl ...

  10. python len函数(41)

    在python中除了print函数之外,len函数和type函数应该算是使用最频繁的API了,操作都比较简单. 一.len函数简介 返回对象的长度(项目数)参数可以是序列(例如字符串str.元组tup ...