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.
- A disable server step, this will stop the traffic to the servers that are managed by the loadbalancer.
- 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.
- Create a BIG-IP LocalTrafficManager (
big-ip.LocalTrafficManager) configuration item in the 'Infrastructure' tree under a host, and add it as amemberto theudm.Environment. The host configuration item indicates how to connect to the BIG-IP device. - Add all the containers that the BIG-IP device manages to the
managedServerscollection of the created BIG-IP LocalTrafficManager configuration item. - Populate the BIG-IP connection properties 'address', 'username', 'password', 'partition' as seen from the host machine
- Update all managed containers with appropriate deployment group and BIG-IP member data and add them to the same
udm.Environmentas 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:
- Just before the first application server will be deployed to, the webserver will be removed from the loadbalancing configuration
- 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.
|
