Forum Discussion

Matthew_Goche_6's avatar
Matthew_Goche_6
Icon for Nimbostratus rankNimbostratus
May 12, 2006

Virtual Server doesn't return ping

Hi. I currently have a configuration where a device upstream from my BIG-IP 6400 is doing health checks against the BIG-IP. I also want the health checks to fail if my virtual server is showing down. However, my experience with the monitors show that even if the virt is down the BIG-IP will still respond to the health check on that virt unless the BIG-IP itself is down. Therefore, I'm attempting to write an iRule to redirect the upstream health check in order to somehow cause a failure. I am wondering if anyone else has run into this problem or if any templates exist that could assist me in this effort.

 

 

Matt

4 Replies

  • Deb_Allen_18's avatar
    Deb_Allen_18
    Historic F5 Account
    Enabling "Action on Service Down" to "Reject" for the pool (in Pool/Properties / Configuration: Advanced) will cause LTM to send a RST in response to requests if all servers in the pool are DOWN.

     

     

    I think that will accomplish your goal without a rule...

     

     

    /deb
  • Did you get this resolved? As Deb noted, you shouldn't need an iRule for this.

     

     

    What kind of health check is the upstream device sending? If it's ping, as indicated in your subject, the BIG-IP by design will always respond regardless of the state of VIPs configured on that virtual address. This is because the BIG-IP has no way of knowing which VIP on the virtual address you want to check with the ICMP.

     

     

    The ideal solution would be to have the upstream device monitor the VIP's specific IP:port.

     

     

    Aaron
  • Graziano_Rizzat's avatar
    Graziano_Rizzat
    Historic F5 Account
    Hi I have the same requirement coming from our customer, they use a ping to a VS to monitor the availability of the application. What we would like to achieve is that BIG-IP should not reposnd to a ping to VS if the pool is down here is a sample Irule that of course is not working :

     

     

    rule ICMP_DENY_ON_POOL_DOWN {

     

     

    when CLIENT_DATA {

     

     

    if { [[LB::status pool NOME] eq "down"] and [[IP::protocol] == 1] }

     

     

    { drop }

     

     

    }

     

     

    }

     

     

     

    Any idea to achieve the goal ??

     

    Thanks a lot
  • This is what we use:

    
    when CLIENT_ACCEPTED {
      if { [active_members myPool] == 0 } {
        discard
      }
    }