[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相关推荐

  1. linux 将新密码邮件发送,linux脚本实现自动发送和收取邮件的设置方法

    linux脚本实现自动发送和收取邮件的设置方法 更新时间:2013年05月11日 19:51:45   作者: 这篇文章主要是介绍linux下通过脚本自动发送和收取邮件的设置方法,有需要的朋友可以参考 ...

  2. linux 脚本判断一个目录不存在

    linux 脚本判断一个目录不存在 1 2 3 4 #!/bin/sh if [ ! -d /mnt/u ]; then mkdir -p /mnt/u fi 本文转自 boy461205160 51 ...

  3. 将Linux脚本中的正常输出,警告,错误等信息输出到文件中

    将Linux脚本中的正常输出,警告,错误等信息输出到文件中 转载于:https://www.cnblogs.com/lwmp/p/7700339.html

  4. 病毒研究之感染linux脚本

    病毒研究之感染linux脚本     对于shell编程的程序员来说所谓的shell病毒技术就是小牛一毛而已,看完本文后你就会有所体会但,简单归简单,我们还是要去了解它,呵呵.  主要的shell病毒 ...

  5. Linux脚本实战之猜数字

    Linux脚本实战之猜数字 一.脚本要求 二.脚本示例一 三.脚本示例二 一.脚本要求 1.系统环境为RHEL8.0 2.脚本生成一个100以内的随机数,提示用户猜数字. 3.根据用户的输入,提示猜对 ...

  6. Linux脚本实战之检测网卡流量

    Linux脚本实战之检测网卡流量 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.检测网卡流量,并按规定格式记录在日志中,输出到/data/net.log/目录中以执行脚本时间命令的文件中 ...

  7. Linux脚本之定时清空文件内容

    Linux脚本之定时清空文件内容 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.要求创建名为rm_file.sh的脚本 2.要求在/home/tmp/下各以人名命名的临时目录,每天0点定 ...

  8. linux脚本编程(shell)浅介

    linux脚本编程(shell)浅介 2006-01-10 11:45 27693人阅读 评论(18) 收藏 举报 脚本shelllinux编程bash语言 linux脚本(shell)编程 啊,昨天 ...

  9. 马哥linux脚本,linux学习 – shell脚本

    shell是命令和硬件之间的桥梁 shell的工作方式分为两种:交互式.批处置 交互式:用户一次输入一条命令,shell翻译并执行一条 批处理:用户将多条命令构成一个shell脚本,执行脚本时,she ...

最新文章

  1. sqlserver常用函数点滴记录
  2. SAP 打开SAP物料帐期和财务账期
  3. 小红书最新用户量数据_小红书估值高达60亿美元?小红书超过蘑菇街了吗?
  4. 汇编语言---内存变量的地址
  5. 在WinForm程序中嵌入ASP.NET[转]
  6. c++中的模板_C ++中的模板
  7. 【IT项目管理】第8章 习题
  8. python中三角函数计算
  9. python函数里调用外部变量
  10. java分库框架shard_架构组件:基于Shard-Jdbc分库分表,数据库扩容方案-Go语言中文社区...
  11. 计算机就业去哪个岗位好? 算法岗位还是开发岗位更好?
  12. SpringMVC:视图解析器(ViewResolver)
  13. 远程访问tomcat管理页面
  14. HotStuff共识算法详解
  15. 没有IP地址的主机如何保持IP层联通
  16. vue分类筛选方法,filer
  17. uni-app项目起步
  18. Mac OSX 苹果电脑 安装 MacPorts
  19. UVM 代码生成器 easier UVM
  20. 使用ESP8266与小爱同学通过Arduino控制舵机

热门文章

  1. PHP高并发高负载系统架构
  2. 百家号 不被推荐,原因:将旧闻冒充新闻发布,请修改后重新发布
  3. Spring IOC容器-自动装配
  4. linux无法下载ftp,linux 不能下载怎么办
  5. [转载] python学习笔记
  6. 固件的完整形式是什么?
  7. express rest_Express / Node中用于REST API的邮递员工具
  8. Python | 从用户输入数据,保存到文件,读取并打印
  9. 有道词典总显示无法连接服务器,有道词典无法联网提示网络已断开该怎么办
  10. portlet java_Java Portlet 规范概述