`
phipray
  • 浏览: 64581 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

LVS检测同机多实例

 
阅读更多

一般来讲由于LVS的配置文件里在调用脚本时只有一个输入参数占位符%h

  

send_program = "/etc/sysconfig/ha/lvs.sh %h"    
...........
server app1 {
         address = 10.92.21.18
         active = 1
         port = 8080
         weight = 1
     }
     server app2 {
         address = 10.92.21.20
         active = 1
         port = 8080
         weight = 1
     }

 %h 自动匹配server里的address,但是如果这些server的address一样(一台机上有多个负载实例的情况下),LVS就会启动不了。

 

 

为此我做些特殊处理

我使用的机器原本的ip为10.92.21.18,在这机器上部署两个应用实例,端口分别为8080和8082,另外我通过

 


  


 
设置了一个虚拟ip,对应关系如下:

10.92.21.18----》8080

10.92.21.200---》8082

 send_program = "/etc/sysconfig/ha/lvs_ips.sh %h"
。。。。。。。
server app1 {
         address = 10.92.21.18
         active = 1
         port = 8080
         weight = 1
     }
     server app2 {
         address = 10.92.21.200
         active = 1
         port = 8082
         weight = 1
     }

 lvs_ips.sh

#!/bin/sh
tmpUriName=$1
keyword="SUCCESS"
timeout=10
errorTimes="1"

case "$tmpUriName" in  
"10.92.21.18")
uri="http://${tmpUriName}:8080/XXXX/lvs.Monitor"
;;	
"10.92.21.200")
uri="http://${tmpUriName}:8082/XXXX/lvs.Monitor"
;;
esac

writeError(){

	
  
  if [ -f /tmp/.errorcount_${tmpUriName} ]; then
    errorCount="$(cat /tmp/.errorcount_${tmpUriName})"
  else
    errorCount="0"
  fi

  if [ $errorCount == ${errorTimes} ]; then
    echo "NOSUCCESS"
    #echo "LOG ${tmpUriName} FAIL">>/tmp/.errorcount
  else
    echo ${errorTimes} >/tmp/.errorcount_${tmpUriName}
    echo "OK"
    #echo "LOG ${tmpUriName} FAIL OK">>/tmp/.errorcount
  fi
}

testConn(){
  if [ `GET -t ${timeout} ${uri} |grep ${keyword} |wc -l` -gt 0 ]; then
    echo "0" > /tmp/.errorcount_${tmpUriName}
    echo "OK"
    #echo "LOG ${tmpUriName} OK">>/tmp/.errorcount
  else
    writeError
  fi
}
testConn

 

搞掂,有图为证~



 

 

 


 

  • 大小: 331.3 KB
  • 大小: 85.3 KB
  • 大小: 9.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics