For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

THi's avatar
THi
Icon for Nimbostratus rankNimbostratus
12 years ago

BIG-IP pair split between two DCs, how to set up failover with all traffic moved and kept within one DC - no GTM

I have a customer scenario:

 

  • two data centers DC1 and DC2 close each other (all VLANS shared)
  • BIG-IP LTM HA pair split between those, unit 1 in DC1, unit 2 in DC2, DC1 one being preferred active
  • two identical sets of server pools (frontend_DCx, backend_DCx, db etc), one set in each DC
  • multiple virtuals as servers talk to each other (using sockets)
  • complex application which must reside within one DC, but no persistence within server pools needed

How to do a failover setup so that:

 

  • primary DC is DC1
  • all VIPS, pools used, nodes and their traffic etc should fail over to DC2 when the number of active members in certain pool_x_DC1 (pool x with nodes in DC1) fall below a set threshold, i.e. full failover with DC2 BIG-IP coming active
  • failback to DC1 when the pool_x_DC1 servers are resumed above the threshold

I believe that the failover triggering can be done using HA Group and setting the scores properly based on pool_x_DC1 members availability.

 

Now the tricky part: when failover happens and the other DC becomes active, how to move and keep all traffic within it until the failback happens?

 

Obviously part of this could be achieved with iRules selecting between DC1 and DC2 server pools - if the iRule could know on which BIG-IP unit it is running. Unfortunately there seems to be no easy way for an iRule to determine that - or is there? Could of course use external file, then reading it with iFile functionality. Can the iFile file content be unique to the BIG-IP unit? If not then perhaps using iCall to write the unit number in it.

 

But, anything simpler, faster, other ideas etc?

 

2 Replies

  • The HA Froup with pool member threshold would work for the failover part.

     

    For the pool selection based on the active unit id one option would be using the failover scripts: http://support.f5.com/kb/en-us/solutions/public/6000/000/sol6008.html the failover script would set an active unit identifier to an external data group file and the iRule would check this identifier form the DG and decide which pool (from DC1/DC2) to use based on that.

     

    -Turo

     

  • Following the pool selection topic: I think there is a way to use an iRule command do determine the unit id:

    static::tcl_platform(machine)
    (https://devcentral.f5.com/wiki/iRules.tcl_platform.ashx) which will return the hostname of the BIG-IP unit that is processing the iRule and use this as an unit identifier. Then map the pool based on the hostname.

    Would that work for you?

    -Turo