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

需求:输出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:29001@39001 myself,master - 0 1547460560000 1 connected 0-5460
a58667c0738ac2692f7733009d9b44fc6c264721 5.5.5.102:29001@39001 slave 8574f133fd52d32c133245274d027fb90893c524 0 1547460562000 4 connected
86316f44d2b56f7a4fbefd6c5f1594afb928769a 5.5.5.103:29003@39003 master - 0 1547460561000 3 connected 10923-16383
a5d87acb12011b964334bd2bcacf9eb1924c5428 5.5.5.101:29003@39003 slave 98034fcf1d80c7401cafb22775bb70a0c367b91f 0 1547460562768 6 connected
b065bd036c1606f52a1a7c2a0936c259ee658799 5.5.5.103:29005@39005 slave 86316f44d2b56f7a4fbefd6c5f1594afb928769a 0 1547460561000 3 connected
d6866201dcb87d0383b26de03049cc2be73a0a70 5.5.5.103:29002@39002 slave 86316f44d2b56f7a4fbefd6c5f1594afb928769a 0 1547460561766 5 connected
98034fcf1d80c7401cafb22775bb70a0c367b91f 5.5.5.102:29002@39002 master - 0 1547460563776 2 connected 5461-10922

脚本:

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=0;i<=$len-1;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

测试:

[[email protected] ~]$ sh get_master_slave.sh 5.5.5.101 29001
5.5.5.101:29001->5.5.5.102:29001
5.5.5.103:29003->5.5.5.103:29005  master和slave在同一个节点上
5.5.5.103:29003->5.5.5.103:29002  master和slave在同一个节点上
5.5.5.102:29002->5.5.5.101:29003

原文地址:https://www.cnblogs.com/imdba/p/10268284.html

时间: 2024-10-16 12:49:56

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

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

需要:实现类似redis-trib.rb call 命令的功能,输出redis cluster集群所有节点指定的参数的配置 redis-trib.rb的输出 [[email protected] ~]$ redis-trib.rb call 5.5.5.101:29001 config get *timeout* /usr/local/ruby2.5.1/lib/ruby/gems/2.5.0/gems/redis-3.3.0/lib/redis/client.rb:459: warning:

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

上一篇http://www.cnblogs.com/qinyujie/p/9029522.html, 主要讲解 实验多master写入.读写分离.实验自动故障切换(高可用性),那么本篇我们就来聊了聊redis cluster 水平扩容以及自动化 slave 迁移. redis repliction 主从架构,一主多从更多的是为了提高 读QPS .而 redis cluster 集群中不建议或者没有说做物理的读写分离了,redis cluster 集群更强调的是通过master的水平扩容,来横向扩

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

目标:从集群中剔除一组主从(5007,5008) 经过上一节增加5007,5008主从服务节点后,目前集群的情况是这样的: b3363a81c3c59d57143cd3323481259c044e66d2 192.168.8.196:[email protected] slave 1b7aa419065c5477c0def9d5e25106963fbdda76 0 1573003356000 3 connected 1b7aa419065c5477c0def9d5e25106963fbdda76

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

1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生存的看家本领,增加集群功能后当然不能对性能产生太大影响,所以Redis采取了P2P而非Proxy方式.异步复制.客户端重定向等设计,而牺牲了部分的一致性.使用性. 水平扩展:集群的最重要能力当然是扩展,文档中称可以线性扩展到1000结点. 可用性:在Cluster推出之前,可用性要靠Sentinel

全面剖析Redis Cluster原理和应用

全面剖析Redis Cluster原理和应用 1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生存的看家本领,增加集群功能后当然不能对性能产生太大影响,所以Redis采取了P2P而非Proxy方式.异步复制.客户端重定向等设计,而牺牲了部分的一致性.使用性. 水平扩展:集群的最重要能力当然是扩展,文档中称可以线性扩展到1000结点. 可用性:在Cl

Redis Cluster 原理详解,应付面试官就看这一篇!

Redis 缓存作为使用最多的缓存工具被各大厂商争相使用.通常我们会使用单体的 Redis 应用作为缓存服务,为了保证其高可用还会使用主从模式(Master-Slave),又或者是读写分离的设计.但是当缓存数据量增加以后,无法用单体服务器承载缓存服务时,就需要对缓存服务进行扩展.将需要缓存的数据切分成不同的分区,将数据分区放到不同的服务器中,用分布式的缓存来承载高并发的缓存访问.恰好 Redis Cluster 方案刚好支持这部分功能. 今天就来一起看看 Redis Cluster 的核心原理和

Redis Cluster集群部署搭建

在Oracle的路上走了许多年,换换感觉,尝试一下新的知识,也是一个不错的感觉.Redis,一个超轻量化的内存数据库,只做一小块数据库功能实现,却非常优秀的一个产品.今天,就分享一下安装Redis集群的过程. 搭建redis集群,建议至少需要准备3台服务器,共搭建6个节点,3个master,3个slave,并且要求3个master节点不能全部跑到同一台服务器上,保证节点安全,3台服务器的配置相同,使用redistest账号搭建,对应的端口是7000/7001/7002端口 我的集群分配如下,每个

redis cluster 实践总结

最近项目接触到了redis cluster,现在趁着使用做一下总结,记录一下遇到过的问题,简单的概述一下常用到的命令和功能. 本篇文章主要是以运维的角度去讲述如何去更好的规划redis cluster和跳坑. redis cluster 官方文档: https://redis.io/topics/cluster-tutorial 一.redis cluster 是什么 redis cluster是官方redis 3.0版本之后推出的集群方案,之前类似的方案还有豌豆荚的codis集群方案.twem

Ubuntu 15.10 下Scala 操作Redis Cluster

1 前言 Redis Standalone,Redis Cluster的安装在前面介绍过,地址:http://www.cnblogs.com/liuchangchun/p/5063477.html,这里不做介绍. 2 Redis的使用 针对各种编程语言,差不多都有Redis的驱动程序.针对Scala程序,在github上面有几个可用驱动: scala-redis:https://github.com/liuchchc/scala-redis rediscala:https://github.co