Get started creating an Internet facing load balancer (classic) in PowerShell
An Azure load balancer is a Layer-4 (TCP, UDP) load balancer. The load balancer provides high availability by distributing incoming traffic among healthy service instances in cloud services or virtual machines in a load balancer set. Azure Load Balancer can also present those services on multiple ports, multiple IP addresses, or both.
You can configure a load balancer to:
- Load balance incoming Internet traffic to virtual machines (VMs). We refer to a load balancer in this scenario as an Internet-facing load balancer.
- Load balance traffic between VMs in a virtual network (VNet), between VMs in cloud services, or between on-premises computers and VMs in a cross-premises virtual network. We refer to a load balancer in this scenario as an internal load balancer (ILB).
- Forward external traffic to a specific VM instance.
Before you work with Azure resources, it's important to understand that Azure currently has two deployment models: Azure Resource Manager and classic. Make sure you understand deployment models and tools before you work with any Azure resource. You can view the documentation for different tools by clicking the tabs at the top of this article. This article covers the classic deployment model. You can also Learn how to create an Internet facing load balancer using Azure Resource Manager.
The following tasks will be done in this scenario:
- Create a load balancer that receives network traffic on port 80 and send load-balanced traffic to virtual machines "web1" and "web2"
- Create NAT rules for remote desktop access/SSH for virtual machines behind the load balancer
- Create health probes
Set up load balancer using PowerShell
To set up a load balancer using powershell, complete following steps:
- If you have never used Azure PowerShell, see How to Install and Configure Azure PowerShell and follow the instructions all the way to the end to sign into Azure and select your subscription.
- After creating a virtual machine, you can use PowerShell cmdlets to add a load balancer to a virtual machine within the same cloud service.
In the following example, you add a load balancer set called "webfarm" to cloud service "mytestcloud" (or myctestcloud.cloudapp.net), adding the endpoints for the load balancer to virtual machines named "web1" and "web2." The load balancer receives network traffic on port 80 and load balances between the virtual machines defined by the local endpoint (in this case port 80) using TCP.
Create a load balanced endpoint for the first VM "web1"
Get-AzureVM -ServiceName "mytestcloud" -Name "web1" | Add-AzureEndpoint -Name "HttpIn" -Protocol "tcp" -PublicPort 80 -LocalPort 80 -LBSetName "WebFarm" -ProbePort 80 -ProbeProtocol "http" -ProbePath '/' | Update-AzureVM
Create another endpoint for the second VM "web2" using the same load balancer set name
Get-AzureVM -ServiceName "mytestcloud" -Name "web2" | Add-AzureEndpoint -Name "HttpIn" -Protocol "tcp" -PublicPort 80 -LocalPort 80 -LBSetName "WebFarm" -ProbePort 80 -ProbeProtocol "http" -ProbePath '/' | Update-AzureVM
Remove a virtual machine from a load balancer
You can use Remove-AzureEndpoint to remove a virtual machine endpoint from the load balancer
Get-azureVM -ServiceName mytestcloud -Name web1 |Remove-AzureEndpoint -Name httpin | Update-AzureVM
If your application needs to keep connections alive for servers behind a load balancer, you can understand more about idle TCP timeout settings for a load balancer. It helps to learn about idle connection behavior when you are using Azure Load Balancer.