Cloud Failover in AWS

Failover Event Diagram

This diagram shows a failover event with Cloud Failover implemented in AWS. You can see Elastic IP addresses with matching tags are associated with the secondary private IP matching the virtual address corresponding to the active BIG-IP device. Route targets with destinations matching the Failover Extension configuration are updated with the network interface of the active BIG-IP device.

../_images/AWSFailoverExtensionHighLevel.gif

Prerequisites

These are the minimum requirements for setting up Cloud Failover in AWS:

  • 2 clustered BIG-IPs
  • An AWS IAM role with sufficient access
    • Using Standard roles
      • EC2 Full Access
      • S3 Full Access - Note: This should be limited to necessary buckets
  • S3 bucket for Cloud Failover extension cluster-wide file(s)
    • Tagged with a key/value corresponding to the key/value(s) provided in the externalStorage.scopingTags section of the Cloud Failover extension configuration
  • Elastic IP addresses tagged with the following (optional):
    • Tagged with a key/value corresponding to the key/value(s) provided in the failoverAddresses.scopingTags section of the Cloud Failover extension configuration
    • Tagged with a special key called VIPS containing a comma seperated list of addresses mapping to a private IP address on each instance in the cluster that the Elastic IP is associated with. Example: 10.0.0.10,10.0.0.11
  • Route(s) in a route table tagged with the following (optional):
    • Tagged with a key/value corresponding to the key/value(s) provided in the failoverRoutes.scopingTags section of the Cloud Failover extension configuration
    • Tagged with a special key call f5_self_ips containing a comma seperated list of addresses mapping to a self IP address on each instance in the cluster that the routes should be pointed at. Example: 10.0.0.10,10.0.0.11
    • Note: The failover extension configuration failoverRoutes.scopingAddressRanges should contain a list of destination routes to update

Example Declaration

This example declaration shows the minimum information needed to update the cloud resources in AWS.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
    "class": "Cloud_Failover",
    "environment": "aws",
    "externalStorage": {
        "scopingTags": {
          "f5_cloud_failover_label": "mydeployment"
        }
    },
    "failoverAddresses": {
        "scopingTags": {
          "f5_cloud_failover_label": "mydeployment"
        }
    },
    "failoverRoutes": {
      "scopingTags": {
        "f5_cloud_failover_label": "mydeployment"
      },
      "scopingAddressRanges": [
        "192.168.1.0/24"
      ]
    }
}