zoukankan      html  css  js  c++  java
  • 青蛙学Linux—Keepalived中通过vrrp_script实现对资源的监控

    在Keepalived的配置文件中,我们可以指定Keepalived监控的网络接口,当系统或网络出现问题时就会进行主备切换。但是,很多时候我们需要对集群中特定的服务进行监控,但服务发生故障时就进行主备切换,此时只监控网络接口就无法满足我们的需求。Keepalived提供了vrrp_script调用自定义脚本的方式满足了我们的需求。

    1、vrrp_script

    在Keepalived中,可以通过vrrp_script调用shell命令或一个脚本,通过该命令或脚本的返回值来判断监控的资源是否出问题。当返回值为0时,Keepalived认为被监控的资源正常;当返回值为非0时,Keepalived认为被监控的资源出现了问题。

    配置vrrp_script:

    vrrp_script 自定义名称 {
        script "命令或脚本"
        interval 数字
        fall 数字
        rise 数字
    }
    vrrp_instance VRRP实例名 {
        ...
        track_script {
            vrrp_script的自定义名称
        }
    }
    • script:调用shell命令或脚本
    • interval:定义执行命令或脚本的时间间隔,单位秒
    • fall:定义检测失败的最大次数,如设置为2表示当请求失败两次时就认为节点资源故障
    • rise:定义请求成功的次数,如设置为1表示当进行一次请求成功后就认为节点资源恢复正常
    • vrrp_instance中的track_script:调用vrrp_script使之生效

    vrrp_script执行命令或脚本时默认使用的用户为keepalived_script,如果系统中不存在该用户,则使用root用户执行脚本。

    2、使用vrrp_script监控资源的几种常用方式

    2.1、通过killall命令检测服务运行状态

    通过命令killall –0 进程名可以检测指定的进程是否正在运行。这里使用了killall的0信号,当killall向一个进程发出0信号时,不会结束这个进程,而是返回0或非0的值。0表示进程正在运行,而非0表示进程不存在。所以,通过这种方式可以很方便的检测一个服务是否正在运行。

    e.g:监测Apache的httpd服务
    vrrp_script check_httpd{
        script "killall -0 httpd"
        ...
    }

    2.2、检测端口运行状态

    对于服务端口的监控也可以达到检测服务是否正常运行的目的。通过一个特殊的文件/dev/tcp就可以对端口进行检测,打开这个文件就相当于建立了一个socket连接。注意:/dev/tcp文件本身并不存在。

    e.g:检测80端口是否打开
    vrrp_script check_httpd {
        script "</dev/tcp/127.0.0.1/80"
        ...
    }

    2.3、使用shell语句进行监控

    vrrp_script还支持直接引用shell语句进行状态监控。

    e.g:判断Apache的PID文件是否存在以确定Apache的服务是否正常
    vrrp_script check_httpd {
        script "if [ -f /var/run/httpd/httpd.pid ]; then exit 0; else exit 1; fi"
        ...
    }

    2.4、通过脚本进行监控

    vrrp_script可以通过运行指定的脚本来对服务进行监控。在编写脚本时,只需要控制脚本的返回值为0或非0即可。

  • 相关阅读:
    Angle Beats Gym
    MUV LUV UNLIMITED Gym
    Balanced Diet Gym
    数位dp HDU
    数位dp CodeForces
    数位dp HDU
    有依赖的背包 洛谷P1064 金明的预算方案 (不是分组背包)
    多重背包+二进制拆分 POJ1014
    单调队列优化dp 入门 洛谷P2627 修剪草坪
    01背包 + 排序 (记忆化搜索) 骄傲的商人(HDU
  • 原文地址:https://www.cnblogs.com/yu2006070-01/p/10386772.html
Copyright © 2011-2022 走看看