监控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. ...
随机推荐
- ROC 曲线
Receiver Operating Characteristic (接收机操作特性曲线) 是以虚警率为横轴,以击中率为纵轴,长成如下模样: 所谓击中率(hit)是指将正样本判断为正样本的比例,而虚警 ...
- JSP-导入taglib 出现classNotFound异常
案例 前端登录跳转到指定jsp,报classNoFoundException,原因是页面导入 <%@ taglib uri="http://java.sun.com/jsp/jstl/ ...
- 基于 HTML5 WebGL 的智慧城市(一)
前言 中共中央.国务院在今年12月印发了<长江三角洲区域一体化发展规划纲要>(下文简称<纲要>),并发出通知,要求各地区各部门结合实际认真贯彻落实. <纲要>强调, ...
- Visual Studio 常见问题
VS 2013相关问题 VS 2013 Ultimate Update 5 下载地址: 英文版: vs2013.5_ult_enu.iso SHA-1:918EA4A911858D32C9771480 ...
- 第3章 JDK并发包(二)
3.1.2 重入锁的好搭档:Condition条件 它和wait()和notify()方法的作用是大致相同的.但是wait()和notify()方法是和synchronized关键字合作使用的,而Co ...
- Python常用库 - logging日志库
logging的简单介绍 用作记录日志,默认分为六种日志级别(括号为级别对应的数值) NOTSET(0) DEBUG(10) INFO(20) WARNING(30) ERROR(40) CRITIC ...
- Go语言实现:【剑指offer】二叉树的镜像
该题目来源于牛客网<剑指offer>专题. 操作给定的二叉树,将其变换为源二叉树的镜像. 示例: 输入: 4 / 2 7 / \ / 1 3 6 9 输出: 4 / 7 2 / \ / 9 ...
- rc.local 启动内容不生效
系统版本 CentOS Linux release 7.2.1511 问题 :/etc/rc.local 中的内容 启动机器后不生效 经过检查 /etc/rc.local 是 /etc/rc.d/ ...
- Android Webview H5资源本地化
Android Webview H5资源本地化 一. 创建读取资源项目独立模块 1. 项目依赖的好处 符合模块化的思想,他们相互独立.一个项目持有另一个项目的引用,修改更加方便. (注:compile ...
- sed知识及常用用法梳理
1.sed命令简介及其参数说明 sed流编辑器,擅长对文本进行增删改查,过滤指定的字符串和取指定行,也可以在行中字符串前后插入内容,功能非常强大. 注意:sed默认只支持基本的正则表达式,如果要想支持 ...