zoukankan      html  css  js  c++  java
  • keepalived使用nc命令检测udp端口

    keepalived支持的健康检测方式有:HTTP_GET|SSL_GET、TCP_CHECK、SMTP_CHECK、MISC_CHECK。
    由于keepalived自身并不支持udp检测,有TCP_CHECK但是没有UDP_CHECK,所以这里只能使用MISC_CHECK混合检测方式调用外部脚本来对udp协议进行健康检测。

    首先,我们知道检测udp端口是否开启可以使用nc命令。

    # nc --help
    Ncat 6.40 ( http://nmap.org/ncat )
    Usage: ncat [options] [hostname] [port]
    
    -w, --wait <time>:Connect timeout;连接超时时长。例如设为10秒,如果10秒后未连接成功则停止发起连接请求并返回失败信息
    -v, --verbose:Set verbosity level
    -u, --udp:Use UDP instead of default TCP
    -n, --nodns:Do not resolve hostnames via DNS
    -z:zero-I/O mode [used for scanning];如果端口无回应的时候加上;如果有回应-z参数需去掉(扫描端口是否打开)
    

    在debian下,nc检测成功后返回的是open,而不是其他OS常见的succeeded。所以这里可以通过grep open字段来判断udp端口是否开启。

    # nc -unvz -w 1 192.168.10.88 2012
    (UNKNOWN) [192.168.10.88] 2012 (?) open
    

    编写检测脚本:

    # vim /etc/keepalived/UDP_CHECK.sh
    
    #!/bin/bash
    /bin/nc -unvz -w 1 $1 $2 2>&1 | grep open &> /dev/null
    exit $?
    

    通过返回的状态码$?传递给keepalived,如果grep open为0,则$?为1,如果grep open为1,则$?为0。

    MISC_CHECK 返回的状态码 1为失败,0为正常,详情可以查看示例文件的说明。

    配置keepalived:

    virtual_server 122.14.206.125 2012 {
        lb_algo rr
        lb_kind DR
        persistence_timeout 0
        delay_loop 20
        protocol UDP
    
        real_server 117.119.33.41 2012 {
            weight 5
            MISC_CHECK {
                misc_path "/etc/keepalived/UDP_CHECK.sh 192.168.10.88 2012"
                misc_timeout 10
            }
        }
    
        real_server 117.119.33.12 2012 {
            weight 5
            MISC_CHECK {
                misc_path "/etc/keepalived/UDP_CHECK.sh 192.168.10.89 2012"
                misc_timeout 10
            }
        }
    }
    
  • 相关阅读:
    JMeter压力测试并发测试(入门篇)
    System.currentTimeMillis()的性能问题以及解决方法
    Java日期时间API系列4-----Jdk7及以前的日期时间类的线程安全问题【转】
    使用Apache Commons Chain
    Spring中的InitializingBean接口的使用[转]
    Hash环/一致性Hash原理【转】
    ASP.NET Core 进程内模型和进程外模式
    如何运行多个同名Windows服务实例
    WPF系列 —— 控件添加依赖属性
    WPF系列——简单绑定学习
  • 原文地址:https://www.cnblogs.com/keithtt/p/7442262.html
Copyright © 2011-2022 走看看