F5 BIG-IP Load Balancer Plugin Manual

    Preface

    This document describes the functionality provided by the F5 BIG-IP plugin.

    Refer to XL Deploy Reference Manual for background information on XL Deploy and deployment concepts.

    Overview

    The BIG-IP plugin is a XL Deploy plugin that adds capability for managing deployments done to application and web servers whose traffic is managed by a BIG-IP load-balancing device.

    Features

    • Allows servers and services to be taken out of the load balancing pool before a deployment and put back after the deployment has been performed.

    Requirements

    • XL Deploy requirements
      • XL Deploy: version 4.5.0+
      • BIG-IP: 10.x, 11.x
      • Python: 2.7 (additional libraries required: pycontrol 2.0+, suds 0.3.9+)
      • Other XL Deploy plugins:
        • loadbalancer-plugin (distributed together)
        • group-orchestrator-plugin 4.5.0+
        • webserver-plugin 4.5.0+

    Installation

    Place the plugin JAR file and all the dependent plugin files into your SERVER_HOME/plugins directory.

    Install Python 2.7.x and the additional pycontrol (https://pypi.python.org/pypi/pycontrol) and suds (https://pypi.python.org/pypi/suds) libraries on the host which has access to the BIG-IP loadbalancer device.

    Usage

    The plugin works in conjunction with the "group-based" orchestrator to disable and enable containers which are part of a single deployment group in one go.

    The group-based orchestrator will divvy up the deployment into multiple phases, based on the 'deploymentGroup' property of the containers that are being targeted. Each of these group will be disabled in the BIG-IP just before they're deployed to, and will be re-enabled right after the deployment to that group. This will ensure that there is no downtime during the deployment.

    The plugin will add the following 4 properties to every container to control how the server is known in the BIG-IP loadbalancer, and should it take part in the loadbalancing deployment:

    Additional container properties
     
     
    bigIpAddress : STRING
    The address this server is registered under in the BigIP load balancer
     
     
    bigIpPool : STRING
    The BigIP load balancer pool this server is a member of
     
     
    bigIpPort : INTEGER
    The port of the service of this server that is load balanced by the BigIP load balancer
     
     
    disableInLoadBalancer : BOOLEAN  = true
    Whether this server should be disabled in the load balancer when it is being deployed to

    The plugin will add two steps to the deployment of each deployment group.

    1. A disable server step, this will stop the traffic to the servers that are managed by the loadbalancer.
    2. An enable server step, this will start the traffic to the servers that were previously disabled.

    Traffic management to the server will be done by enabling and disabling the referenced BIG-IP pool member inside the BIG-IP loadbalancing pool.

    Setting up a loadbalancing configuration

    In order to setup XL Deploy to use your BIG-IP loadbalancing device, you will need to take the following steps.

    1. Create a BIG-IP LocalTrafficManager (big-ip.LocalTrafficManager) configuration item in the 'Infrastructure' tree under a host, and add it as a member to the udm.Environment. The host configuration item indicates how to connect to the BIG-IP device.
    2. Add all the containers that the BIG-IP device manages to the managedServers collection of the created BIG-IP LocalTrafficManager configuration item.
    3. Populate the BIG-IP connection properties 'address', 'username', 'password', 'partition' as seen from the host machine
    4. Update all managed containers with appropriate deployment group and BIG-IP member data and add them to the same udm.Environment as the BIG-IP LocalTrafficManager CI

    Loadbalancing a mixed Application Server and Web Server environment

    If you have an Apache httpd server which fronts a website backed by one or more application servers, it is possible to setup a more complex loadbalancing scenario, thus ensuring that the served website is not broken during the deployment. For this, the www.ApacheHttpdServer configuration item from the standard webserver-plugin is augmented with a property called applicationServers.

    Whenever a deployment is done to one or more of the containers mentioned in the applicationServers residing in the same Environment as the web server, the following happens in addition to the standard behavior:

    1. Just before the first application server will be deployed to, the webserver will be removed from the loadbalancing configuration
    2. After the last application server linked to the web server has been deployed to, the webserver is put back into the loadbalancing configuration

    Release notes

    BIG-IP plugin 4.5.0

    XL Deploy 4.5.0 compatibility.

    Improvements

    • [DEPL-5354] - Add support for F5 BIG-IP 11.x appliances

    BIG-IP plugin 4.0.0

    XL Deploy 4.0.0 compatibility.

    CI Reference

    Configuration Item Overview

    Containers

    CI Description
    big-ip.LocalTrafficManager An F5 BigIp LoadBalancer
    lb.LoadBalancer The Load Balancer super type

    Other Configuration Items

    CI Description
    big-ip.LocalTrafficManager An F5 BigIp LoadBalancer
    lb.LoadBalancer The Load Balancer super type

    Configuration Item Details

    big-ip.LocalTrafficManager

    Type Hierarchy lb.LoadBalancer >> udm.BaseContainer >> udm.BaseConfigurationItem
    Interfaces udm.Taggable, udm.ConfigurationItem, udm.Container, overthere.HostContainer

    An F5 BigIp LoadBalancer

    Parent
     
     
    host : CI<overthere.Host>
    The host that runs the PyControl 2 library that controls the BigIP load balancer
    Public Properties
     
     
    address : STRING
    The address of the BigIP load balancer
     
     
    partition : STRING
    The active partition on the BigIP load balancer
     
     
    password : STRING
    The password used to connect to the BigIP load balancer
     
     
    username : STRING
    The username used to connect to the BigIP load balancer
     
     
    bigIpAddress : STRING
    The address this server is registered under in the BigIP load balancer
     
     
    bigIpPool : STRING
    The BigIP load balancer pool this server is a member of
     
     
    bigIpPort : INTEGER
    The port of the service of this server that is load balanced by the BigIP load balancer
     
     
    disableInLoadBalancer : BOOLEAN  = true
    Whether this server should be disabled in the load balancer when it is being deployed to
     
     
    managedServers : SET_OF_CI<udm.Container>
    The servers managed by this load balancer
     
     
    tags : SET_OF_STRING
    If set, only deployables with the same tag will be automatically mapped to this container.
    Hidden Properties
     
     
    addToPoolOrder : INTEGER  = 94
    Add To Pool Order
     
     
    addToPoolScript : STRING  = big-ip/enable-pool-member.py.ftl
    Add To Pool Script
     
     
    removeFromPoolOrder : INTEGER  = 8
    Remove From Pool Order
     
     
    removeFromPoolScript : STRING  = big-ip/disable-pool-member.py.ftl
    Remove From Pool Script

    lb.LoadBalancer

    Virtual Type
    Type Hierarchy udm.BaseContainer >> udm.BaseConfigurationItem
    Interfaces udm.Taggable, udm.ConfigurationItem, udm.Container, overthere.HostContainer

    The Load Balancer super type.

    Public Properties
     
     
    bigIpAddress : STRING
    The address this server is registered under in the BigIP load balancer
     
     
    bigIpPool : STRING
    The BigIP load balancer pool this server is a member of
     
     
    bigIpPort : INTEGER
    The port of the service of this server that is load balanced by the BigIP load balancer
     
     
    disableInLoadBalancer : BOOLEAN  = true
    Whether this server should be disabled in the load balancer when it is being deployed to
     
     
    managedServers : SET_OF_CI<udm.Container>
    The servers managed by this load balancer
     
     
    tags : SET_OF_STRING
    If set, only deployables with the same tag will be automatically mapped to this container.