Forum Discussion

Piotr_Lewandows's avatar
Piotr_Lewandows
Icon for Altostratus rankAltostratus
Jun 12, 2017

GTM and Topology? Possible without iRule?

Hi,

 

I wonder if such scenario is possible to achieve without creating GTM iRule:

 

  • Host asking for FQDN to connect to bunch of servers. This host can be in DC1 or DR1 depending on diiferent factors, it's migrated using VMware HA. It keeps same IP, number of hops is the same etc. - so no obvious way to figure out in which DC host actually is. It will probably be fixed by creating some external monitor - not important now.

     

  • If host is in given DC it should receive IPs only of target servers in this DC

     

  • If there is no active server left in this DC, but there are active in other DC then IPs from other DC should be returned.

I have no idea right now how to achieve it using just configuration objects without iRule - any ideas welcome here.

 

I can't use Topology on Wide IP level, as there is no change that can be detected - same IP for DNS requests.

 

If Global Availability will be used then it should dynamically change order based on DC in which host is running at the given time.

 

So...

 

Piotr

 

1 Reply

  • Hi,

    My idea is:

    • Set Wide IP with Topology LB and:
      • order 0 - dc1_pool
      • order 1 - dr1_pool
    • Create pool
      location_pool
      with VS pointing to location returning info about host (LDNS), and monitor setting VS down when host is in DR1
    • Assign rule like that to Wide IP (WIP)

      when DNS_REQUEST { check where LDNS is, if below true it is in DR1 if { [active_members location_pool] < 1 } { check if there are any active members in DR1 pool/location if { [active_members dr1_pool] > 0 } { pool dr1_pool } else { Use DC1 pool pool dc1_pool } } }

    So if first test in iRule is false WIP is using configured LB - first sends IPs from dc1_pool, if this pool is down from dr1-pool.

    If it's true (host in DR1) there is check if dr1_pool is UP (any member active), if not IPs from dc1_pool are returned.

    Good or bad idea, better way to do that?

    Piotr