F5 Distributed Cloud (XC) Global Applications Load Balancing in Cisco ACI

Introduction

F5 Distributed Cloud (XC) simplify cloud-based DNS management with global server load balancing (GSLB) and disaster recovery (DR).  F5 XC efficiently directs application traffic across environments globally, performs health checks, and automates responses to activities and events to maintain high application performance with high availability and robustness.

In this article, we will discuss how we can ensure high application performance with high availability and robustness by using XC to load-balance global applications across public clouds and Cisco Application Centric Infrastructure (ACI) sites that are geographically apart.  We will look at two different XC in ACI use cases. Each of them uses a different approach for global applications delivery and leverages a different XC feature to load balance the applications globally and for disaster recovery.

XC DNS Load Balancer

Our first XC in ACI use case is very commonly seen where we use a traditional network-centric approach for global applications delivery and disaster recovery.  We use our existing network infrastructure to provide global applications connectivity and we deploy GSLB to load balance the applications across sites globally and for disaster recovery.  In our example, we will show you how to use XC DNS Load Balancer to load-balance a global application across ACI sites that are geographically dispersed.  One of the many advantages of using XC DNS Load Balancer is that we no longer need to manage GSLB appliances.  Also, we can expect high DNS performance thanks to XC global infrastructure.  In addition, we have a single pane of glass, the XC console, to manage all of our services such as multi-cloud networking, applications delivery, DNS services, WAAP etc.

Example Topology

Here in our example, we use Distributed Cloud (XC) DNS Load Balancer to load balance our global application hello.bd.f5.com, which is deployed in a hybrid multi-cloud environment across two ACI sites located in San Jose and New York.  Here are some highlights at each ACI site from our example:

New York location

  • XC CE is deployed in ACI using layer three attached with BGP
  • XC advertises custom VIP 10.10.215.215 to ACI via BGP
  • XC custom VIP 10.10.215.215 has an origin server 10.131.111.88 on AWS
  • BIG-IP is integrated into ACI
  • BIG-IP has a public VIP 12.202.13.149 that has two pool members:
    • on-premise origin server 10.131.111.161
    • XC custom VIP 10.10.215.215

San Jose location

  • XC CE is deployed in ACI using layer three attached with BGP
  • XC advertises custom VIP 10.10.135.135 to ACI via BGP
  • XC custom VIP 10.10.135.135 has an origin server 10.131.111.88 on Azure
  • BIG-IP is integrated into Cisco ACI
  • BIG-IP has a public VIP 12.202.13.147 that has two pool members: 
    • on-premise origin server 10.131.111.55
    • XC custom VIP 10.10.135.135

*Note: Click here to review on how to deploy XC CE in ACI using layer three attached with BGP.

 

DNS Load Balancing Rules

A DNS Load Balancer is an ingress controller for the DNS queries made to your DNS servers. The DNS Load Balancer receives the requests and answers with an IP address from a pool of members based on the configured load balancing rules.  On the XC console, go to "DNS Management" -> "DNS Load Balancer Management" to create a DNS Load Balancer and then define the load balancing rules.  Here in our example, we created a DNS Load Balancer and defined the load balancing rules for our global application hello.bd.f5.com (note: as a prerequisite, F5 XC must be providing primary DNS for the domain):  

  • Rule #1: If the DNS request to hello.bd.f5.com comes from United States or United Kingdom, respond with BIG-IP VIP 12.203.13.149 in the DNS response so that the application traffic will be directed to New York ACI site and forwarded to an origin server that is located in AWS or on-premise:

     

  • Rule #2: If the DNS request to hello.bd.f5.com comes from United States or United Kingdom and if New York ACI site become unavailable, respond with BIG-IP VIP 12.203.13.147 in the DNS response so that the application traffic will be directed to San Jose ACI site and forwarded to an origin server that is located on-premise or in Azure:

     

  • Rule #3: If the DNS request to hello.bd.f5.com comes from somewhere outside of United States or United Kingdom, respond with BIG-IP VIP 12.203.13.147 in the DNS response so that the application traffic will be directed to San Jose ACI and forwarded to an origin server that is located on-premise or in Azure:

Validation

Now, let's see what happens.  When a machine located in the United States tries to reach hello.bd.f5.com and if both ACI sites are up, the traffic is directed to New York ACI site and forwarded to an origin server that is located on-premise or in AWS as expected:

When a machine located in the United States tries to reach hello.bd.f5.com and if the New York ACI site is down or becomes unavailable, the traffic is re-directed to San Jose ACI site and forwarded to an origin server that is located on-premise or in Azure as expected:

When a machine tries to access hello.bd.f5.com from outside of United States or United Kingdom, it is directed to San Jose ACI site and forwarded to an origin server that is located on-premise or in Azure as expected:

On the XC console, go to "DNS Management" and select the appropriate DNS Zone to view the Dashboard for information such as the DNS traffic distribution across the globe, the query types etc and Requests for DNS requests info:

 

XC HTTP Load Balancer

Our second XC in ACI use case uses a different approach for global applications delivery and disaster recovery.  Instead of using the existing network infrastructure for global applications connectivity and utilizing XC DNS Load Balancer for global applications load balancing, we simplify the network layer management by securely deploying XC to connect our applications globally and leveraging XC HTTP Load Balancer to load balance our global applications and for disaster recovery. 

Example Topology

Here in our example, we use XC HTTP load balancer to load balance our global application global.f5-demo.com that is deployed across a hybrid multi-cloud environment.  Here are some highlights:

  • XC CE is deployed in each ACI site using layer three attached with BGP
  • New York location: ACI advertises on-premise origin server 10.131.111.161 to XC CE via BGP
  • San Jose location: ACI advertises on-premise origin server 10.131.111.55 to XC CE via BGP
  • An origin server 10.131.111.88 is located in AWS
  • An origin server 10.131.111.88 is located in Azure

*Note: Click here to review on how to deploy XC CE in ACI using layer three attached with BGP.

 

XC HTTP Load Balancer

On the XC console, go to “Multi-Cloud App Connect” -> “Manage” -> “Load Balancers” -> “HTTP Load Balancers” to “Add HTTP Load Balancer”.  In our example, we created a HTTPS load balancer named global with domain name global.f5-demo.com.  Instead of bringing our own certificate, we took advantage of the automatic TLS certificate generation and renewal supported by XC:

 

Go to “Origins” section to specify the origin servers for the global application.  In our example, we included all origin servers across the public clouds and ACI sites for our global application global.f5-demo.com:

Next, go to “Other Settings” -> “VIP Advertisement”.  Here, select either “Internet” or “Internet (Specified VIP)” to advertise the HTTP Load Balancer to the Internet.  In our example, we selected “Internet” to advertise global.f5-demo.com globally because we decided not to manage nor to acquire a public IP:

 

In our first use case, we defined a set of DNS load balancing rules on the XC DNS Load Balancer to direct the application traffic based on our requirement:

  • If the request to global.f5-demo.com comes from United States or United Kingdom,  application traffic should be directed to an origin server that is located on-premise in New York ACI site or in AWS.

  • If the request to global.f5-demo.com comes from United States or United Kingdom and if the origin servers in New York ACI site and AWS become unavailable, application traffic should be re-directed to an origin server that is located on-premise in San Jose ACI site or in Azure.

  • If the request to global.f5-demo.com comes from somewhere outside of United States or United Kingdom, application traffic should be directed to an origin server that is located on-premise in San Jose ACI site or in Azure.

We can accomplish the same with XC HTTP Load Balancer by configuring Origin Server Subset Rules.  XC HTTP Load Balancer Origin Server Subset Rules allow users to create match conditions on incoming source traffic to the XC HTTP Load Balancer and direct the matched traffic to the desired origin server(s).  The match condition can be based on country, ASN, regional edge (RE), IP address, or client label selector.  As a prerequisite, we create and assign a label (key-value pair) to an origin server so that we can specify where to direct the matched traffic to in reference to the label in Origin Server Subset Rules.  Go to “Shared Configuration” -> “Manage” -> “Labels” -> “Known Keys” and “Add Know Key” to create labels.  In our example, we created a key named jy-key with two labels: us-uk and other :

Now, go to "Origin pool" under “Multi-Cloud App Connect” and apply the labels to the origin servers:

 

In our example, origin servers in New York ACI site and AWS are labeled us-uk while origin servers in San Jose ACI site and Azure are labeled other :

 

Then, go to “Other Settings” to enable subset load balancing.  In our example, jy-key is our origin server subsets class, and we configured to use default subset original pool labeled other as our fallback policy choice based on our requirement that is if the origin servers in New York ACI site and AWS become unavailable, traffic should be directed to an origin server in San Jose ACI site or Azure:

Next, on the HTTP Load Balancer, configure the Origin Server Subset Rules by enabling “Show Advanced Fields” in the "Origins" section:

 

In our example, we created following Origin Server Subset Rules based on our requirement:

  • us-uk-rule: If the request to global.f5-demo.com comes from United States or United Kingdom, direct the application traffic to an origin server labeled us-uk that is either in New York ACI site or AWS.

  • other-rule: If the request to global.f5-demo.com does not come from United States or United Kingdom, direct the application traffic to an origin server labeled other that is either in San Jose ACI site or Azure.

Validation

As a reminder, we use XC automatic TLS certificate generation and renewal feature for our HTTPS load balancer in our example.  First, let's confirm the certificate status:

 

We can see the certificate is valid with an auto renew date.  Now, let’s run some tests and see what happens.  First, let’s try to access global.f5-demo.com from United Kingdom:

 

We can see the traffic is directed to an origin server located in New York ACI site or AWS as expected.  Next, let's see what happens if the origin servers from both of these sites become unavailable:

The traffic is re-directed to an origin server located in San Jose ACI site or Azure as expected.  Last, let’s try to access global.f5-demo.com from somewhere outside of United States or United Kingdom:

 

The traffic is directed to an origin server located in San Jose ACI site or Azure as expected.

To check the requests on the XC Console, go to "Multi-Cloud App Connect" -> “Performance” -> "Requests" from the selected HTTP Load Balancer.  Below is a screenshot from our example and we can see the request to global.f5-demo.com came from Australia was directed to the origin server 10.131.111.55 located in San Jose ACI site based on the configured Origin Server Subset Rules other-rule:

Here is another example that the request came from United States was sent to the origin server 10.131.111.88 located in AWS based on the configured Origin Server Subset Rules us-uk-rule:

Summary

F5 XC simplify cloud-based DNS management with global server load balancing (GSLB) and disaster recovery (DR).  By deploying F5 XC in Cisco ACI, we can securely deploy and load balance our global applications across ACI sites (and public clouds) efficiently while maintaining high application performance with high availability and robustness among global applications at all times.

Related Resources

*On-Demand Webinar* Deploying F5 Distributed Cloud Services in Cisco ACI

Deploying F5 Distributed Cloud (XC) Services in Cisco ACI - Layer Three Attached Deployment

Deploying F5 Distributed Cloud (XC) Services in Cisco ACI - Layer Two Attached Deployment

Updated Aug 15, 2024
Version 3.0
No CommentsBe the first to comment