Microsoft just announced that from the 30th of September 2025, Azure Basic Load Balancer will be retired. It means that from this date, you will not be able to deploy a new basic LB:
https://learn.microsoft.com/en-us/azure/virtual-network/ip-services/public-ip-basic-upgrade-guidance
Pricing regarding Standard LB can be found here: Pricing—Load Balancer | Microsoft Azure
And the difference between a Standard and a Basic: Upgrading from basic Load Balancer – Guidance | Microsoft Learn
For example, in Standard, you have an SLA of 99.99%, which you don’t have with Basic, so it is time to migrate 😊 and we will see in this article how to do this.
Before starting, you need to know that you will have downtime by migrating from Basic to Standard. In this example, we will do the migration for a public LB, for an internal one, please follow this guide: https://learn.microsoft.com/en-us/azure/load-balancer/upgrade-basicinternal-standard
On my side, I have a Basic LB, to expose a web page:
To help in this migration, Microsoft provides a script, that helps in this migration. The full documentation is available here: Upgrade a basic to standard public load balancer – Azure Load Balancer | Microsoft Learn
To start, you need to install the script that will do the migration:
1 |
Install-Script -Name AzurePublicLBUpgrade |
After that, connect to your Azure subscription:
1 2 3 |
Connect-AzAccount Select-AzSubscription -SubscriptionId YouSubId |
Execute the following command to move from Basic to Standard.
1 |
AzurePublicLBUpgrade.ps1 -oldRgName Starwind-LB -oldLBName Starwind-Basic-LB -newLBName Starwind-Standard-LB |
Because my public IP is static, I need to migrate it first in Static:
I used the following script to do the trick:
1 2 3 4 5 |
$pubIP = Get-AzPublicIpAddress -Name newipstarwind -ResourceGroupName Starwind-LB $pubIP. PublicIpAllocationMethod = "Static" Set-AzPublicIpAddress -PublicIpAddress $pubIP |
We can restart the migration powershell script.
So to explain quickly what the script will do:
- It will create a new public ip and assign it to the basic LB
- Create a new LB in standard, and assign the previous public ip for this new standard load balancer
- Recreate every settings, like backend pools, load balancing rules, etc.
- Create a new outbound rule for the outgoing traffic of all Virtual Machine that are in the backend pool
Depending of the number of rules in your LB, it can take some times to create it. In my case, with an easy setup, it took less than 5 minutes.
If like me, it doesn’t work directly, it is because by default, you must configure a NSG (everything is blocked by default) to allow the traffic that you want. If you don’t have this NSG on the subnet or network interfaces of the VM, you will not be able to access the webpage from the new Standard LB.
So just create a new NSG, and apply it to the subnet or NIC of VMs, with a rule to allow the incoming HTTP request:
And I can browse again my website:
As you can see, it is very easy now to migrate from Basic to Standard, you just need to schedule downtime.