DEV Community

Paritosh
Paritosh

Posted on

LB Console for BigIp F5

Introduction

LB Console is an application that wraps functionalities provided by BigIp F5 UI to configure load balancer. BigIP F5 load balancer is one of the extensively used load balancer (at least in e-commerce domain).

Problem statement

Though BigIp F5 has very effective UI but in terms of usability users are required to have some understanding of how F5 works.

Things get much complex for teams who want to integrate monitoring application, deployment application & other planned activities. As there is a learning curve required to understand basic working of F5 plus the API integration at multiple levels feels like an overhead for the consumer.

Solution

An application that performs all required transactions with BigIp F5. That exposes REST endpoints that can be used for integration with other applications.

Have a simpler UI that is user friendly & fast. A tracking mechanism that keeps log of all critical transaction.

Tech stack

  • Python Django framework
  • PyControl
  • ElasticSearch
  • Python Boto3
  • Docker

RESTful approach

Implementing a simple RESTful approach proved to be extremely useful as it enabled teams to easily integrate the same with deployment strategies and moving application from data centres to cloud (AWS & OpenStack).

Django DB Caching

As the volume of pools and servers configured at F5 were moderatley large ~3k servers under ~1K pools, read calls from LB Console to BigIp F5 were considerable. Hence to minimise # of calls to F5 Django DB based caching came in handy.

This enabled the application to query directly to F5 only when the required data was not present in the cache. Result from every F5 query being saved in cache with a short TTL (300s) ensured that data being served almost instantly & F5 query calls only in the event of cache miss occurrence.

ElasticSearch based logging

ElasticSearch based logging each of the create/update/delete transaction helped in keeping critical data readily available for consumers. User interface being the primary consumer to display logs per server or pool, later the same was integrated with our IRC channel for users to query the logs from IRC itself.

Docker

Conventionally Django projects were shipped as tar files in production or in some cases deployment via Git was practiced. So to bring some reliablility and standardisation in deployment approach Docker came very handy plus usual benefits of using containerisation.

LB Console application also solves complex problems like:

  • Traffic switching within data centres.
  • Managing DNS entries in AWS Route53.

Latest comments (0)