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即可。

  • 相关阅读:
    pip不是内部或外部命令也不是可运行的程序或批处理文件的问题
    动态规划 leetcode 343,279,91 & 639. Decode Ways,62,63,198
    动态规划 70.climbing Stairs ,120,64
    (双指针+链表) leetcode 19. Remove Nth Node from End of List,61. Rotate List,143. Reorder List,234. Palindrome Linked List
    建立链表的虚拟头结点 203 Remove Linked List Element,82,147,148,237
    链表 206 Reverse Linked List, 92,86, 328, 2, 445
    (数组,哈希表) 219.Contains Duplicate(2),217 Contain Duplicate, 220(3)
    重装系统
    java常用IO
    端口
  • 原文地址:https://www.cnblogs.com/yu2006070-01/p/10386772.html
Copyright © 2011-2022 走看看