• Keepalived 资源监控



    简介:

    作为一个高可用集群软件,Keepalived 没有 Heartbeat 、RHCS 等专业的高可用集群软件功能强大,它不能够实现集群资源的托管,也不能实现对集群中运行服务的监控,好在 Keepalived 也考虑到了这一点,它提供了 vrrp_script 、notify_master 、notify_backup 等多个功能模块,通过这些模块也可以实现对集群资源的托管以及集群服务的监控。

    ## 下面是一个 Keepalived 主备切换的演示过程

    shell > curl 192.168.1.35
    welcome to Master Nginx

    ## 客户机访问虚拟 IP 192.168.1.35 ,这时由主服务器提供服务
    ## 当主服务器宕机或网络出现异常或 Keepalived 本身停止时,主备切换

    shell > curl 192.168.1.35
    welcome to Slave Nginx

    ## 当手动停止 Keepalived 服务时,由备机来提供服务,这并没有什么问题

    ## 第二种测试

    shell > curl 192.168.1.35
    welcome to Master Nginx

    ## 现在由主服务器提供服务,当主服务上提供服务的 web 停止时,是否会出现主备切换呢 ?

    shell > curl 192.168.1.35
    curl: (7) couldn't connect to host

    ## 很显然,并没有主备切换。
    ## 主服务器没有移除 VIP ,备服务器也没有绑定 VIP 。
    ## 这是因为他们之间通过 VRRP 协议来确定对方是否存活,而 web 停止并不妨碍他们之间的通信。
    ## 所以备机就认为主服务器处于存活状态,从而导致无法正常提供服务。

    ## 这时就要由 vrrp_script 出马了 !

    vrrp_script

    此模块专门用于对集群中服务资源进行监控 。与此模块同时使用的还有 track_script 模块,在此模块中可以引入监控脚本、命令组合、shell 语句等 ,以实现对服务、端口等多方面的监控。track_script 模块主要用来调用 vrrp_script 模块使 keepalived执行对集群服务资源的检测。vrrp_script 模块中还可以定义对服务资源检测的时间间隔、权重等参数,通过 vrrp_script 和 track_script 组合,可以实现对集群资源的监控并改变优先级,进而实现 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、检测端口运行状态

    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
    }

    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
    }

    4、通过脚本进行服务状态监控

    vrrp_script check_nginx {
      script "/etc/keepalived/check_nginx.sh"
      interval 2
      weight 30
    }
    
    track_script {
      check_nginx
    }

    ## 其中 check.nginx.sh 也是本着正常返回 0 ,异常返回 1 的原则来定义

    ## 这两种方法,个人感觉基本一个意思,简单点的检测就用语句,复杂点的就写脚本里

  • 相关阅读:
    LeetCode Notes_#705_设计哈希集合
    LeetCode Notes_#706_设计哈希映射
    【问题记录】用坚果云同步小书匠数据库发生冲突
    Java设计模式5
    Java设计模式4
    Java设计模式3
    Java设计模式2
    Java设计模式1
    tiantian1412/NTU-HsuanTienLin-MachineLearning
    Jing--Li / book
  • 原文地址:https://www.cnblogs.com/wangxiaoqiangs/p/5630531.html
Copyright © 2020-2023  润新知