Configuring A10 Networks load balancers

The following sections provide information about Pod and Container Management (PCM) changes and requirements to manage the A10 Networks load balancers by using TrueSight Network Automation as part of a BMC Cloud Lifecycle Management implementation:

A10 Networks provides intelligent and automated cyber security solutions. The new solutions expand support for A10 Application Delivery Controllers (ADCs). The vThunder solution or Thunder Bare Metal solution supports multiple Application Delivery Partitions (ADPs) for unprecedented multi-tenancy. vThunder version 4.1.1 supports 32 ADPs.

In BMC Cloud Lifecycle Management, you must create a dedicated partition for each virtual load balancer (VLB) in a container.

Creating the pod blueprint and the pod

  1. In the pod blueprint, define an address pool blueprint for the Management network and optionally, define address range blueprints for the Customer network, Outside network, and so on.
  2. (Optional) Define VLAN pool blueprints for the Customer network and VLAN blueprint for the Management VLAN depending upon your requirement.
  3. Define one Integer pool blueprint for creating partition systems.

    Note

    The value of this pool must be between 1 and maximum number of ADPs supported by a vThunder version. For example, for vThunder version 4.1.1, this value must be between 1 and 32. This integer value is used for the partition ID. In the sample blueprint below, default minimum value is 1 and default maximum value is 32.

     The following code block shows a snippet of the <integerPoolBlueprints> tag:

    <integerPoolBlueprints>

            <integerPoolBlueprint>

                <defaultEndNum>32</defaultEndNum>

                <name>A10 Partition Pool</name>

                <defaultStartNum>1</defaultStartNum>

            </integerPoolBlueprint>

        </integerPoolBlueprints>

  4. In the node blueprints, define a node for the A10 Networks load balancer host device.

     The following code block shows a snippet of the <nodeBlueprint> tag:

    <nodeBlueprint xsi:type="podLoadBalancerHostBlueprint" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

                <balancedParamBlueprints></balancedParamBlueprints>

                <category>7</category>

                <defaultAllowDeviceInUseByOtherPod>true</defaultAllowDeviceInUseByOtherPod>

                <name>ActiveLoadBalancer</name>

                <role>ActiveLoadBalancer</role>

            </nodeBlueprint>

Creating the container blueprint and container

  1. In the container blueprint, define an address pool blueprint for the Customer networks.
    The address pool blueprint can get the pool value from the pod range or address space blueprint.
  2. In the node blueprints, define a node for the load balancer host device, as follows:
    1. Define the configureActionInfoBlueprint and unconfigureActionInfoBlueprint actions in this node to create and destroy the virtual system.
    2. Define virtualGuestBlueprint under containerLoadBalancerHostBlueprint to encapsulate the VLB. 
    3. Set the <useHostAddressForGuest> tag to true.

      Note

      guestDeviceName should not exceed 14 characters. As guestDeviceName is defined as ${container.name}-VLB, container name should not exceed 10 characters.

    4. Specify the guest device name, ${container.name}-VLB.
      The value of partitionId must be an integer between 1 and 128. In vThunder version 4.1.1, allowed partitionId are between 1 and 32.

       Click here to view the sample node blueprint for the A10 Loadbalancer host.

      <nodeBlueprint xsi:type="containerLoadBalancerHostBlueprint" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

                  <addressBlueprints/>

                  <category>7</category>

                <dummyHostFlag>false</dummyHostFlag>

                  <name>A10 Load Balancer - Standalone</name>

                  <numVrfs>0</numVrfs>

                  <role>ActiveLoadBalancer</role>

                 

                  <virtualGuestBlueprint xsi:type="containerVlbBlueprint">

                      <configureActionInfoBlueprints>

                      <configureActionInfoBlueprint xsi:type="customActionInfoBlueprint">

                          <name>Create Partition</name>

                          <guid>5A52453D-F481-484F-90FD-AC5B80644B50</guid>

                          <runtimeProps>

                              <item>

                                  <key>partitionName</key>

                                  <value>${container.node.guestDevice.name}</value>

                              </item>

                              <item>

                                  <key>partitionId</key>

                                  <value>${container.integers[PartitionId]}</value>

                              </item>

                          </runtimeProps>

                      </configureActionInfoBlueprint>

                  </configureActionInfoBlueprints>

                      <useHostAddressForGuest>true</useHostAddressForGuest>

                      <guestDeviceName>${container.name}-VLB</guestDeviceName>

                      <useExistingGuestDeviceFlag>false</useExistingGuestDeviceFlag>

                      <guestNodeName>VLB</guestNodeName>

                      <sharesVirtualDevice>false</sharesVirtualDevice>

                      <unconfigureActionInfoBlueprints>

                      <unconfigureActionInfoBlueprint xsi:type="customActionInfoBlueprint">

                          <name>Create Partition</name>

                          <guid>59DB17E7-7DD7-4A3F-B182-A2AA48F12746</guid>

                          <runtimeProps>

                              <item>

                                  <key>partitionName</key>

                                  <value>${container.node.guestDevice.name}</value>

                              </item>

                              <item>

                                  <key>partitionId</key>

                                  <value>${container.integers[PartitionId]}</value>

                              </item>

                          </runtimeProps>

                      </unconfigureActionInfoBlueprint>

                  </unconfigureActionInfoBlueprints>

                      <addEntryGuid>75BABC33-3574-44DD-9426-2AB40744B53B</addEntryGuid>

                      <addPoolGuid>78B5336D-E153-48C4-B639-66E1A20CAB3A</addPoolGuid>

                      <defaultEnabledFlag>true</defaultEnabledFlag>

                      <disableEntryGuid>14E30858-2FCE-4319-8DF3-BEAE9971B059</disableEntryGuid>

                      <enableEntryGuid>F7CEFDAB-0B4A-493B-B4CF-05386C27F6D2</enableEntryGuid>

                      <lockedFlag>false</lockedFlag>

                      <poolTypeBlueprints>

                          <poolTypeBlueprint>

                              <name>Customer Network 1</name>

                              <serverVlanName>C_VLAN1</serverVlanName>

                              <servicedNicSegmentNames>

                                  <servicedNicSegmentName>Customer Network 1</servicedNicSegmentName>

                              </servicedNicSegmentNames>

                              <snatBlockSize>2</snatBlockSize>

                              <snatPoolName>C_VLAN1</snatPoolName>

                              <vipSegmentName>VIPS Customer Network 1</vipSegmentName>

                          </poolTypeBlueprint>

                      </poolTypeBlueprints>

                      <removeEntryGuid>3C9AB2B6-0F2E-4C09-BB1E-2FC44FD9E0AC</removeEntryGuid>

                      <removePoolGuid>329A51DA-684D-439E-BDF5-DCE42302BC29</removePoolGuid>

                  </virtualGuestBlueprint>

              </nodeBlueprint>

Custom actions

The load balancer pool in A10 Networks is called Service Group. The TrueSight Network Automation Create Pool custom action adds a Service Group by using a virtual IP (VIP) address and a default load balancing method.

To create a partition

To create a partition, configure the following runtime parameters.

ParameterDescription
partitionId

Partition Id

For vThunder version 4.1.1, range is 1-32.

partitionName

Virtual load balancer name

For vThunder version 4.1.1, you can enter upto 14 characters.

The following block contains the custom action to create a partition.

partition %runtime.partitionName% id %runtime.partitionId%

To delete a partition

Deleting a partition means to delete virtual load balancer from the container and device. To delete a partition, configure the following runtime parameters.

ParameterDescription
partitionId

Partition id

For vThunder version 4.1.1, range is 1-32.

partitionName

Virtual load balancer name

For vThunder version 4.1.1, you can enter upto 14 characters.

The following block contains the custom action to delete a partition.

no partition %runtime.partitionName% id %runtime.partitionId%
delete partition %runtime.partitionName% id %runtime.partitionId%

To add load balancer pool

To add a load balancer pool, configure the following runtime parameters.

ParameterDescription
loadBalancerMonitor

Name of the configured health monitor

poolName

Name of the pool

protocol

Transport protocol number. Valid value is:

  • For TCP: 6
  • For UDP: 17
protocolName

Base protocol that you can use from different applications to block or permit traffic on an A10 Networks load balancer.

Valid values are TCP and UDP.

serverPort

Port number ranging from 1 to 65535

snatPoolEndAddressEnd address for the pool
snatPoolId

Pool Id
If you do not want to provide this parameter, then set the source-nat to auto.

snatPoolNetMaskNetwork mask for the pool
snatPoolStartAddressStart address for the pool

The following block contains the custom action to add a pool.

slb service-group %runtime.poolName% %cmd.protocolName%
method round-robin
ip nat pool %runtime.poolName%%runtime.snatPoolId% %runtime.snatPoolStartAddress% %runtime.snatPoolEndAddress% netmask %runtime.snatPoolNetMask%
slb virtual-server %runtime.poolName%-VIP %runtime.virtualIPaddress%
source-nat pool %runtime.poolName%%runtime.snatPoolId%
service-group %runtime.poolName%
if loadbalancermonitor argument mentioned –
health-check %runtime.loadBalancerMonitor%

To add a server to a pool

Adding a server to a pool means adding server to a Service Group. To add a server to a pool, configure the following runtime parameters.

ParameterDescription
enableEntry

Status of server in pool (Default: enable)

firstPoolName

Pool name to which you want to add the server

firstServerPort

Server port number

Valid range is 1-65535.

serverAddressServer IP address

The following block contains the custom action to add a pool. 

show slb service-group %runtime.firstPoolName% config
slb server server-%runtime.serverAddress% %runtime.serverAddress%
enable (depends on enableEntry value)
port %runtime.firstServerPort% %cmd.protocolName%
slb service-group %runtime.firstPoolName% %cmd.protocolName%
member server-%runtime.serverAddress% %runtime.firstServerPort%

Sample pod and container blueprints

You can find sample pod and container blueprints and related templates in the BCAN_HOME\public\bmc\bca-networks\csm\samples\sampleWithA10 directory on the TrueSight Network Automation application server. For additional information about the sample pod and container blueprints for use with a A10 vThunder load balancer, see Pod model and Container model.

Was this page helpful? Yes No Submitting... Thank you

Comments