天堂1111 发表于 2018-12-28 12:17:03

LVS+Keepalived监控UDP

  Keepalived监控后端TCP协议的配置很好写,直接用TCP_CHECK就行了.
  而监控UDP协议就没有UDP_CHECK了,需要用到MISC_CHECK来调用外部的脚本去判断UDP端口是否开启来做到UDP健康状态检查.
  首先我们知道检测UDP端口是否开启可以使用linux下的nc命令.
  例子:
  1
  2# nc -zu -w 1 10.0.0.193 443
  Connection to 10.0.0.193 443 port succeeded!
  -u UDP模式
  -z 如果端口无回应的时候加上;如果有回应-z参数需去掉(扫描端口是否打开用)
  -w 如果端口有回应数据,那么必须加上-w参数,设为1秒,nc则1秒后断开连接
  我们可以通过grep succeeded字段来判断UDP端口是否开启.那么检测脚本就可以写# cat /usr/local/scripts/keepalived/UDP_CHECK.sh
#!/bin/bash
/usr/bin/nc -uz -w1 $1 $2 | grep succeeded >/dev/null
exit $?  

  通过返回的状态 $? 传递给keepalived .如果grep succeeded为0 则$?为1
  Keepalived MISC_CHECK 返回的状态码 1为失败,0为正常. 具体的可以去查看MISC_CHECK的详细说明.
  接下来做keepalived的配置:
virtual_server *.*.*.* 443 {
      delay_loop 1
      lb_algo rr
      lb_kind NAT
      #   persistence_timeout 5
      protocol UDP
      real_server 10.0.0.193 443 {
      MISC_CHECK {    //这里注意MISC_CHECK与{之间要有空格.
                misc_path"/usr/local/scripts/keepalived/UDP_CHECK.sh 10.0.0.193 443"
                misc_timeout 10
                }
      }
}  

  
  




页: [1]
查看完整版本: LVS+Keepalived监控UDP