Forum Discussion

Jonathan_Desmar's avatar
Jonathan_Desmar
Icon for Nimbostratus rankNimbostratus
Feb 15, 2012

Triggered Pool Selection (iRule Request)

Here's a tricky one.

 

 

Our developers need to be able to flip a particular app pool into service remotely. They use this for release management. So for example, legA is activ receiving customer requests, they deploy a patched version to legB, then when tested and ready the flip a switch and the customer requests get forwarded to legB instead.

 

 

I was thinking I could do this by using a unrelated node and setting up an http health monitor. The state of the node (up / down) could then be leveraged by an iRule and used as a pool selector.

 

 

But perhaps a better way would be to use the response to a health monitor style get which could generate a key word which I would use in a switch.

 

 

ANyone done something like this before?

 

2 Replies

  • just wonder why disabling node/pool is not applicable.

     

     

    sol7566: Disabling nodes or pool members for maintenance (9.x - 10.x)

     

    http://support.f5.com/kb/en-us/solutions/public/7000/500/sol7566.html
  • The requirement is for both pools to be active, one in development the other live. They then flip the pools to a new release, which allows the immediate rollback in the case of a bug.

     

     

    It also removes the requirement for the Devs to get in touch with the F5 admins.

     

     

     

    I will have two VIPs. One for live and one for dev. They will have exactly opposite rules. Meaning that the Live VIP will point to the stable active pool. And the dev VIP will point to the new release pool.

     

    When the toggle is initiated, leg A or leg B both VIPs change target pool.

     

     

     

    The logic would be:

     

     

     

    VIP Live

     

    if response = legA

     

    then use pool A

     

    if response = lebB

     

    then use pool B

     

     

     

    VIP Dev

     

    if response = legA

     

    then use pool B

     

    if response = legB

     

    then use pool A

     

     

     

    Additional reponse options may be

     

     

     

    if response = main

     

    then use pool C (and pool C is a maintenance page)

     

     

     

    Cheers

     

     

    Jon..