Getting Started with Azure Resource Manager for load balancers in Python

This sample shows how to manage a load balancer using the Azure Resource Manager APIs for Python.

You can use a load balancer to provide high availability for your workloads in Azure. An Azure load balancer is a Layer-4 (TCP, UDP) type load balancer that distributes incoming traffic among healthy service instances in cloud services or virtual machines defined in a load balancer set.

For a detailed overview of Azure load balancers, see Azure Load Balancer overview.

alt tag

This sample deploys an internet-facing load balancer. It then creates and deploys two Azure virtual machines behind the load balancer. For a detailed overview of internet-facing load balancers, see Internet-facing load balancer overview.

To deploy an internet-facing load balancer, you'll need to create and configure the following objects.

  • Front end IP configuration - contains public IP addresses for incoming network traffic.
  • Back end address pool - contains network interfaces (NICs) for the virtual machines to receive network traffic from the load balancer.
  • Load balancing rules - contains rules mapping a public port on the load balancer to port in the back end address pool.
  • Inbound NAT rules - contains rules mapping a public port on the load balancer to a port for a specific virtual machine in the back end address pool.
  • Probes - contains health probes used to check availability of virtual machines instances in the back end address pool.

You can get more information about load balancer components with Azure resource manager at Azure Resource Manager support for Load Balancer.

Tasks performed in this sample

The sample performs the following tasks to create the load balancer and the load-balanced virtual machines:

  1. Create a resource group
  2. Create a public IP
  3. Build the load balancer payload
  4. Build a front-end IP pool
  5. Build a back-end address pool
  6. Build a health probe
  7. Build a load balancer rule
  8. Build inbound NAT rule 1
  9. Build inbound NAT rule 2
  10. Create the load balancer with the above payload
  11. Create a virtual network (vnet)
  12. Create a subnet
  13. Create NIC 1
  14. Create NIC 2
  15. Find an Ubutnu VM image
  16. Create an availability set
  17. Create the first VM: Web1
  18. Create the second VM: Web2
  19. Delete the resource group and the resources created in the previous steps

Run this sample

  1. If you don't already have a Microsoft Azure subscription, you can register for a free trial account.

  2. Install Python if you haven't already.

  3. We recommend using a virtual environment to run this example, but it's not mandatory. You can initialize a virtual environment this way:

     pip install virtualenv
     virtualenv mytestenv
     cd mytestenv
     source bin/activate
  4. Clone the sample repository.

     git clone    
  5. Install the dependencies using pip.

     cd network-python-manage-loadbalancer
     pip install -r requirements.txt    
  6. Create an Azure service principal, using Azure CLI, PowerShell or Azure Portal.

  7. Export these environment variables into your current shell.

     export AZURE_TENANT_ID={your tenant ID}
     export AZURE_CLIENT_ID={your client ID}
     export AZURE_CLIENT_SECRET={your client secret}
     export AZURE_SUBSCRIPTION_ID={your subscription ID}
  8. Run the sample.


More information