linux脚本vrrp_script,keepalived 的 vrrp_script
[root@centos01 keepalived]# cat check_httpd.sh 脚本需要有执行权限 通常情况下,利用keepalived做热备,其中一台设置为master,一台设置为backup。当master出现异常后,backup自动切换为master。当backup成为master后,master恢复正常后会再次抢占成为master,导致不必要的主备切换。因此可以将两台keepalived初始状态均配置为backup,设置不同的优先级,优先级高的设置nopreempt解决异常恢复后再次抢占的问题。
keepalived只能做到对网络故障和keepalived本身的监控,即当出现网络故障或者keepalived本身出现问题时,进行切换。但是这些还不够,我们还需要监控keepalived所在服务器上的其他业务进程,比如说nginx,keepalived+nginx实现nginx的负载均衡高可用,如果nginx异常,仅仅keepalived保持正常,是无法完成系统的正常工作的,因此需要根据业务进程的运行状态决定是否需要进行主备切换。这个时候,我们可以通过编写脚本对业务进程进行检测监控。
下面是 vrrp_script 模块常见的几种监控机制
1、killall 命令探测服务运行状态
vrrp_script check_nginx { # check_nginx 为自定义的一个监控名称
script "killall -0 nginx" # 采用 killall 信号 0 来对进程运行状态进行监控,0 为正常,1 为异常
interval 2 # 检测间隔时间,即两秒检测一次
weight 30 # 一个正整数或负整数。权重值,关系到整个集群角色选举,尤为重要( 单独出帖 )
}
track_script {
check_nginx # 引用上面定义的监控模块
}
2、检测端口运行状态
检测端口的运行状态也是最常见的服务监控方式,在keepalived的vrrp_script模块中可以通过如下方式对本机的端口进行检测:
vrrp_script check_nginx {
script "< /dev/tcp/127.0.0.1:80" # 通过 < /dev/tcp/127.0.0.1:80 这样的方式定义一个对本机端口状态的检测
interval 2
fall 2 # 检测失败的最大次数,超过两次认为节点资源发生故障
rise 1 # 请求一次成功认为节点恢复正常
weight 30
}
track_script {
check_nginx
}
通过 "< /dev/tcp/127.0.0.1/80"这样的方式定义了一个对本机80端口的状态检测,其中,“fail”选项表示检测到失败的最大次数,也就是说,如果请求失败两次,就认为此节点资源发生故障,将进行切换操作;“rise”表示如果请求一次成功,就认为此节点资源恢复正常。
3、通过 shell 语句进行状态监控
vrrp_script check_nginx {
script " if [ -f /usr/local/nginx/logs/nginx.pid ]; then exit 0 ; else exit 1; fi"
interval 2
fall 1
rise 1
weight 30
}
track_script {
check_nginx
}
通过一个shell判断语句,检测httpd.pid文件是否存在,如果存在,就认为状态正常,否则认为状态异常,这种监测方式对于一些简单的应用监控或者流程监控非常有用。从这里也可以得知,vrrp_script模块支持的监控方式十分灵活。
4、通过脚本进行服务状态监控
vrrp_script chk_mysqld {
script "/etc/keepalived/check_mysqld.sh"
interval 2
}
track_script {
chk_mysqld
}
check_mysqld.sh的内容为:
#!/bin/bash
/usr/bin/mysql -e "show status;" > /dev/null 2>&1
if [ $? -eq 0 ];then
MYSQL_STATUS=0
else
MYSQL_STATUS=1
fi
exit $MYSQL_STATUS
linux脚本vrrp_script,keepalived 的 vrrp_script相关推荐
- linux 将新密码邮件发送,linux脚本实现自动发送和收取邮件的设置方法
linux脚本实现自动发送和收取邮件的设置方法 更新时间:2013年05月11日 19:51:45 作者: 这篇文章主要是介绍linux下通过脚本自动发送和收取邮件的设置方法,有需要的朋友可以参考 ...
- linux 脚本判断一个目录不存在
linux 脚本判断一个目录不存在 1 2 3 4 #!/bin/sh if [ ! -d /mnt/u ]; then mkdir -p /mnt/u fi 本文转自 boy461205160 51 ...
- 将Linux脚本中的正常输出,警告,错误等信息输出到文件中
将Linux脚本中的正常输出,警告,错误等信息输出到文件中 转载于:https://www.cnblogs.com/lwmp/p/7700339.html
- 病毒研究之感染linux脚本
病毒研究之感染linux脚本 对于shell编程的程序员来说所谓的shell病毒技术就是小牛一毛而已,看完本文后你就会有所体会但,简单归简单,我们还是要去了解它,呵呵. 主要的shell病毒 ...
- Linux脚本实战之猜数字
Linux脚本实战之猜数字 一.脚本要求 二.脚本示例一 三.脚本示例二 一.脚本要求 1.系统环境为RHEL8.0 2.脚本生成一个100以内的随机数,提示用户猜数字. 3.根据用户的输入,提示猜对 ...
- Linux脚本实战之检测网卡流量
Linux脚本实战之检测网卡流量 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.检测网卡流量,并按规定格式记录在日志中,输出到/data/net.log/目录中以执行脚本时间命令的文件中 ...
- Linux脚本之定时清空文件内容
Linux脚本之定时清空文件内容 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.要求创建名为rm_file.sh的脚本 2.要求在/home/tmp/下各以人名命名的临时目录,每天0点定 ...
- linux脚本编程(shell)浅介
linux脚本编程(shell)浅介 2006-01-10 11:45 27693人阅读 评论(18) 收藏 举报 脚本shelllinux编程bash语言 linux脚本(shell)编程 啊,昨天 ...
- 马哥linux脚本,linux学习 – shell脚本
shell是命令和硬件之间的桥梁 shell的工作方式分为两种:交互式.批处置 交互式:用户一次输入一条命令,shell翻译并执行一条 批处理:用户将多条命令构成一个shell脚本,执行脚本时,she ...
最新文章
- sqlserver常用函数点滴记录
- SAP 打开SAP物料帐期和财务账期
- 小红书最新用户量数据_小红书估值高达60亿美元?小红书超过蘑菇街了吗?
- 汇编语言---内存变量的地址
- 在WinForm程序中嵌入ASP.NET[转]
- c++中的模板_C ++中的模板
- 【IT项目管理】第8章 习题
- python中三角函数计算
- python函数里调用外部变量
- java分库框架shard_架构组件:基于Shard-Jdbc分库分表,数据库扩容方案-Go语言中文社区...
- 计算机就业去哪个岗位好? 算法岗位还是开发岗位更好?
- SpringMVC:视图解析器(ViewResolver)
- 远程访问tomcat管理页面
- HotStuff共识算法详解
- 没有IP地址的主机如何保持IP层联通
- vue分类筛选方法,filer
- uni-app项目起步
- Mac OSX 苹果电脑 安装 MacPorts
- UVM 代码生成器 easier UVM
- 使用ESP8266与小爱同学通过Arduino控制舵机
热门文章
- PHP高并发高负载系统架构
- 百家号 不被推荐,原因:将旧闻冒充新闻发布,请修改后重新发布
- Spring IOC容器-自动装配
- linux无法下载ftp,linux 不能下载怎么办
- [转载] python学习笔记
- 固件的完整形式是什么?
- express rest_Express / Node中用于REST API的邮递员工具
- Python | 从用户输入数据,保存到文件,读取并打印
- 有道词典总显示无法连接服务器,有道词典无法联网提示网络已断开该怎么办
- portlet java_Java Portlet 规范概述