Forum Discussion

Vishnu_Palanis1's avatar
Vishnu_Palanis1
Icon for Nimbostratus rankNimbostratus
Mar 11, 2009

Member reselect based on member status

Version of Big-IP is BIG-IP 9.1.2 Build 40.6

 

 

Here's the pseudo code for what I'm trying to do -

 

 

event http_request {

 

if pool member status is down {

 

[optional] close server connection on the down member

 

reselect the next active member

 

}

 

}

 

 

Basically, I'm trying to stop new requests to be sent to a member that is marked as down by a monitor.

 

 

I keep hitting a wall since some of the LB:: commands are not available in 9.1.2.

 

 

Is what I'm trying to do even possible in 9.1.2? Any suggestions to achieve what I'm trying to do?

 

 

Thanks in advance. The user community here is great! Keep up the good work.

6 Replies

  • Per the LB::status wiki page, you can use the LB::status command if you install 9.1.2HF4. But it would be much better to upgrade to 9.3.1HF6 as there are a lot of significant issues fixed in the latest maintenance release versus 9.1.2.

     

     

    Aaron
  • Deb_Allen_18's avatar
    Deb_Allen_18
    Historic F5 Account
    New requests should not be sent to a pool member that's marked down.

     

     

    Unless your iRule is doing something besides enforcing that action, this behavior can be configured rather than coded in an iRule using the "Action on Service Down" pool setting (under Advanced Configuration). To reselect when the selected pool member goes down, set it to "Reselect".
  • Thanks for your replies.

     

     

    "New requests should not be sent to a pool member that's marked down." - Actually, it's new *connections* that will not be

     

    established to a pool member that's marked down.

     

     

    Same with the "Action on Service Down" setting. This setting seemed to affect new connections only, when I tested this. I will test this out again.

     

     

    A little more on my situation -

     

     

    The client establishes a connection and keeps it open, and sends many requests over time on the connection. The Server(HTTP) has an idle timeout on all connections, and closes it after 2 minutes of inactivity. The client sends a few requests per minute, which results in the connection being kept open forever.

     

     

    This is a difficult situation - the server cannot be shutdown for maintenance with open connections, since there maybe in flight requests over a connection. The server is able to force a health check failure and the pool member can be marked down. However, this only prevents new connections to be established on the server but does not prevent new requests over an existing connection.

     

     

    I would like to prevent new requests to be sent to the server, so the server can expire the connection when the idle timeout kicks in.

     

     

    Ideas?
  • This is exactly what I'm currently trying to do - force connections to Reselect in order to allow system maintenance. This thread is almost a year old - help?
  • If this is what you are wanting to do, this option works and is still available and functional through 10.1.x.

     

     

    Is there anything else that you are wanting to do with it or questions you have about it?

     

  • I also have a thread on this over in Advanced Config.

     

     

    Only the "Reject" setting for "Action on Service Down" seems to actually move established connections over to a new Pool member, and the RST send to both Client and Server is causing us some issues. We need the Client side to be unaffected (or at least unaware). "Reselect" stops sending new connections, but we have to wait hours for the current ones to clear.

     

     

    So - is there a better iRule-based (or other) way to do this?