监控redis cluster 主从实例是否切换,切换前后对应关系
需求:编写脚本实现对redis cluster 主从是否发生主从切换进行监控,若发生切换,输出切换前后主从对应关系。
初始化对比文件,仅执行一次,后续不需要在执行,除非该文件不存在。
cmd="redis-cli -c -h $1 -p $2"
$cmd cluster nodes > cluster_nodes.txt
cat cluster_nodes.txt | awk -F[\ \@] '/master/{print $1,$2}' | sort -nk2 -t ':' > master.txt
cat cluster_nodes.txt | awk -F[\ \@] '/slave/{print $2,$5}' | sort -nk1 -t ':' > slave.txt
cat master.txt | while read m
do
master_ip_port=`echo $m | awk '{print $2}'`
master_tag=`echo $m | awk '{print $1}'`
cat slave.txt | while read s
do
slave_ip_port=`echo $s | awk '{print $1}'`
slave_tag=`echo $s | awk '{print $2}'`
if [[ ${master_tag} == ${slave_tag} ]];then
echo "${master_ip_port}->${slave_ip_port}" >> master_slave_map_old
fi
done
done
判断是否发生切换,如果发生,输出切换前后的对应关系
cmd="redis-cli -c -h $1 -p $2"
$cmd cluster nodes > cluster_nodes.txt
cat cluster_nodes.txt | awk -F[\ \@] '/master/{print $1,$2}' | sort -nk2 -t ':' > master.txt
cat cluster_nodes.txt | awk -F[\ \@] '/slave/{print $2,$5}' | sort -nk1 -t ':' > slave.txt
cat master.txt | while read m
do
master_ip_port=`echo $m | awk '{print $2}'`
master_tag=`echo $m | awk '{print $1}'`
cat slave.txt | while read s
do
slave_ip_port=`echo $s | awk '{print $1}'`
slave_tag=`echo $s | awk '{print $2}'`
if [[ ${master_tag} == ${slave_tag} ]];then
echo "${master_ip_port}->${slave_ip_port}" >> master_slave_map_new
fi
done
done ports=($($cmd cluster nodes | awk -F[\ \:\@] '{print $3}' | sort |uniq))
len=${#ports[@]} for ((i=;i<=$len-;i++))
do
old=$(grep ${ports[i]} master_slave_map_old | md5sum | awk '{print $1}')
new=$(grep ${ports[i]} master_slave_map_new | md5sum | awk '{print $1}')
if [[ "${old}" != "${new}" ]];then
echo -n "${ports[i]}主从实例切换前:"
grep ${ports[i]} master_slave_map_old
echo -n "${ports[i]}主从实例切换后:"
grep ${ports[i]} master_slave_map_new
fi
done cat master_slave_map_new > master_slave_map_old
rm -rf master_slave_map_new
测试过程:
5.5.5.101:> info replication
# Replication
role:slave
master_host:5.5.5.102
master_port:
master_link_status:up
master_last_io_seconds_ago:
master_sync_in_progress:
slave_repl_offset:
slave_priority:
slave_read_only:
connected_slaves:
master_replid:3c06fcc274b6fac6fe1d954f8b63687619e65cf5
master_replid2:
master_repl_offset:
second_repl_offset:-
repl_backlog_active:
repl_backlog_size:
repl_backlog_first_byte_offset:
repl_backlog_histlen:
lxd-vm1:> CLUSTER FAILOVER
OK
5.5.5.101:> info replication
# Replication
role:master
connected_slaves:
slave0:ip=5.5.5.102,port=,state=online,offset=,lag=
master_replid:a35374725759383211f8f76d6b9376d181beda17
master_replid2:3c06fcc274b6fac6fe1d954f8b63687619e65cf5
master_repl_offset:
second_repl_offset:
repl_backlog_active:
repl_backlog_size:
repl_backlog_first_byte_offset:
repl_backlog_histlen:
lxd-vm1:>
测试结果
[redis@lxd-vm3 ~]$ sh a2.sh 5.5.5.101
29001主从实例切换前:5.5.5.102:->5.5.5.101:
29001主从实例切换后:5.5.5.101:->5.5.5.102:
[redis@lxd-vm3 ~]$
监控redis cluster 主从实例是否切换,切换前后对应关系的更多相关文章
- 输出redis cluster 主从的对应关系,如果同一个主从关系的master和slave在同一个node节点上,在输出的对应关系末尾输出提示
需求:输出redis cluster 主从的对应关系,如果同一个主从关系的master和slave在同一个node节点上,在输出的对应关系末尾输出提示. 为什么会有这样的需求呢?在重新搭建redis ...
- 第3种方法获取redis cluster主从关系
需求:使用cluster slots命令,获取redis cluster 主从对应关系. 说明:cluster slots命令对应的字段说明:http://redis.cn/commands/clus ...
- 另外一种获取redis cluster主从关系和slot分布的方法
条条大路通罗马,通过最近学习redis cluster 观察其输出,发现了另外一种获取master-slave关系的方法. [redis@lxd-vm1 ~]$ cat get_master_slav ...
- 直观获取redis cluster 主从关系
需求:还是redis-trib.rb脚本获取的信息不足或者太繁杂,这里给出更加直观的一种方法, 说明:已在4.x版本测试通过,3.x不可用. 原生的输出 (1adfa7f3...) keys slot ...
- centos6下redis cluster集群部署过程
一般来说,redis主从和mysql主从目的差不多,但redis主从配置很简单,主要在从节点配置文件指定主节点ip和端口,比如:slaveof 192.168.10.10 6379,然后启动主从,主从 ...
- redis cluster 集群畅谈(一)
redis单机在大数据量情况的会出现瓶颈问题,通过redis 主从架构和 哨兵集群结合可以实现99.99% 高可用 .水平扩容支持更高QPS的解决方案. 在大数据量面前,主从架构结合哨兵集群的解决方案 ...
- [转]Redis cluster failover
今天测试了redis cluster failover 功能,在切换过程中很快,但在failover时有force 与takeover 之分 [RHZYTEST_10:REDIS:6237:M ~] ...
- Redis Cluster 集群三主三从高可用环境搭建
前言 Redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用. Window环境下载地址:https://github.com/tporadowski/redis ...
- Redis Cluster 介绍与使用
Redis Cluster 功能特性 Redis 集群是分布式的redis 实现,具有以下特性: 1. 高可用性与可线性扩张到1000个节点 2. 数据自动路由到多个节点 3. 节点间数据共享 4. ...
随机推荐
- springmvc html与jsp解析器
1. 配置多个视图解析器 InternalResourceViewResolver内置了jsp解析器,用于解析jsp页面 此处我们使用了InternalResourceViewResolver,其有一 ...
- 理解和运用Java中的Lambda
前提 回想一下,JDK8是2014年发布正式版的,到现在为(2020-02-08)止已经过去了5年多.JDK8引入的两个比较强大的新特性是Lambda表达式(下文的Lambda特指JDK提供的Lamb ...
- 安卓开发实战-记账本APP(五)
今天将昨天剩余的bug修复,并且完成图标的美化,设置长按删除,模仿支付宝实现金额的动态增加. ①将昨天的布局进行了修改:之前是fragment,改成FrameLayout布局,不再设置name,进而在 ...
- 自学Java第二章——《Java的基础语法》
2.1 标识符 简单的说,凡是程序员自己命名的部分都可以称为标识符. 即给类.变量.方法.包等命名的字符序列,称为标识符. 1.标识符的命名规则 (1)Java的标识符只能使用26个英文字母大小写,0 ...
- MySQL初次安装配置及修改密码
安装前的准备工作: 下载完后,我们将 zip 包解压到相应的目录,这里我将解压后的文件夹放在 C:\mysql-8.0.11 下. 接下来我们需要配置下 MySQL 的配置文件 打开刚刚解压的文件夹 ...
- LaTeX技巧472:定义一个LaTeX参考文献不带编号且有缩进的方法
LaTeX_Fun的博客 LaTeX技巧381:参考文献项第二行缩进如何定义? \makeatletter\renewenvironment{thebibliography}[1]{\section* ...
- SpringBoot之ApplicationRunner接口和@Order注解
我们在开发中可能会有这样的情景.需要在容器启动的时候执行一些内容.比如读取配置文件,数据库连接之类的.SpringBoot给我们提供了ApplicationRunner接口来帮助我们实现这种需求.该接 ...
- SpringBoot学习笔记 文件访问映射
通过SpringBoot可以把磁盘内所有的文件都访问到 有一张图片存放在 E://images/acti/123.jpg import org.springframework.context.anno ...
- Spring ——Spring IoC容器详解(图示)
1.1 Spring IoC容器 从昨天的例子当中我们已经知道spring IoC容器的作用,它可以容纳我们所开发的各种Bean.并且我们可以从中获取各种发布在Spring IoC容器里的Bean,并 ...
- ## springboot 下策略模式的简单使用
1.灵魂三问 接手前人(已跑路)项目快乐否? 前人项目不写注释懵逼否? 一个方法中一堆if/else,且业务判断条件用简单数字(或英文字母),不带注释,想打人否? 所以,对于上述三个问题,我写 ...